toolkit/mozapps/extensions/test/xpcshell/test_pref_properties.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/ */
     4 // Tests the preference-related properties of AddonManager
     5 // eg: AddonManager.checkCompatibility, AddonManager.updateEnabled, etc
     7 var gManagerEventsListener = {
     8   seenEvents: [],
     9   init: function() {
    10     let events = ["onCompatibilityModeChanged", "onCheckUpdateSecurityChanged",
    11                   "onUpdateModeChanged"];
    12     events.forEach(function(aEvent) {
    13       this[aEvent] = function() {
    14         do_print("Saw event " + aEvent);
    15         this.seenEvents.push(aEvent);
    16       }
    17     }, this);
    18     AddonManager.addManagerListener(this);
    19     // Try to add twice, to test that the second time silently fails.
    20     AddonManager.addManagerListener(this);
    21   },
    22   shutdown: function() {
    23     AddonManager.removeManagerListener(this);
    24   },
    25   expect: function(aEvents) {
    26     this.expectedEvents = aEvents;
    27   },
    28   checkExpected: function() {
    29     do_print("Checking expected events...");
    30     while (this.expectedEvents.length > 0) {
    31       let event = this.expectedEvents.pop();
    32       do_print("Looking for expected event " + event);
    33       let matchingEvents = this.seenEvents.filter(function(aSeenEvent) {
    34         return aSeenEvent == event;
    35       });
    36       do_check_eq(matchingEvents.length, 1);
    37     }
    38     this.seenEvents = [];
    39   }
    40 }
    42 function run_test() {
    43   createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
    45   Services.prefs.setBoolPref("extensions.update.enabled", true);
    46   Services.prefs.setBoolPref("extensions.update.autoUpdateDefault", true);
    47   Services.prefs.setBoolPref("extensions.strictCompatibility", true);
    48   Services.prefs.setBoolPref("extensions.checkUpdatesecurity", true);
    50   startupManager();
    51   gManagerEventsListener.init();
    54   // AddonManager.updateEnabled
    55   gManagerEventsListener.expect(["onUpdateModeChanged"]);
    56   AddonManager.updateEnabled = false;
    57   gManagerEventsListener.checkExpected();
    58   do_check_false(AddonManager.updateEnabled);
    59   do_check_false(Services.prefs.getBoolPref("extensions.update.enabled"));
    61   gManagerEventsListener.expect([]);
    62   AddonManager.updateEnabled = false;
    63   gManagerEventsListener.checkExpected();
    64   do_check_false(AddonManager.updateEnabled);
    65   do_check_false(Services.prefs.getBoolPref("extensions.update.enabled"));
    67   gManagerEventsListener.expect(["onUpdateModeChanged"]);
    68   AddonManager.updateEnabled = true;
    69   gManagerEventsListener.checkExpected();
    70   do_check_true(AddonManager.updateEnabled);
    71   do_check_true(Services.prefs.getBoolPref("extensions.update.enabled"));
    73   gManagerEventsListener.expect([]);
    74   AddonManager.updateEnabled = true;
    75   gManagerEventsListener.checkExpected();
    76   do_check_true(AddonManager.updateEnabled);
    77   do_check_true(Services.prefs.getBoolPref("extensions.update.enabled"));
    79   // AddonManager.autoUpdateDefault
    80   gManagerEventsListener.expect(["onUpdateModeChanged"]);
    81   AddonManager.autoUpdateDefault = false;
    82   gManagerEventsListener.checkExpected();
    83   do_check_false(AddonManager.autoUpdateDefault);
    84   do_check_false(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault"));
    86   gManagerEventsListener.expect([]);
    87   AddonManager.autoUpdateDefault = false;
    88   gManagerEventsListener.checkExpected();
    89   do_check_false(AddonManager.autoUpdateDefault);
    90   do_check_false(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault"));
    92   gManagerEventsListener.expect(["onUpdateModeChanged"]);
    93   AddonManager.autoUpdateDefault = true;
    94   gManagerEventsListener.checkExpected();
    95   do_check_true(AddonManager.autoUpdateDefault);
    96   do_check_true(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault"));
    98   gManagerEventsListener.expect([]);
    99   AddonManager.autoUpdateDefault = true;
   100   gManagerEventsListener.checkExpected();
   101   do_check_true(AddonManager.autoUpdateDefault);
   102   do_check_true(Services.prefs.getBoolPref("extensions.update.autoUpdateDefault"));
   104   // AddonManager.strictCompatibility
   105   gManagerEventsListener.expect(["onCompatibilityModeChanged"]);
   106   AddonManager.strictCompatibility = false;
   107   gManagerEventsListener.checkExpected();
   108   do_check_false(AddonManager.strictCompatibility);
   109   do_check_false(Services.prefs.getBoolPref("extensions.strictCompatibility"));
   111   gManagerEventsListener.expect([]);
   112   AddonManager.strictCompatibility = false;
   113   gManagerEventsListener.checkExpected();
   114   do_check_false(AddonManager.strictCompatibility);
   115   do_check_false(Services.prefs.getBoolPref("extensions.strictCompatibility"));
   117   gManagerEventsListener.expect(["onCompatibilityModeChanged"]);
   118   AddonManager.strictCompatibility = true;
   119   gManagerEventsListener.checkExpected();
   120   do_check_true(AddonManager.strictCompatibility);
   121   do_check_true(Services.prefs.getBoolPref("extensions.strictCompatibility"));
   123   gManagerEventsListener.expect([]);
   124   AddonManager.strictCompatibility = true;
   125   gManagerEventsListener.checkExpected();
   126   do_check_true(AddonManager.strictCompatibility);
   127   do_check_true(Services.prefs.getBoolPref("extensions.strictCompatibility"));
   130   // AddonManager.checkCompatibility
   131   if (isNightlyChannel()) {
   132     var version = "nightly";
   133   } else {
   134     version = Services.appinfo.version.replace(/^([^\.]+\.[0-9]+[a-z]*).*/gi, "$1");
   135   }
   136   const COMPATIBILITY_PREF = "extensions.checkCompatibility." + version;
   138   gManagerEventsListener.expect(["onCompatibilityModeChanged"]);
   139   AddonManager.checkCompatibility = false;
   140   gManagerEventsListener.checkExpected();
   141   do_check_false(AddonManager.checkCompatibility);
   142   do_check_false(Services.prefs.getBoolPref(COMPATIBILITY_PREF));
   144   gManagerEventsListener.expect([]);
   145   AddonManager.checkCompatibility = false;
   146   gManagerEventsListener.checkExpected();
   147   do_check_false(AddonManager.checkCompatibility);
   148   do_check_false(Services.prefs.getBoolPref(COMPATIBILITY_PREF));
   150   gManagerEventsListener.expect(["onCompatibilityModeChanged"]);
   151   AddonManager.checkCompatibility = true;
   152   gManagerEventsListener.checkExpected();
   153   do_check_true(AddonManager.checkCompatibility);
   154   do_check_false(Services.prefs.prefHasUserValue(COMPATIBILITY_PREF));
   156   gManagerEventsListener.expect([]);
   157   AddonManager.checkCompatibility = true;
   158   gManagerEventsListener.checkExpected();
   159   do_check_true(AddonManager.checkCompatibility);
   160   do_check_false(Services.prefs.prefHasUserValue(COMPATIBILITY_PREF));
   163   // AddonManager.checkUpdateSecurity
   164   gManagerEventsListener.expect(["onCheckUpdateSecurityChanged"]);
   165   AddonManager.checkUpdateSecurity = false;
   166   gManagerEventsListener.checkExpected();
   167   do_check_false(AddonManager.checkUpdateSecurity);
   168   if (AddonManager.checkUpdateSecurityDefault)
   169     do_check_false(Services.prefs.getBoolPref("extensions.checkUpdateSecurity"));
   170   else
   171     do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity"));
   173   gManagerEventsListener.expect([]);
   174   AddonManager.checkUpdateSecurity = false;
   175   gManagerEventsListener.checkExpected();
   176   do_check_false(AddonManager.checkUpdateSecurity);
   177   if (AddonManager.checkUpdateSecurityDefault)
   178     do_check_false(Services.prefs.getBoolPref("extensions.checkUpdateSecurity"));
   179   else
   180     do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity"));
   182   gManagerEventsListener.expect(["onCheckUpdateSecurityChanged"]);
   183   AddonManager.checkUpdateSecurity = true;
   184   gManagerEventsListener.checkExpected();
   185   do_check_true(AddonManager.checkUpdateSecurity);
   186   if (!AddonManager.checkUpdateSecurityDefault)
   187     do_check_true(Services.prefs.getBoolPref("extensions.checkUpdateSecurity"));
   188   else
   189     do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity"));
   191   gManagerEventsListener.expect([]);
   192   AddonManager.checkUpdateSecurity = true;
   193   gManagerEventsListener.checkExpected();
   194   do_check_true(AddonManager.checkUpdateSecurity);
   195   if (!AddonManager.checkUpdateSecurityDefault)
   196     do_check_true(Services.prefs.getBoolPref("extensions.checkUpdateSecurity"));
   197   else
   198     do_check_false(Services.prefs.prefHasUserValue("extensions.checkUpdateSecurity"));
   200   gManagerEventsListener.shutdown();
   202   // AddonManager.hotfixID
   203   let hotfixID = "hotfix@tests.mozilla.org";
   204   Services.prefs.setCharPref("extensions.hotfix.id", hotfixID);
   205   do_check_eq(AddonManager.hotfixID, hotfixID);
   206   // Change the pref and make sure the property is updated
   207   hotfixID = "hotfix2@tests.mozilla.org";
   208   Services.prefs.setCharPref("extensions.hotfix.id", hotfixID);
   209   do_check_eq(AddonManager.hotfixID, hotfixID);
   210   // Test an invalid pref value
   211   hotfixID = 99;
   212   Services.prefs.deleteBranch("extensions.hotfix.id");
   213   Services.prefs.setIntPref("extensions.hotfix.id", hotfixID);
   214   do_check_eq(AddonManager.hotfixID, null);
   215   Services.prefs.clearUserPref("extensions.hotfix.id");
   217   // After removing the listener, ensure we get no further events.
   218   gManagerEventsListener.expect([]);
   219   AddonManager.updateEnabled = false;
   220   gManagerEventsListener.checkExpected();
   221 }

mercurial