summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/extensions/test/browser/browser_tabsettings.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/extensions/test/browser/browser_tabsettings.js')
-rw-r--r--toolkit/mozapps/extensions/test/browser/browser_tabsettings.js100
1 files changed, 100 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/browser/browser_tabsettings.js b/toolkit/mozapps/extensions/test/browser/browser_tabsettings.js
new file mode 100644
index 000000000..2838698c7
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/browser/browser_tabsettings.js
@@ -0,0 +1,100 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+// Tests various aspects of the details view
+
+var gManagerWindow;
+var gCategoryUtilities;
+var gProvider;
+
+function test() {
+ waitForExplicitFinish();
+
+ gProvider = new MockProvider();
+
+ gProvider.createAddons([{
+ id: "tabsettings@tests.mozilla.org",
+ name: "Tab Settings",
+ version: "1",
+ optionsURL: CHROMEROOT + "addon_prefs.xul",
+ optionsType: AddonManager.OPTIONS_TYPE_TAB
+ }]);
+
+ open_manager("addons://list/extension", function(aWindow) {
+ gManagerWindow = aWindow;
+ gCategoryUtilities = new CategoryUtilities(gManagerWindow);
+
+ run_next_test();
+ });
+}
+
+function end_test() {
+ close_manager(gManagerWindow, function() {
+ finish();
+ });
+}
+
+add_test(function() {
+ var addon = get_addon_element(gManagerWindow, "tabsettings@tests.mozilla.org");
+ is(addon.mAddon.optionsType, AddonManager.OPTIONS_TYPE_TAB, "Options should be inline type");
+ addon.parentNode.ensureElementIsVisible(addon);
+
+ var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn");
+ is_element_visible(button, "Preferences button should be visible");
+
+ if (gUseInContentUI) {
+ EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow);
+
+ var browser = gBrowser.selectedBrowser;
+ browser.addEventListener("DOMContentLoaded", function() {
+ browser.removeEventListener("DOMContentLoaded", arguments.callee, false);
+ is(browser.currentURI.spec, addon.mAddon.optionsURL, "New tab should have loaded the options URL");
+ browser.contentWindow.close();
+ run_next_test();
+ }, false);
+ return;
+ }
+
+ let instantApply = Services.prefs.getBoolPref("browser.preferences.instantApply");
+
+ function observer(aSubject, aTopic, aData) {
+ switch (aTopic) {
+ case "domwindowclosed":
+ // Give the preference window a chance to finish closing before
+ // closing the add-ons manager.
+ waitForFocus(function () {
+ Services.ww.unregisterNotification(observer);
+ run_next_test();
+ });
+ break;
+ case "domwindowopened":
+ let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget);
+ waitForFocus(function () {
+ // If the openDialog privileges are wrong a new browser window
+ // will open, let the test proceed (and fail) rather than timeout.
+ if (win.location != addon.mAddon.optionsURL &&
+ win.location != "chrome://browser/content/browser.xul")
+ return;
+
+ is(win.location, addon.mAddon.optionsURL,
+ "The correct addon pref window should have opened");
+
+ let chromeFlags = win.QueryInterface(Ci.nsIInterfaceRequestor).
+ getInterface(Ci.nsIWebNavigation).
+ QueryInterface(Ci.nsIDocShellTreeItem).treeOwner.
+ QueryInterface(Ci.nsIInterfaceRequestor).
+ getInterface(Ci.nsIXULWindow).chromeFlags;
+ ok(chromeFlags & Ci.nsIWebBrowserChrome.CHROME_OPENAS_CHROME &&
+ (instantApply || chromeFlags & Ci.nsIWebBrowserChrome.CHROME_OPENAS_DIALOG),
+ "Window was open as a chrome dialog.");
+
+ win.close();
+ }, win);
+ break;
+ }
+ }
+
+ Services.ww.registerNotification(observer);
+ EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow);
+});