toolkit/mozapps/extensions/test/xpcshell/test_bug655254.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 moving an extension in the filesystem without any other
     6 // change still keeps updated compatibility information
     8 // The test extension uses an insecure update url.
     9 Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
    10 // Enable loading extensions from the user and system scopes
    11 Services.prefs.setIntPref("extensions.enabledScopes",
    12                           AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER);
    14 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "2", "1.9.2");
    16 Components.utils.import("resource://testing-common/httpd.js");
    17 var testserver = new HttpServer();
    18 testserver.start(-1);
    19 gPort = testserver.identity.primaryPort;
    20 mapFile("/data/test_bug655254.rdf", testserver);
    22 var userDir = gProfD.clone();
    23 userDir.append("extensions2");
    24 userDir.append(gAppInfo.ID);
    26 var dirProvider = {
    27   getFile: function(aProp, aPersistent) {
    28     aPersistent.value = false;
    29     if (aProp == "XREUSysExt")
    30       return userDir.parent;
    31     return null;
    32   },
    34   QueryInterface: XPCOMUtils.generateQI([AM_Ci.nsIDirectoryServiceProvider,
    35                                          AM_Ci.nsISupports])
    36 };
    37 Services.dirsvc.registerProvider(dirProvider);
    39 var addon1 = {
    40   id: "addon1@tests.mozilla.org",
    41   version: "1.0",
    42   name: "Test 1",
    43   updateURL: "http://localhost:" + gPort + "/data/test_bug655254.rdf",
    44   targetApplications: [{
    45     id: "xpcshell@tests.mozilla.org",
    46     minVersion: "1",
    47     maxVersion: "1"
    48   }]
    49 };
    51 // Set up the profile
    52 function run_test() {
    53   do_test_pending();
    54   run_test_1();
    55 }
    57 function end_test() {
    58   testserver.stop(do_test_finished);
    59 }
    61 function run_test_1() {
    62   var time = Date.now();
    63   var dir = writeInstallRDFForExtension(addon1, userDir);
    64   setExtensionModifiedTime(dir, time);
    66   manuallyInstall(do_get_addon("test_bug655254_2"), userDir, "addon2@tests.mozilla.org");
    68   startupManager();
    70   AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
    71                                "addon2@tests.mozilla.org"], function([a1, a2]) {
    72     do_check_neq(a1, null);
    73     do_check_true(a1.appDisabled);
    74     do_check_false(a1.isActive);
    75     do_check_false(isExtensionInAddonsList(userDir, a1.id));
    77     do_check_neq(a2, null);
    78     do_check_false(a2.appDisabled);
    79     do_check_true(a2.isActive);
    80     do_check_false(isExtensionInAddonsList(userDir, a2.id));
    81     do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
    83     a1.findUpdates({
    84       onUpdateFinished: function() {
    85         restartManager();
    87         AddonManager.getAddonByID("addon1@tests.mozilla.org", callback_soon(function(a1) {
    88           do_check_neq(a1, null);
    89           do_check_false(a1.appDisabled);
    90           do_check_true(a1.isActive);
    91           do_check_true(isExtensionInAddonsList(userDir, a1.id));
    93           shutdownManager();
    95           do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
    97           userDir.parent.moveTo(gProfD, "extensions3");
    98           userDir = gProfD.clone();
    99           userDir.append("extensions3");
   100           userDir.append(gAppInfo.ID);
   101           do_check_true(userDir.exists());
   103           startupManager(false);
   105           AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
   106                                        "addon2@tests.mozilla.org"], function([a1, a2]) {
   107             do_check_neq(a1, null);
   108             do_check_false(a1.appDisabled);
   109             do_check_true(a1.isActive);
   110             do_check_true(isExtensionInAddonsList(userDir, a1.id));
   112             do_check_neq(a2, null);
   113             do_check_false(a2.appDisabled);
   114             do_check_true(a2.isActive);
   115             do_check_false(isExtensionInAddonsList(userDir, a2.id));
   116             do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
   118             do_execute_soon(run_test_2);
   119           });
   120         }));
   121       }
   122     }, AddonManager.UPDATE_WHEN_USER_REQUESTED);
   123   });
   124 }
   126 //Set up the profile
   127 function run_test_2() {
   128   AddonManager.getAddonByID("addon2@tests.mozilla.org", callback_soon(function(a2) {
   129    do_check_neq(a2, null);
   130    do_check_false(a2.appDisabled);
   131    do_check_true(a2.isActive);
   132    do_check_false(isExtensionInAddonsList(userDir, a2.id));
   133    do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 1);
   135    a2.userDisabled = true;
   136    do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
   138    shutdownManager();
   140    userDir.parent.moveTo(gProfD, "extensions4");
   141    userDir = gProfD.clone();
   142    userDir.append("extensions4");
   143    userDir.append(gAppInfo.ID);
   144    do_check_true(userDir.exists());
   146    startupManager(false);
   148    AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
   149                                 "addon2@tests.mozilla.org"], function([a1, a2]) {
   150      do_check_neq(a1, null);
   151      do_check_false(a1.appDisabled);
   152      do_check_true(a1.isActive);
   153      do_check_true(isExtensionInAddonsList(userDir, a1.id));
   155      do_check_neq(a2, null);
   156      do_check_true(a2.userDisabled);
   157      do_check_false(a2.isActive);
   158      do_check_false(isExtensionInAddonsList(userDir, a2.id));
   159      do_check_eq(Services.prefs.getIntPref("bootstraptest.active_version"), 0);
   161      end_test();
   162    });
   163   }));
   164 }

mercurial