toolkit/mozapps/extensions/test/xpcshell/test_bug596607.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 // Tests that a reference to a non-existent extension in the registry doesn't
     6 // break things
     7 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
     9 // Enable loading extensions from the user and system scopes
    10 Services.prefs.setIntPref("extensions.enabledScopes",
    11                           AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER +
    12                           AddonManager.SCOPE_SYSTEM);
    14 var addon1 = {
    15   id: "addon1@tests.mozilla.org",
    16   version: "1.0",
    17   name: "Test 1",
    18   targetApplications: [{
    19     id: "xpcshell@tests.mozilla.org",
    20     minVersion: "1",
    21     maxVersion: "1"
    22   }]
    23 };
    25 var addon2 = {
    26   id: "addon2@tests.mozilla.org",
    27   version: "2.0",
    28   name: "Test 2",
    29   targetApplications: [{
    30     id: "xpcshell@tests.mozilla.org",
    31     minVersion: "1",
    32     maxVersion: "2"
    33   }]
    34 };
    36 const addon1Dir = writeInstallRDFForExtension(addon1, gProfD, "addon1");
    37 const addon2Dir = writeInstallRDFForExtension(addon2, gProfD, "addon2");
    38 const addon3Dir = gProfD.clone();
    39 addon3Dir.append("addon3@tests.mozilla.org");
    41 function run_test() {
    42   // This test only works where there is a registry.
    43   if (!("nsIWindowsRegKey" in AM_Ci))
    44     return;
    46   do_test_pending();
    48   run_test_1();
    49 }
    51 // Tests whether starting a fresh profile with a bad entry works
    52 function run_test_1() {
    53   MockRegistry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE,
    54                         "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
    55                         "addon1@tests.mozilla.org", addon1Dir.path);
    56   MockRegistry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
    57                         "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
    58                         "addon2@tests.mozilla.org", addon2Dir.path);
    59   MockRegistry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
    60                         "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
    61                         "addon3@tests.mozilla.org", addon3Dir.path);
    63   startupManager();
    65   AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
    66                                "addon2@tests.mozilla.org",
    67                                "addon3@tests.mozilla.org"], function([a1, a2, a3]) {
    68     do_check_neq(a1, null);
    69     do_check_true(a1.isActive);
    70     do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
    71     do_check_eq(a1.scope, AddonManager.SCOPE_SYSTEM);
    73     do_check_neq(a2, null);
    74     do_check_true(a2.isActive);
    75     do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
    76     do_check_eq(a2.scope, AddonManager.SCOPE_USER);
    78     do_check_eq(a3, null);
    80     do_execute_soon(run_test_2);
    81   });
    82 }
    84 // Tests whether removing the bad entry has any effect
    85 function run_test_2() {
    86   shutdownManager();
    88   MockRegistry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
    89                         "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
    90                         "addon3@tests.mozilla.org", addon3Dir.path);
    92   startupManager(false);
    94   AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
    95                                "addon2@tests.mozilla.org",
    96                                "addon3@tests.mozilla.org"], function([a1, a2, a3]) {
    97     do_check_neq(a1, null);
    98     do_check_true(a1.isActive);
    99     do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
   100     do_check_eq(a1.scope, AddonManager.SCOPE_SYSTEM);
   102     do_check_neq(a2, null);
   103     do_check_true(a2.isActive);
   104     do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
   105     do_check_eq(a2.scope, AddonManager.SCOPE_USER);
   107     do_check_eq(a3, null);
   109     do_execute_soon(run_test_3);
   110   });
   111 }
   113 // Tests adding the bad entry to an existing profile has any effect
   114 function run_test_3() {
   115   shutdownManager();
   117   MockRegistry.setValue(AM_Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
   118                         "SOFTWARE\\Mozilla\\XPCShell\\Extensions",
   119                         "addon3@tests.mozilla.org", null);
   121   startupManager(false);
   123   AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
   124                                "addon2@tests.mozilla.org",
   125                                "addon3@tests.mozilla.org"], function([a1, a2, a3]) {
   126     do_check_neq(a1, null);
   127     do_check_true(a1.isActive);
   128     do_check_false(hasFlag(a1.permissions, AddonManager.PERM_CAN_UNINSTALL));
   129     do_check_eq(a1.scope, AddonManager.SCOPE_SYSTEM);
   131     do_check_neq(a2, null);
   132     do_check_true(a2.isActive);
   133     do_check_false(hasFlag(a2.permissions, AddonManager.PERM_CAN_UNINSTALL));
   134     do_check_eq(a2.scope, AddonManager.SCOPE_USER);
   136     do_check_eq(a3, null);
   138     do_execute_soon(do_test_finished);
   139   });
   140 }

mercurial