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.

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

mercurial