2010-12-15 12:58:05 -08:00
|
|
|
let testURL_01 = chromeRoot + "browser_blank_01.html";
|
|
|
|
|
|
|
|
let newTabs = [];
|
|
|
|
let gCurrentTest = null;
|
|
|
|
let gTests = [];
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
// Iterating tests by shifting test out one by one as runNextTest is called.
|
|
|
|
function runNextTest() {
|
|
|
|
// Run the next test until all tests completed
|
|
|
|
if (gTests.length > 0) {
|
|
|
|
gCurrentTest = gTests.shift();
|
|
|
|
info(gCurrentTest.desc);
|
|
|
|
gCurrentTest.run();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
// Close the awesome panel just in case
|
2011-09-01 10:04:29 -07:00
|
|
|
AwesomeScreen.activePanel = null;
|
2011-04-11 14:21:17 -07:00
|
|
|
|
|
|
|
for (let iTab=0; iTab<newTabs.length; iTab++)
|
|
|
|
Browser.closeTab(newTabs[iTab], { forceClose: true });
|
|
|
|
|
2010-12-15 12:58:05 -08:00
|
|
|
finish();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-01-27 12:33:43 -08:00
|
|
|
function waitForNavigationPanel(aCallback, aWaitForHide) {
|
|
|
|
let evt = aWaitForHide ? "NavigationPanelHidden" : "NavigationPanelShown";
|
|
|
|
info("waitFor " + evt + "(" + Components.stack.caller + ")");
|
|
|
|
window.addEventListener(evt, function(aEvent) {
|
|
|
|
info("receive " + evt);
|
|
|
|
window.removeEventListener(aEvent.type, arguments.callee, false);
|
|
|
|
Util.executeSoon(aCallback);
|
|
|
|
}, false);
|
|
|
|
}
|
2010-12-15 12:58:05 -08:00
|
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
// Entry point (must be named "test")
|
|
|
|
function test() {
|
|
|
|
// This test is async
|
|
|
|
waitForExplicitFinish();
|
|
|
|
|
|
|
|
//Add new tab
|
|
|
|
newTabs.push(Browser.addTab(testURL_01, true));
|
|
|
|
let tabs = document.getElementById("tabs");
|
|
|
|
ok(tabs._columnsCount == 1, "Tabs layout should be on one column");
|
|
|
|
|
|
|
|
runNextTest();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function checkSidebars(aLeftVisible, aRightVisible) {
|
|
|
|
let [leftVisibility, rightVisibility, leftWidth, rightWidth] = Browser.computeSidebarVisibility();
|
2011-01-27 12:33:43 -08:00
|
|
|
let left = Math.abs(leftVisibility - aLeftVisible),
|
|
|
|
right = Math.abs(rightVisibility - aRightVisible);
|
|
|
|
ok(left < 0.2, (leftWidth * aLeftVisible) + "px of the left sidebar should be visible (got " + left + ")");
|
|
|
|
ok(right < 0.2, (rightWidth * aRightVisible) + "px of the right sidebar should be visible (got " + right + ")");
|
2010-12-15 12:58:05 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
function checkOnResize(aCallback) {
|
|
|
|
let [leftVisibility, rightVisibility, leftWidth, rightWidth] = Browser.computeSidebarVisibility();
|
2011-01-27 12:33:43 -08:00
|
|
|
let oldLeftWidth = leftWidth;
|
2010-12-15 12:58:05 -08:00
|
|
|
|
2011-01-27 12:33:43 -08:00
|
|
|
Elements.browsers.addEventListener("SizeChanged", function() {
|
|
|
|
Elements.browsers.removeEventListener("SizeChanged", arguments.callee, false);
|
|
|
|
setTimeout(function() { Util.executeSoon(function() {
|
2010-12-15 12:58:05 -08:00
|
|
|
checkSidebars(leftVisibility, rightVisibility);
|
2011-01-27 12:33:43 -08:00
|
|
|
|
|
|
|
Elements.browsers.addEventListener("SizeChanged", function() {
|
|
|
|
Elements.browsers.removeEventListener("SizeChanged", arguments.callee, false);
|
|
|
|
|
2010-12-15 12:58:05 -08:00
|
|
|
setTimeout(function() {
|
|
|
|
checkSidebars(leftVisibility, rightVisibility);
|
2011-01-27 12:33:43 -08:00
|
|
|
let [, , newLeftWidth, newRightWidth] = Browser.computeSidebarVisibility();
|
|
|
|
is(oldLeftWidth, newLeftWidth, "Size should be the same than the size before resizing");
|
2010-12-15 12:58:05 -08:00
|
|
|
aCallback();
|
|
|
|
}, 0);
|
|
|
|
}, false);
|
2011-03-15 07:30:56 -07:00
|
|
|
window.resizeTo(480, 800);
|
2011-01-27 12:33:43 -08:00
|
|
|
}); }, 0)}
|
|
|
|
, false);
|
|
|
|
|
2011-03-15 07:30:56 -07:00
|
|
|
window.resizeTo(800, 480);
|
2010-12-15 12:58:05 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
gTests.push({
|
|
|
|
desc: "Testing horizontal positionning of the sidebars for one column",
|
|
|
|
|
|
|
|
run: function() {
|
|
|
|
checkSidebars(0, 0);
|
|
|
|
checkOnResize(gCurrentTest.checkLeftVisible);
|
|
|
|
},
|
|
|
|
|
|
|
|
checkLeftVisible: function() {
|
|
|
|
Browser.controlsScrollboxScroller.scrollTo(0, 0);
|
|
|
|
checkSidebars(1, 0);
|
|
|
|
checkOnResize(gCurrentTest.checkRightVisible);
|
|
|
|
},
|
|
|
|
|
|
|
|
checkRightVisible: function() {
|
|
|
|
let [,, leftWidth, rightWidth] = Browser.computeSidebarVisibility();
|
|
|
|
Browser.controlsScrollboxScroller.scrollTo(leftWidth + rightWidth, 0);
|
|
|
|
checkSidebars(0, 1);
|
|
|
|
checkOnResize(runNextTest);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
gTests.push({
|
|
|
|
desc: "Testing horizontal positionning of the sidebars for multiple columns",
|
|
|
|
|
|
|
|
run: function() {
|
|
|
|
newTabs.push(Browser.addTab(testURL_01, true));
|
|
|
|
newTabs.push(Browser.addTab(testURL_01, true));
|
|
|
|
newTabs.push(Browser.addTab(testURL_01, true));
|
|
|
|
newTabs.push(Browser.addTab(testURL_01, true));
|
|
|
|
newTabs.push(Browser.addTab(testURL_01, true));
|
|
|
|
newTabs.push(Browser.addTab(testURL_01, true));
|
|
|
|
newTabs.push(Browser.addTab(testURL_01, true));
|
2011-01-27 12:33:43 -08:00
|
|
|
newTabs.push(Browser.addTab(testURL_01, true));
|
2010-12-15 12:58:05 -08:00
|
|
|
let tabs = document.getElementById("tabs");
|
|
|
|
ok(tabs._columnsCount > 1, "Tabs layout should be on multiple columns");
|
|
|
|
|
|
|
|
checkSidebars(0, 0);
|
|
|
|
checkOnResize(gCurrentTest.checkLeftVisible);
|
|
|
|
},
|
|
|
|
|
|
|
|
checkLeftVisible: function() {
|
|
|
|
Browser.controlsScrollboxScroller.scrollTo(0, 0);
|
|
|
|
checkSidebars(1, 0);
|
|
|
|
checkOnResize(gCurrentTest.checkRightVisible);
|
|
|
|
},
|
|
|
|
|
|
|
|
checkRightVisible: function() {
|
|
|
|
let [,, leftWidth, rightWidth] = Browser.computeSidebarVisibility();
|
|
|
|
Browser.controlsScrollboxScroller.scrollTo(leftWidth + rightWidth, 0);
|
|
|
|
checkSidebars(0, 1);
|
2011-01-27 12:33:43 -08:00
|
|
|
checkOnResize(gCurrentTest.onFinish);
|
|
|
|
},
|
|
|
|
|
|
|
|
onFinish: function() {
|
|
|
|
Browser.hideSidebars();
|
|
|
|
runNextTest();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
gTests.push({
|
|
|
|
desc: "Testing horizontal positionning of the sidebars for multiple columns with awesome screen open",
|
|
|
|
|
|
|
|
run: function() {
|
|
|
|
let tabs = document.getElementById("tabs");
|
|
|
|
ok(tabs._columnsCount > 1, "Tabs layout should be on multiple columns");
|
|
|
|
|
|
|
|
checkSidebars(0, 0);
|
|
|
|
waitForNavigationPanel(function() {
|
|
|
|
checkOnResize(gCurrentTest.checkLeftVisible);
|
2010-12-15 12:58:05 -08:00
|
|
|
});
|
2011-01-27 12:33:43 -08:00
|
|
|
AllPagesList.doCommand();
|
|
|
|
},
|
|
|
|
|
|
|
|
|
2011-02-07 04:56:11 -08:00
|
|
|
checkLeftVisible: function() {
|
|
|
|
Browser.controlsScrollboxScroller.scrollTo(0, 0);
|
|
|
|
checkSidebars(1, 0);
|
|
|
|
checkOnResize(gCurrentTest.checkRightVisible);
|
|
|
|
},
|
|
|
|
|
|
|
|
checkRightVisible: function() {
|
|
|
|
let [,, leftWidth, rightWidth] = Browser.computeSidebarVisibility();
|
|
|
|
Browser.controlsScrollboxScroller.scrollTo(leftWidth + rightWidth, 0);
|
|
|
|
checkSidebars(0, 1);
|
|
|
|
checkOnResize(gCurrentTest.onFinish);
|
|
|
|
},
|
|
|
|
|
|
|
|
onFinish: function() {
|
|
|
|
Browser.hideSidebars();
|
2011-09-01 10:04:29 -07:00
|
|
|
AwesomeScreen.activePanel = null;
|
2011-02-07 04:56:11 -08:00
|
|
|
runNextTest();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
gTests.push({
|
|
|
|
desc: "Testing horizontal positionning of the sidebars for multiple columns with an undo tab",
|
|
|
|
|
|
|
|
run: function() {
|
|
|
|
let tabs = document.getElementById("tabs");
|
|
|
|
ok(tabs._columnsCount > 1, "Tabs layout should be on multiple columns");
|
|
|
|
|
|
|
|
Elements.tabs.addEventListener("TabRemove", function() {
|
|
|
|
Elements.tabs.removeEventListener("TabRemove", arguments.callee, false);
|
|
|
|
setTimeout(gCurrentTest.onTabClose, 0);
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
let lastTab = newTabs.pop().chromeTab;
|
|
|
|
lastTab._onClose();
|
|
|
|
},
|
|
|
|
|
|
|
|
onTabClose: function() {
|
|
|
|
checkSidebars(0, 0);
|
|
|
|
checkOnResize(gCurrentTest.checkLeftVisible);
|
|
|
|
},
|
|
|
|
|
2011-01-27 12:33:43 -08:00
|
|
|
checkLeftVisible: function() {
|
|
|
|
Browser.controlsScrollboxScroller.scrollTo(0, 0);
|
|
|
|
checkSidebars(1, 0);
|
|
|
|
checkOnResize(gCurrentTest.checkRightVisible);
|
|
|
|
},
|
|
|
|
|
|
|
|
checkRightVisible: function() {
|
|
|
|
let [,, leftWidth, rightWidth] = Browser.computeSidebarVisibility();
|
|
|
|
Browser.controlsScrollboxScroller.scrollTo(leftWidth + rightWidth, 0);
|
|
|
|
checkSidebars(0, 1);
|
|
|
|
checkOnResize(gCurrentTest.onFinish);
|
|
|
|
},
|
|
|
|
|
|
|
|
onFinish: function() {
|
|
|
|
Browser.hideSidebars();
|
|
|
|
runNextTest();
|
2010-12-15 12:58:05 -08:00
|
|
|
}
|
|
|
|
});
|