toolkit/mozapps/extensions/test/xpcshell/test_experiment.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 let scope = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm");
     5 const XPIProvider = scope.XPIProvider;
     7 function run_test() {
     8   createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
     9   startupManager();
    11   run_next_test();
    12 }
    14 add_test(function test_experiment() {
    15   AddonManager.getInstallForFile(do_get_addon("test_experiment1"), (install) => {
    16     completeAllInstalls([install], () => {
    17       AddonManager.getAddonByID("experiment1@tests.mozilla.org", (addon) => {
    18         Assert.ok(addon, "Addon is found.");
    20         Assert.ok(addon.userDisabled, "Experiments are userDisabled by default.");
    21         Assert.equal(addon.isActive, false, "Add-on is not active.");
    22         Assert.equal(addon.updateURL, null, "No updateURL for experiments.");
    23         Assert.equal(addon.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DISABLE,
    24                      "Background updates are disabled.");
    25         Assert.equal(addon.permissions, AddonManager.PERM_CAN_UNINSTALL,
    26                      "Permissions are minimal.");
    28         // Setting applyBackgroundUpdates should not work.
    29         addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_ENABLE;
    30         Assert.equal(addon.applyBackgroundUpdates, AddonManager.AUTOUPDATE_DISABLE,
    31                      "Setting applyBackgroundUpdates shouldn't do anything.");
    33         let noCompatibleCalled = false;
    34         let noUpdateCalled = false;
    35         let finishedCalled = false;
    37         let listener = {
    38           onNoCompatibilityUpdateAvailable: () => { noCompatibleCalled = true; },
    39           onNoUpdateAvailable: () => { noUpdateCalled = true; },
    40           onUpdateFinished: () => { finishedCalled = true; },
    41         };
    43         addon.findUpdates(listener, "testing", null, null);
    44         Assert.ok(noCompatibleCalled, "Listener called.");
    45         Assert.ok(noUpdateCalled, "Listener called.");
    46         Assert.ok(finishedCalled, "Listener called.");
    48         run_next_test();
    49       });
    50     });
    51   });
    52 });
    54 // Changes to userDisabled should not be persisted to the database.
    55 add_test(function test_userDisabledNotPersisted() {
    56   AddonManager.getAddonByID("experiment1@tests.mozilla.org", (addon) => {
    57     Assert.ok(addon, "Add-on is found.");
    58     Assert.ok(addon.userDisabled, "Add-on is user disabled.");
    60     let listener = {
    61       onEnabled: (addon2) => {
    62         AddonManager.removeAddonListener(listener);
    64         Assert.equal(addon2.id, addon.id, "Changed add-on matches expected.");
    65         Assert.equal(addon2.userDisabled, false, "Add-on is no longer user disabled.");
    66         Assert.ok(addon2.isActive, "Add-on is active.");
    68         Assert.ok("experiment1@tests.mozilla.org" in XPIProvider.bootstrappedAddons,
    69                   "Experiment add-on listed in XPIProvider bootstrapped list.");
    71         AddonManager.getAddonByID("experiment1@tests.mozilla.org", (addon) => {
    72           Assert.ok(addon, "Add-on retrieved.");
    73           Assert.equal(addon.userDisabled, false, "Add-on is still enabled after API retrieve.");
    74           Assert.ok(addon.isActive, "Add-on is still active.");
    76           // Now when we restart the manager the add-on should revert state.
    77           restartManager();
    78           let persisted = JSON.parse(Services.prefs.getCharPref("extensions.bootstrappedAddons"));
    79           Assert.ok(!("experiment1@tests.mozilla.org" in persisted),
    80                     "Experiment add-on not persisted to bootstrappedAddons.");
    82           AddonManager.getAddonByID("experiment1@tests.mozilla.org", (addon) => {
    83             Assert.ok(addon, "Add-on retrieved.");
    84             Assert.ok(addon.userDisabled, "Add-on is disabled after restart.");
    85             Assert.equal(addon.isActive, false, "Add-on is not active after restart.");
    87             run_next_test();
    88           });
    89         });
    90       },
    91     };
    93     AddonManager.addAddonListener(listener);
    94     addon.userDisabled = false;
    95   });
    96 });

mercurial