toolkit/mozapps/extensions/test/browser/browser_bug586574.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/
     3  */
     5 // Bug 586574 - Provide way to set a default for automatic updates
     6 // Bug 710064 - Make the "Update Add-ons Automatically" checkbox state
     7 //              also depend on the extensions.update.enabled pref
     9 // TEST_PATH=toolkit/mozapps/extensions/test/browser/browser_bug586574.js make -C obj-ff mochitest-browser-chrome
    11 const PREF_UPDATE_ENABLED = "extensions.update.enabled";
    12 const PREF_AUTOUPDATE_DEFAULT = "extensions.update.autoUpdateDefault";
    14 var gManagerWindow;
    15 var gProvider;
    17 var gUtilsBtn;
    18 var gUtilsMenu;
    19 var gDropdownMenu;
    20 var gSetDefault;
    21 var gResetToAutomatic;
    22 var gResetToManual;
    24 function test() {
    25   waitForExplicitFinish();
    27   gProvider = new MockProvider();
    29   gProvider.createAddons([{
    30     id: "addon1@tests.mozilla.org",
    31     name: "addon 1",
    32     version: "1.0",
    33     applyBackgroundUpdates: AddonManager.AUTOUPDATE_DISABLE
    34   }]);
    36   open_manager("addons://list/extension", function(aWindow) {
    37     gManagerWindow = aWindow;
    39     gUtilsBtn = gManagerWindow.document.getElementById("header-utils-btn");
    40     gUtilsMenu = gManagerWindow.document.getElementById("utils-menu");
    42     run_next_test();
    43   });
    44 }
    47 function end_test() {
    48   close_manager(gManagerWindow, finish);
    49 }
    52 function wait_for_popup(aCallback) {
    53   if (gUtilsMenu.state == "open") {
    54     aCallback();
    55     return;
    56   }
    58   gUtilsMenu.addEventListener("popupshown", function() {
    59     gUtilsMenu.removeEventListener("popupshown", arguments.callee, false);
    60     info("Utilities menu shown");
    61     aCallback();
    62   }, false);
    63 }
    65 function wait_for_hide(aCallback) {
    66   if (gUtilsMenu.state == "closed") {
    67     aCallback();
    68     return;
    69   }
    71   gUtilsMenu.addEventListener("popuphidden", function() {
    72     gUtilsMenu.removeEventListener("popuphidden", arguments.callee, false);
    73     info("Utilities menu hidden");
    74     aCallback();
    75   }, false);
    76 }
    78 add_test(function() {
    79   gSetDefault = gManagerWindow.document.getElementById("utils-autoUpdateDefault");
    80   gResetToAutomatic = gManagerWindow.document.getElementById("utils-resetAddonUpdatesToAutomatic");
    81   gResetToManual = gManagerWindow.document.getElementById("utils-resetAddonUpdatesToManual");
    83   info("Ensuring default prefs are set to true");
    84   Services.prefs.setBoolPref(PREF_UPDATE_ENABLED, true);
    85   Services.prefs.setBoolPref(PREF_AUTOUPDATE_DEFAULT, true);
    87   wait_for_popup(function() {
    88     is(gSetDefault.getAttribute("checked"), "true",
    89        "#1 Set Default menuitem should be checked");
    90     is_element_visible(gResetToAutomatic,
    91                        "#1 Reset to Automatic menuitem should be visible");
    92     is_element_hidden(gResetToManual,
    93                       "#1 Reset to Manual menuitem should be hidden");
    95     var listener = {
    96       onPropertyChanged: function(aAddon, aProperties) {
    97         AddonManager.removeAddonListener(listener);
    98         is(aAddon.id, gProvider.addons[0].id,
    99            "Should get onPropertyChanged event for correct addon");
   100         ok(!("applyBackgroundUpdates" in aProperties),
   101            "Should have gotten applyBackgroundUpdates in properties array");
   102         is(aAddon.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT,
   103            "Addon.applyBackgroundUpdates should have been reset to default");
   105         info("Setting Addon.applyBackgroundUpdates back to disabled");
   106         aAddon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE;
   108         wait_for_hide(run_next_test);
   109       }
   110     };
   111     AddonManager.addAddonListener(listener);
   113     info("Clicking Reset to Automatic menuitem");
   114     EventUtils.synthesizeMouseAtCenter(gResetToAutomatic, { }, gManagerWindow);
   115   });
   117   info("Opening utilities menu");
   118   EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow);
   119 });
   122 add_test(function() {
   123   info("Disabling extensions.update.enabled");
   124   Services.prefs.setBoolPref(PREF_UPDATE_ENABLED, false);
   126   wait_for_popup(function() {
   127     isnot(gSetDefault.getAttribute("checked"), "true",
   128           "#2 Set Default menuitem should not be checked");
   129     is_element_visible(gResetToAutomatic,
   130                        "#2 Reset to Automatic menuitem should be visible");
   131     is_element_hidden(gResetToManual,
   132                       "#2 Reset to Manual menuitem should be hidden");
   134     wait_for_hide(run_next_test);
   136     info("Clicking Set Default menuitem to reenable");
   137     EventUtils.synthesizeMouseAtCenter(gSetDefault, { }, gManagerWindow);
   138   });
   140   info("Opening utilities menu");
   141   EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow);
   142 });
   145 add_test(function() {
   146   ok(Services.prefs.getBoolPref(PREF_UPDATE_ENABLED),
   147      "extensions.update.enabled should be true after the previous test");
   148   ok(Services.prefs.getBoolPref(PREF_AUTOUPDATE_DEFAULT),
   149      "extensions.update.autoUpdateDefault should be true after the previous test");
   151   info("Disabling both extensions.update.enabled and extensions.update.autoUpdateDefault");
   152   Services.prefs.setBoolPref(PREF_UPDATE_ENABLED, false);
   153   Services.prefs.setBoolPref(PREF_AUTOUPDATE_DEFAULT, false);
   155   wait_for_popup(function() {
   156     isnot(gSetDefault.getAttribute("checked"), "true",
   157           "#3 Set Default menuitem should not be checked");
   158     is_element_hidden(gResetToAutomatic,
   159                       "#3 Reset to automatic menuitem should be hidden");
   160     is_element_visible(gResetToManual,
   161                        "#3 Reset to manual menuitem should be visible");
   163     wait_for_hide(run_next_test);
   165     info("Clicking Set Default menuitem to reenable");
   166     EventUtils.synthesizeMouseAtCenter(gSetDefault, { }, gManagerWindow);
   167   });
   169   info("Opening utilities menu");
   170   EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow);
   171 });
   174 add_test(function() {
   175   ok(Services.prefs.getBoolPref(PREF_UPDATE_ENABLED),
   176      "extensions.update.enabled should be true after the previous test");
   177   ok(Services.prefs.getBoolPref(PREF_AUTOUPDATE_DEFAULT),
   178      "extensions.update.autoUpdateDefault should be true after the previous test");
   180   info("clicking the button to disable extensions.update.autoUpdateDefault");
   181   wait_for_popup(function() {
   182     is(gSetDefault.getAttribute("checked"), "true",
   183        "#4 Set Default menuitem should be checked");
   184     is_element_visible(gResetToAutomatic,
   185                        "#4 Reset to Automatic menuitem should be visible");
   186     is_element_hidden(gResetToManual,
   187                       "#4 Reset to Manual menuitem should be hidden");
   189     wait_for_hide(run_next_test);
   191     info("Clicking Set Default menuitem to disable");
   192     EventUtils.synthesizeMouseAtCenter(gSetDefault, { }, gManagerWindow);
   193   });
   195   info("Opening utilities menu");
   196   EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow);
   197 });
   200 add_test(function() {
   201   ok(Services.prefs.getBoolPref(PREF_UPDATE_ENABLED),
   202      "extensions.update.enabled should be true after the previous test");
   203   is(Services.prefs.getBoolPref(PREF_AUTOUPDATE_DEFAULT), false,
   204      "extensions.update.autoUpdateDefault should be false after the previous test");
   206   wait_for_popup(function() {
   207     isnot(gSetDefault.getAttribute("checked"), "true",
   208           "#5 Set Default menuitem should not be checked");
   209     is_element_hidden(gResetToAutomatic,
   210                       "#5 Reset to automatic menuitem should be hidden");
   211     is_element_visible(gResetToManual,
   212                        "#5 Reset to manual menuitem should be visible");
   214     var listener = {
   215       onPropertyChanged: function(aAddon, aProperties) {
   216         AddonManager.removeAddonListener(listener);
   217         is(aAddon.id, gProvider.addons[0].id,
   218            "Should get onPropertyChanged event for correct addon");
   219         ok(!("applyBackgroundUpdates" in aProperties),
   220            "Should have gotten applyBackgroundUpdates in properties array");
   221         is(aAddon.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DEFAULT,
   222            "Addon.applyBackgroundUpdates should have been reset to default");
   224         info("Setting Addon.applyBackgroundUpdates back to disabled");
   225         aAddon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE;
   227         wait_for_hide(run_next_test);
   228       }
   229     };
   230     AddonManager.addAddonListener(listener);
   232     info("Clicking Reset to Manual menuitem");
   233     EventUtils.synthesizeMouseAtCenter(gResetToManual, { }, gManagerWindow);
   235   });
   237   info("Opening utilities menu");
   238   EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow);
   239 });
   242 add_test(function() {
   243   wait_for_popup(function() {
   244     isnot(gSetDefault.getAttribute("checked"), "true",
   245           "#6 Set Default menuitem should not be checked");
   246     is_element_hidden(gResetToAutomatic,
   247                       "#6 Reset to automatic menuitem should be hidden");
   248     is_element_visible(gResetToManual,
   249                        "#6 Reset to manual menuitem should be visible");
   251     wait_for_hide(run_next_test);
   253     info("Clicking Set Default menuitem");
   254     EventUtils.synthesizeMouseAtCenter(gSetDefault, { }, gManagerWindow);
   255   });
   257   info("Opening utilities menu");
   258   EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow);
   259 });
   262 add_test(function() {
   263   wait_for_popup(function() {
   264     is(gSetDefault.getAttribute("checked"), "true",
   265        "#7 Set Default menuitem should be checked");
   266     is_element_visible(gResetToAutomatic,
   267                        "#7 Reset to Automatic menuitem should be visible");
   268     is_element_hidden(gResetToManual,
   269                       "#7 Reset to Manual menuitem should be hidden");
   271     wait_for_hide(run_next_test);
   273     gUtilsMenu.hidePopup();
   274   });
   276   info("Opening utilities menu");
   277   EventUtils.synthesizeMouseAtCenter(gUtilsBtn, { }, gManagerWindow);
   278 });

mercurial