Wed, 31 Dec 2014 06:09:35 +0100
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 });