treestyletab/tests/unit/treestyletab_linkUtils.test.js

203 lines
4.9 KiB
JavaScript
Raw Normal View History

var win;
var sv;
function setUp()
{
utils.setPref('browser.tabs.warnOnClose', false);
yield utils.setUpTestWindow();
win = utils.getTestWindow();
sv = win.TreeStyleTabService;
yield Do(utils.addTab('../fixtures/links.html'));
var tabs = gBrowser.mTabs;
gBrowser.removeAllTabsBut(tabs[tabs.length-1]);
assert.equals(1, tabs.length);
}
function tearDown()
{
win = null;
utils.tearDownTestWindow();
}
function $(aId)
{
return content.document.getElementById(aId);
}
function test_getCurrentFrame()
{
yield Do(utils.addTab('../fixtures/frameTest.html'));
yield Do(utils.addTab('../fixtures/frameTestInline.html'));
var tabs = gBrowser.mTabs;
assert.equals(3, tabs.length);
var frame;
frame = gBrowser.contentWindow;
assert.equals(frame, sv.getCurrentFrame());
assert.equals(frame, sv.getCurrentFrame(frame));
frame = tabs[1].linkedBrowser.contentWindow.frames[1];
assert.equals(frame, sv.getCurrentFrame(frame));
frame = tabs[2].linkedBrowser.contentWindow.frames[0];
assert.equals(frame, sv.getCurrentFrame(frame));
}
function test_getLinksInRange()
{
var range = content.document.createRange();
range.setStartBefore($('item2'));
range.setEndAfter($('item4'));
assert.equals(
[$('link2'), $('link3'), $('link4')],
sv.getLinksInRange(range)
);
range.setStartBefore($('link2'));
range.setEndAfter($('link4'));
assert.equals(
[$('link2'), $('link3'), $('link4')],
sv.getLinksInRange(range)
);
range.setStartBefore($('em2'));
range.setEndAfter($('em4'));
assert.equals(
[$('link2'), $('link3'), $('link4')],
sv.getLinksInRange(range)
);
range.setStart($('em2').firstChild, 2);
range.setEnd($('em4').firstChild, 2);
assert.equals(
[$('link2'), $('link3'), $('link4')],
sv.getLinksInRange(range)
);
range.setStartAfter($('em1'));
range.setEndBefore($('em5'));
assert.equals(
[$('link2'), $('link3'), $('link4')],
sv.getLinksInRange(range)
);
range.setStartAfter($('em1').firstChild);
range.setEndBefore($('em5').firstChild);
assert.equals(
[$('link2'), $('link3'), $('link4')],
sv.getLinksInRange(range)
);
}
function test_getSelectionLinks()
{
var selection = content.getSelection();
assert.equals(0, selection.rangeCount);
var range1 = content.document.createRange();
range1.setStartBefore($('link2'));
range1.setEndAfter($('link4'));
selection.addRange(range1);
assert.equals(1, selection.rangeCount);
assert.equals(
[$('link2'), $('link3'), $('link4')],
sv.getSelectionLinks(content)
);
var range2 = content.document.createRange();
range2.setStartBefore($('link6'));
range2.setEndAfter($('link8'));
selection.addRange(range2);
var range3 = content.document.createRange();
range3.setStartBefore($('link12'));
range3.setEndAfter($('link14'));
selection.addRange(range3);
assert.equals(3, selection.rangeCount);
assert.equals(
[$('link2'), $('link3'), $('link4'),
$('link6'), $('link7'), $('link8'),
$('link12'), $('link13'), $('link14')],
sv.getSelectionLinks(content)
);
selection.removeAllRanges();
range1.detach();
range2.detach();
range3.detach();
}
function test_openSelectionLinks()
{
function assert_openSelectionLinksInFrame(aFrame)
{
function $(aId)
{
return aFrame.document.getElementById(aId);
}
gBrowser.removeAllTabsBut(gBrowser.selectedTab);
assert.equals(1, gBrowser.mTabs.length);
var selection = aFrame.getSelection();
assert.equals(0, selection.rangeCount);
var range1 = aFrame.document.createRange();
range1.setStartBefore($('link2'));
range1.setEndAfter($('link4'));
selection.addRange(range1);
assert.equals(1, selection.rangeCount);
var tabs = gBrowser.mTabs;
assert.equals(1, tabs.length);
sv.openSelectionLinks(aFrame);
assert.equals(4, tabs.length);
assert.equals(
[tabs[1], tabs[2], tabs[3]],
sv.getChildTabs(tabs[0])
);
gBrowser.removeAllTabsBut(tabs[0]);
assert.equals(1, tabs.length);
var range2 = aFrame.document.createRange();
range2.setStartBefore($('link6'));
range2.setEndAfter($('link8'));
selection.addRange(range2);
var range3 = aFrame.document.createRange();
range3.setStartBefore($('link12'));
range3.setEndAfter($('link14'));
selection.addRange(range3);
sv.openSelectionLinks(aFrame);
assert.equals(10, tabs.length);
assert.equals(
[tabs[1], tabs[2], tabs[3],
tabs[4], tabs[5], tabs[6],
tabs[7], tabs[8], tabs[9]],
sv.getChildTabs(tabs[0])
);
selection.removeAllRanges();
range1.detach();
range2.detach();
range3.detach();
}
assert_openSelectionLinksInFrame(content);
yield Do(utils.addTab('../fixtures/frameTest.html', { selected : true }));
assert_openSelectionLinksInFrame(content.frames[2]);
yield Do(utils.addTab('../fixtures/frameTestInline.html', { selected : true }));
assert_openSelectionLinksInFrame(content.frames[1]);
}