diff --git a/browser/base/content/utilityOverlay.js b/browser/base/content/utilityOverlay.js index 65fe3d598401..6d9e6158ae81 100644 --- a/browser/base/content/utilityOverlay.js +++ b/browser/base/content/utilityOverlay.js @@ -505,10 +505,13 @@ function openPreferences(paneID, extraArgs) } if (newLoad) { - browser.addEventListener("load", function onload() { - browser.removeEventListener("load", onload, true); + Services.obs.addObserver(function advancedPaneLoadedObs(prefWin, topic, data) { + if (prefWin != browser.contentWindow) { + return; + } + Services.obs.removeObserver(advancedPaneLoadedObs, "advanced-pane-loaded"); switchToPane(); - }, true); + }, "advanced-pane-loaded", false); } else { switchToPane(); } diff --git a/browser/components/preferences/in-content/advanced.js b/browser/components/preferences/in-content/advanced.js index db1e13bb10be..b236029f46be 100644 --- a/browser/components/preferences/in-content/advanced.js +++ b/browser/components/preferences/in-content/advanced.js @@ -71,6 +71,9 @@ var gAdvancedPane = { #endif this.updateActualCacheSize(); this.updateActualAppCacheSize(); + + // Notify observers that the UI is now ready + Services.obs.notifyObservers(window, "advanced-pane-loaded", null); }, /** diff --git a/browser/components/preferences/in-content/preferences.js b/browser/components/preferences/in-content/preferences.js index 80a6058e40af..8c877a19d848 100644 --- a/browser/components/preferences/in-content/preferences.js +++ b/browser/components/preferences/in-content/preferences.js @@ -44,6 +44,7 @@ function selectCategory(name) { let categories = document.getElementById("categories"); let item = categories.querySelector(".category[value=" + name + "]"); categories.selectedItem = item; + gotoPref(name); } function gotoPref(page) { diff --git a/toolkit/mozapps/extensions/test/browser/browser_experiments.js b/toolkit/mozapps/extensions/test/browser/browser_experiments.js index 453d9910170f..76c4a546b508 100644 --- a/toolkit/mozapps/extensions/test/browser/browser_experiments.js +++ b/toolkit/mozapps/extensions/test/browser/browser_experiments.js @@ -185,17 +185,17 @@ add_task(function* testOpenPreferences() { let deferred = Promise.defer(); Services.obs.addObserver(function observer(prefWin, topic, data) { Services.obs.removeObserver(observer, "advanced-pane-loaded"); - info("Advanced preference pane opened."); + executeSoon(function() { + // We want this test to fail if the preferences pane changes. + let el = prefWin.document.getElementById("dataChoicesPanel"); + is_element_visible(el); - // We want this test to fail if the preferences pane changes. - let el = prefWin.document.getElementById("dataChoicesPanel"); - is_element_visible(el); + prefWin.close(); + info("Closed preferences pane."); - prefWin.close(); - info("Closed preferences pane."); - - deferred.resolve(); + deferred.resolve(); + }); }, "advanced-pane-loaded", false); info("Loading preferences pane."); diff --git a/toolkit/mozapps/extensions/test/browser/head.js b/toolkit/mozapps/extensions/test/browser/head.js index 1181d99a3005..2a95d4799a81 100644 --- a/toolkit/mozapps/extensions/test/browser/head.js +++ b/toolkit/mozapps/extensions/test/browser/head.js @@ -432,12 +432,12 @@ function is_hidden(aElement) { function is_element_visible(aElement, aMsg) { isnot(aElement, null, "Element should not be null, when checking visibility"); - ok(!is_hidden(aElement), aMsg); + ok(!is_hidden(aElement), aMsg || (aElement + " should be visible")); } function is_element_hidden(aElement, aMsg) { isnot(aElement, null, "Element should not be null, when checking visibility"); - ok(is_hidden(aElement), aMsg); + ok(is_hidden(aElement), aMsg || (aElement + " should be hidden")); } /**