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/
3 */
5 Components.utils.import("resource://gre/modules/Services.jsm");
7 // restartManager() mucks with XPIProvider.jsm importing, so we hack around.
8 this.__defineGetter__("XPIProvider", function () {
9 let scope = {};
10 return Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", scope)
11 .XPIProvider;
12 });
14 const addonId = "addon1@tests.mozilla.org";
16 function run_test() {
17 Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
19 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9");
20 startupManager();
22 run_next_test();
23 }
25 add_test(function test_getter_and_setter() {
26 // Our test add-on requires a restart.
27 let listener = {
28 onInstallEnded: function onInstallEnded() {
29 AddonManager.removeInstallListener(listener);
30 // never restart directly inside an onInstallEnded handler!
31 do_execute_soon(function getter_setter_install_ended() {
32 restartManager();
34 AddonManager.getAddonByID(addonId, function(addon) {
36 do_check_neq(addon, null);
37 do_check_neq(addon.syncGUID, null);
38 do_check_true(addon.syncGUID.length >= 9);
40 let oldGUID = addon.SyncGUID;
41 let newGUID = "foo";
43 addon.syncGUID = newGUID;
44 do_check_eq(newGUID, addon.syncGUID);
46 // Verify change made it to DB.
47 AddonManager.getAddonByID(addonId, function(newAddon) {
48 do_check_neq(newAddon, null);
49 do_check_eq(newGUID, newAddon.syncGUID);
50 });
52 run_next_test();
53 });
54 });
55 }
56 };
58 AddonManager.addInstallListener(listener);
60 AddonManager.getInstallForFile(do_get_addon("test_install1"),
61 function(install) {
62 install.install();
63 });
64 });
66 add_test(function test_fetch_by_guid_unknown_guid() {
67 XPIProvider.getAddonBySyncGUID("XXXX", function(addon) {
68 do_check_eq(null, addon);
69 run_next_test();
70 });
71 });
73 // Ensure setting an extension to an existing syncGUID results in error.
74 add_test(function test_error_on_duplicate_syncguid_insert() {
75 const installNames = ["test_install1", "test_install2_1"];
76 const installIDs = ["addon1@tests.mozilla.org", "addon2@tests.mozilla.org"];
78 let installCount = 0;
80 let listener = {
81 onInstallEnded: function onInstallEnded() {
82 installCount++;
84 if (installCount == installNames.length) {
85 AddonManager.removeInstallListener(listener);
86 do_execute_soon(function duplicate_syncguid_install_ended() {
87 restartManager();
89 AddonManager.getAddonsByIDs(installIDs, callback_soon(function(addons) {
90 let initialGUID = addons[1].syncGUID;
92 try {
93 addons[1].syncGUID = addons[0].syncGUID;
94 do_throw("Should not get here.");
95 }
96 catch (e) {
97 do_check_true(e.message.startsWith("Addon sync GUID conflict"));
98 restartManager();
100 AddonManager.getAddonByID(installIDs[1], function(addon) {
101 do_check_eq(initialGUID, addon.syncGUID);
102 run_next_test();
103 });
104 }
105 }));
106 });
107 }
108 }
109 };
111 AddonManager.addInstallListener(listener);
112 let getInstallCB = function(install) { install.install(); };
114 for each (let name in installNames) {
115 AddonManager.getInstallForFile(do_get_addon(name), getInstallCB);
116 }
117 });
119 add_test(function test_fetch_by_guid_known_guid() {
120 AddonManager.getAddonByID(addonId, function(addon) {
121 do_check_neq(null, addon);
122 do_check_neq(null, addon.syncGUID);
124 let syncGUID = addon.syncGUID;
126 XPIProvider.getAddonBySyncGUID(syncGUID, function(newAddon) {
127 do_check_neq(null, newAddon);
128 do_check_eq(syncGUID, newAddon.syncGUID);
130 run_next_test();
131 });
132 });
133 });
135 add_test(function test_addon_manager_get_by_sync_guid() {
136 AddonManager.getAddonByID(addonId, function(addon) {
137 do_check_neq(null, addon.syncGUID);
139 let syncGUID = addon.syncGUID;
141 AddonManager.getAddonBySyncGUID(syncGUID, function(newAddon) {
142 do_check_neq(null, newAddon);
143 do_check_eq(addon.id, newAddon.id);
144 do_check_eq(syncGUID, newAddon.syncGUID);
146 AddonManager.getAddonBySyncGUID("DOES_NOT_EXIST", function(missing) {
147 do_check_eq(undefined, missing);
149 run_next_test();
150 });
151 });
152 });
153 });