toolkit/mozapps/extensions/test/xpcshell/test_langpack.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 // This verifies that language packs can be used without restarts.
     6 Components.utils.import("resource://gre/modules/Services.jsm");
     8 // Enable loading extensions from the user scopes
     9 Services.prefs.setIntPref("extensions.enabledScopes",
    10                           AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER);
    11 // Enable installing distribution add-ons
    12 Services.prefs.setBoolPref("extensions.installDistroAddons", true);
    14 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
    16 const profileDir = gProfD.clone();
    17 profileDir.append("extensions");
    18 const userExtDir = gProfD.clone();
    19 userExtDir.append("extensions2");
    20 userExtDir.append(gAppInfo.ID);
    21 registerDirectory("XREUSysExt", userExtDir.parent);
    22 const distroDir = gProfD.clone();
    23 distroDir.append("distribution");
    24 distroDir.append("extensions");
    25 registerDirectory("XREAppDist", distroDir.parent);
    27 var chrome = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
    28   .getService(Components.interfaces.nsIXULChromeRegistry);
    30 function do_unregister_manifest() {
    31   let path = getFileForAddon(profileDir, "langpack-x-testing@tests.mozilla.org");
    32   Components.manager.removeBootstrappedManifestLocation(path);
    33 }
    35 function do_check_locale_not_registered(provider) {
    36   let didThrow = false;
    37   try {
    38     chrome.getSelectedLocale(provider);
    39   } catch (e) {
    40     didThrow = true;
    41   }
    42   do_check_true(didThrow);
    43 }
    45 function run_test() {
    46   do_test_pending();
    48   startupManager();
    50   run_test_1();
    51 }
    53 // Tests that installing doesn't require a restart
    54 function run_test_1() {
    55   do_check_locale_not_registered("test-langpack");
    57   prepare_test({ }, [
    58     "onNewInstall"
    59   ]);
    61   AddonManager.getInstallForFile(do_get_addon("test_langpack"), function(install) {
    62     ensure_test_completed();
    64     do_check_neq(install, null);
    65     do_check_eq(install.type, "locale");
    66     do_check_eq(install.version, "1.0");
    67     do_check_eq(install.name, "Language Pack x-testing");
    68     do_check_eq(install.state, AddonManager.STATE_DOWNLOADED);
    69     do_check_true(install.addon.hasResource("install.rdf"));
    70     do_check_false(install.addon.hasResource("bootstrap.js"));
    71     do_check_eq(install.addon.operationsRequiringRestart &
    72                 AddonManager.OP_NEEDS_RESTART_INSTALL, 0);
    74     let addon = install.addon;
    75     prepare_test({
    76       "langpack-x-testing@tests.mozilla.org": [
    77         ["onInstalling", false],
    78         "onInstalled"
    79       ]
    80     }, [
    81       "onInstallStarted",
    82       "onInstallEnded",
    83     ], function() {
    84       do_check_true(addon.hasResource("install.rdf"));
    85       // spin to let the startup complete
    86       do_execute_soon(check_test_1);
    87     });
    88     install.install();
    89   });
    90 }
    92 function check_test_1() {
    93   AddonManager.getAllInstalls(function(installs) {
    94     // There should be no active installs now since the install completed and
    95     // doesn't require a restart.
    96     do_check_eq(installs.length, 0);
    98     AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
    99       do_check_neq(b1, null);
   100       do_check_eq(b1.version, "1.0");
   101       do_check_false(b1.appDisabled);
   102       do_check_false(b1.userDisabled);
   103       do_check_true(b1.isActive);
   104       // check chrome reg that language pack is registered
   105       do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
   106       do_check_true(b1.hasResource("install.rdf"));
   107       do_check_false(b1.hasResource("bootstrap.js"));
   109       let dir = do_get_addon_root_uri(profileDir, "langpack-x-testing@tests.mozilla.org");
   111       AddonManager.getAddonsWithOperationsByTypes(null, function(list) {
   112         do_check_eq(list.length, 0);
   114         run_test_2();
   115       });
   116     });
   117   });
   118 }
   120 // Tests that disabling doesn't require a restart
   121 function run_test_2() {
   122   AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
   123     prepare_test({
   124       "langpack-x-testing@tests.mozilla.org": [
   125         ["onDisabling", false],
   126         "onDisabled"
   127       ]
   128     });
   130     do_check_eq(b1.operationsRequiringRestart &
   131                 AddonManager.OP_NEEDS_RESTART_DISABLE, 0);
   132     b1.userDisabled = true;
   133     ensure_test_completed();
   135     do_check_neq(b1, null);
   136     do_check_eq(b1.version, "1.0");
   137     do_check_false(b1.appDisabled);
   138     do_check_true(b1.userDisabled);
   139     do_check_false(b1.isActive);
   140     // check chrome reg that language pack is not registered
   141     do_check_locale_not_registered("test-langpack");
   143     AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
   144       do_check_neq(newb1, null);
   145       do_check_eq(newb1.version, "1.0");
   146       do_check_false(newb1.appDisabled);
   147       do_check_true(newb1.userDisabled);
   148       do_check_false(newb1.isActive);
   150       do_execute_soon(run_test_3);
   151     });
   152   });
   153 }
   155 // Test that restarting doesn't accidentally re-enable
   156 function run_test_3() {
   157   shutdownManager();
   158   startupManager(false);
   159   // check chrome reg that language pack is not registered
   160   do_check_locale_not_registered("test-langpack");
   162   AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
   163     do_check_neq(b1, null);
   164     do_check_eq(b1.version, "1.0");
   165     do_check_false(b1.appDisabled);
   166     do_check_true(b1.userDisabled);
   167     do_check_false(b1.isActive);
   169     run_test_4();
   170   });
   171 }
   173 // Tests that enabling doesn't require a restart
   174 function run_test_4() {
   175   AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
   176     prepare_test({
   177       "langpack-x-testing@tests.mozilla.org": [
   178         ["onEnabling", false],
   179         "onEnabled"
   180       ]
   181     });
   183     do_check_eq(b1.operationsRequiringRestart &
   184                 AddonManager.OP_NEEDS_RESTART_ENABLE, 0);
   185     b1.userDisabled = false;
   186     ensure_test_completed();
   188     do_check_neq(b1, null);
   189     do_check_eq(b1.version, "1.0");
   190     do_check_false(b1.appDisabled);
   191     do_check_false(b1.userDisabled);
   192     do_check_true(b1.isActive);
   193     // check chrome reg that language pack is registered
   194     do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
   196     AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
   197       do_check_neq(newb1, null);
   198       do_check_eq(newb1.version, "1.0");
   199       do_check_false(newb1.appDisabled);
   200       do_check_false(newb1.userDisabled);
   201       do_check_true(newb1.isActive);
   203       do_execute_soon(run_test_5);
   204     });
   205   });
   206 }
   208 // Tests that a restart shuts down and restarts the add-on
   209 function run_test_5() {
   210   shutdownManager();
   211   do_unregister_manifest();
   212   // check chrome reg that language pack is not registered
   213   do_check_locale_not_registered("test-langpack");
   214   startupManager(false);
   215   // check chrome reg that language pack is registered
   216   do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
   218   AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
   219     do_check_neq(b1, null);
   220     do_check_eq(b1.version, "1.0");
   221     do_check_false(b1.appDisabled);
   222     do_check_false(b1.userDisabled);
   223     do_check_true(b1.isActive);
   224     do_check_false(isExtensionInAddonsList(profileDir, b1.id));
   226     run_test_7();
   227   });
   228 }
   230 // Tests that uninstalling doesn't require a restart
   231 function run_test_7() {
   232   AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
   233     prepare_test({
   234       "langpack-x-testing@tests.mozilla.org": [
   235         ["onUninstalling", false],
   236         "onUninstalled"
   237       ]
   238     });
   240     do_check_eq(b1.operationsRequiringRestart &
   241                 AddonManager.OP_NEEDS_RESTART_UNINSTALL, 0);
   242     b1.uninstall();
   244     check_test_7();
   245   });
   246 }
   248 function check_test_7() {
   249   ensure_test_completed();
   250   // check chrome reg that language pack is not registered
   251   do_check_locale_not_registered("test-langpack");
   253   AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org",
   254    callback_soon(function(b1) {
   255     do_check_eq(b1, null);
   257     restartManager();
   259     AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
   260       do_check_eq(newb1, null);
   262       do_execute_soon(run_test_8);
   263     });
   264   }));
   265 }
   267 // Tests that a locale detected in the profile starts working immediately
   268 function run_test_8() {
   269   shutdownManager();
   271   manuallyInstall(do_get_addon("test_langpack"), profileDir, "langpack-x-testing@tests.mozilla.org");
   273   startupManager(false);
   275   AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org",
   276    callback_soon(function(b1) {
   277     do_check_neq(b1, null);
   278     do_check_eq(b1.version, "1.0");
   279     do_check_false(b1.appDisabled);
   280     do_check_false(b1.userDisabled);
   281     do_check_true(b1.isActive);
   282     // check chrome reg that language pack is registered
   283     do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
   284     do_check_true(b1.hasResource("install.rdf"));
   285     do_check_false(b1.hasResource("bootstrap.js"));
   287     shutdownManager();
   288     do_unregister_manifest();
   289     // check chrome reg that language pack is not registered
   290     do_check_locale_not_registered("test-langpack");
   291     startupManager(false);
   292     // check chrome reg that language pack is registered
   293     do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
   295     AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b2) {
   296       prepare_test({
   297         "langpack-x-testing@tests.mozilla.org": [
   298           ["onUninstalling", false],
   299           "onUninstalled"
   300         ]
   301       });
   303       b2.uninstall();
   304       ensure_test_completed();
   305       do_execute_soon(run_test_9);
   306     });
   307   }));
   308 }
   310 // Tests that a locale from distribution/extensions gets installed and starts
   311 // working immediately
   312 function run_test_9() {
   313   shutdownManager();
   314   manuallyInstall(do_get_addon("test_langpack"), distroDir, "langpack-x-testing@tests.mozilla.org");
   315   gAppInfo.version = "2.0";
   316   startupManager(true);
   318   AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", callback_soon(function(b1) {
   319     do_check_neq(b1, null);
   320     do_check_eq(b1.version, "1.0");
   321     do_check_false(b1.appDisabled);
   322     do_check_false(b1.userDisabled);
   323     do_check_true(b1.isActive);
   324     // check chrome reg that language pack is registered
   325     do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
   326     do_check_true(b1.hasResource("install.rdf"));
   327     do_check_false(b1.hasResource("bootstrap.js"));
   329     shutdownManager();
   330     do_unregister_manifest();
   331     // check chrome reg that language pack is not registered
   332     do_check_locale_not_registered("test-langpack");
   333     startupManager(false);
   334     // check chrome reg that language pack is registered
   335     do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
   337     do_test_finished();
   338   }));
   339 }

mercurial