mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-04 16:15:25 +00:00
216 lines
5.5 KiB
JavaScript
216 lines
5.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
// Tests that the disablechrome attribute gets propogated to the main UI
|
|
|
|
const HTTPSRC = "http://example.com/browser/browser/base/content/test/";
|
|
|
|
function is_element_hidden(aElement) {
|
|
var style = window.getComputedStyle(document.getElementById("nav-bar"), "");
|
|
if (style.visibility != "visible" || style.display == "none")
|
|
return true;
|
|
|
|
if (aElement.ownerDocument != aElement.parentNode)
|
|
return is_element_hidden(aElement.parentNode);
|
|
|
|
return false;
|
|
}
|
|
|
|
function is_chrome_hidden() {
|
|
is(document.documentElement.getAttribute("disablechrome"), "true", "Attribute should be set");
|
|
if (TabsOnTop.enabled)
|
|
ok(is_element_hidden(document.getElementById("nav-bar")), "Toolbar should be hidden");
|
|
else
|
|
ok(!is_element_hidden(document.getElementById("nav-bar")), "Toolbar should not be hidden");
|
|
}
|
|
|
|
function is_chrome_visible() {
|
|
isnot(document.getElementById("main-window").getAttribute("disablechrome"), "true", "Attribute should not be set");
|
|
ok(!is_element_hidden(document.getElementById("nav-bar")), "Toolbar should not be hidden");
|
|
}
|
|
|
|
function load_page(aURL, aCanHide, aCallback) {
|
|
gNewBrowser.addEventListener("pageshow", function() {
|
|
// Filter out about:blank loads
|
|
if (gNewBrowser.currentURI.spec != aURL)
|
|
return;
|
|
|
|
gNewBrowser.removeEventListener("pageshow", arguments.callee, false);
|
|
|
|
if (aCanHide)
|
|
is_chrome_hidden();
|
|
else
|
|
is_chrome_visible();
|
|
|
|
if (aURL == "about:addons") {
|
|
function check_after_init() {
|
|
if (aCanHide)
|
|
is_chrome_hidden();
|
|
else
|
|
is_chrome_visible();
|
|
|
|
aCallback();
|
|
}
|
|
|
|
if (gNewBrowser.contentWindow.gIsInitializing) {
|
|
gNewBrowser.contentDocument.addEventListener("Initialized", function() {
|
|
gNewBrowser.contentDocument.removeEventListener("Initialized", arguments.callee, false);
|
|
|
|
check_after_init();
|
|
}, false);
|
|
}
|
|
else {
|
|
check_after_init();
|
|
}
|
|
}
|
|
else {
|
|
executeSoon(aCallback);
|
|
}
|
|
}, false);
|
|
gNewBrowser.loadURI(aURL);
|
|
}
|
|
|
|
var gOldTab;
|
|
var gNewTab;
|
|
var gNewBrowser;
|
|
|
|
function test() {
|
|
// Opening the add-ons manager and waiting for it to load the discovery pane
|
|
// takes more time in windows debug builds
|
|
requestLongerTimeout(2);
|
|
|
|
var gOldTabsOnTop = TabsOnTop.enabled;
|
|
registerCleanupFunction(function() {
|
|
TabsOnTop.enabled = gOldTabsOnTop;
|
|
});
|
|
|
|
waitForExplicitFinish();
|
|
|
|
gOldTab = gBrowser.selectedTab;
|
|
gNewTab = gBrowser.selectedTab = gBrowser.addTab("about:blank");
|
|
gNewBrowser = gBrowser.selectedBrowser;
|
|
|
|
info("Tabs on top");
|
|
TabsOnTop.enabled = true;
|
|
|
|
run_http_test_1();
|
|
}
|
|
|
|
function end_test() {
|
|
gBrowser.removeTab(gNewTab);
|
|
finish();
|
|
}
|
|
|
|
function test_url(aURL, aCanHide, aNextTest) {
|
|
is_chrome_visible();
|
|
info("Page load");
|
|
load_page(aURL, aCanHide, function() {
|
|
info("Switch away");
|
|
gBrowser.selectedTab = gOldTab;
|
|
is_chrome_visible();
|
|
|
|
info("Switch back");
|
|
gBrowser.selectedTab = gNewTab;
|
|
if (aCanHide)
|
|
is_chrome_hidden();
|
|
else
|
|
is_chrome_visible();
|
|
|
|
gBrowser.removeTab(gNewTab);
|
|
gNewTab = gBrowser.selectedTab = gBrowser.addTab("about:blank");
|
|
gNewBrowser = gBrowser.selectedBrowser;
|
|
|
|
gBrowser.selectedTab = gOldTab;
|
|
|
|
info("Background load");
|
|
load_page(aURL, false, function() {
|
|
info("Switch back");
|
|
gBrowser.selectedTab = gNewTab;
|
|
if (aCanHide)
|
|
is_chrome_hidden();
|
|
else
|
|
is_chrome_visible();
|
|
|
|
load_page("about:blank", false, aNextTest);
|
|
});
|
|
});
|
|
}
|
|
|
|
// Should never hide the chrome
|
|
function run_http_test_1() {
|
|
info("HTTP tests");
|
|
test_url(HTTPSRC + "disablechrome.html", false, run_chrome_about_test);
|
|
}
|
|
|
|
// Should hide the chrome
|
|
function run_chrome_about_test() {
|
|
info("Chrome about: tests");
|
|
test_url("about:addons", true, function() {
|
|
info("Tabs on bottom");
|
|
TabsOnTop.enabled = false;
|
|
run_http_test_2();
|
|
});
|
|
}
|
|
|
|
// Should never hide the chrome
|
|
function run_http_test_2() {
|
|
info("HTTP tests");
|
|
test_url(HTTPSRC + "disablechrome.html", false, run_chrome_about_test_2);
|
|
}
|
|
|
|
// Should not hide the chrome
|
|
function run_chrome_about_test_2() {
|
|
info("Chrome about: tests");
|
|
test_url("about:addons", true, run_http_test3);
|
|
}
|
|
|
|
function run_http_test3() {
|
|
info("HTTP tests");
|
|
test_url(HTTPSRC + "disablechrome.html", false, run_chrome_about_test_3);
|
|
}
|
|
|
|
// Should not hide the chrome
|
|
function run_chrome_about_test_3() {
|
|
info("Chrome about: tests");
|
|
test_url("about:Addons", true, function(){
|
|
info("Tabs on top");
|
|
TabsOnTop.enabled = true;
|
|
run_http_test4();
|
|
});
|
|
}
|
|
|
|
function run_http_test4() {
|
|
info("HTTP tests");
|
|
test_url(HTTPSRC + "disablechrome.html", false, run_chrome_about_test_4);
|
|
}
|
|
|
|
function run_chrome_about_test_4() {
|
|
info("Chrome about: tests");
|
|
test_url("about:Addons", true, run_http_test5);
|
|
}
|
|
|
|
function run_http_test5() {
|
|
info("HTTP tests");
|
|
test_url(HTTPSRC + "disablechrome.html", false, run_chrome_about_test_5);
|
|
}
|
|
|
|
// Should hide the chrome
|
|
function run_chrome_about_test_5() {
|
|
info("Chrome about: tests");
|
|
test_url("about:preferences", true, function(){
|
|
info("Tabs on bottom");
|
|
TabsOnTop.enabled = false;
|
|
run_http_test6();
|
|
});
|
|
}
|
|
|
|
function run_http_test6() {
|
|
info("HTTP tests");
|
|
test_url(HTTPSRC + "disablechrome.html", false, run_chrome_about_test_6);
|
|
}
|
|
|
|
function run_chrome_about_test_6() {
|
|
info("Chrome about: tests");
|
|
test_url("about:preferences", true, end_test);
|
|
} |