OLD | NEW |
1 (function() | 1 (function() |
2 { | 2 { |
3 module("Preferences", | 3 module("Preferences", |
4 { | 4 { |
5 setup: function() | 5 setup: function() |
6 { | 6 { |
7 preparePrefs.call(this); | 7 preparePrefs.call(this); |
8 }, | 8 }, |
9 | 9 |
10 teardown: function() | 10 teardown: function() |
11 { | 11 { |
12 restorePrefs.call(this); | 12 restorePrefs.call(this); |
13 } | 13 } |
14 }); | 14 }); |
15 | 15 |
16 function prefExists(name) | 16 function checkPrefExists(name, expectedValue, description, assert) |
17 { | 17 { |
18 if ("chrome" in window) | 18 if ("chrome" in window) |
19 return name in localStorage; | 19 { |
| 20 let done = assert.async(); |
| 21 let key = "pref:" + name; |
| 22 chrome.storage.local.get(key, function(items) |
| 23 { |
| 24 equal(key in items, expectedValue, description); |
| 25 done(); |
| 26 }); |
| 27 } |
20 else | 28 else |
21 return Services.prefs.prefHasUserValue("extensions.adblockplus." + name); | 29 { |
| 30 equal(Services.prefs.prefHasUserValue("extensions.adblockplus." + name), e
xpectedValue, description); |
| 31 } |
22 } | 32 } |
23 | 33 |
24 function checkPref(name, expectedValue, description) | 34 function checkPref(name, expectedValue, description, assert) |
25 { | 35 { |
26 let value = null; | |
27 if ("chrome" in window) | 36 if ("chrome" in window) |
28 { | 37 { |
29 try | 38 let done = assert.async(); |
| 39 let key = "pref:" + name; |
| 40 chrome.storage.local.get(key, function(items) |
30 { | 41 { |
31 value = JSON.parse(localStorage[name]); | 42 deepEqual(items[key], expectedValue, description); |
32 } | 43 done(); |
33 catch (e) | 44 }); |
34 { | |
35 Cu.reportError(e); | |
36 } | |
37 } | 45 } |
38 else | 46 else |
39 { | 47 { |
40 let pref = "extensions.adblockplus." + name; | 48 let pref = "extensions.adblockplus." + name; |
| 49 let value = null; |
| 50 |
41 switch (typeof expectedValue) | 51 switch (typeof expectedValue) |
42 { | 52 { |
43 case "number": | 53 case "number": |
44 value = Services.prefs.getIntPref(pref); | 54 value = Services.prefs.getIntPref(pref); |
45 break; | 55 break; |
46 case "boolean": | 56 case "boolean": |
47 value = Services.prefs.getBoolPref(pref); | 57 value = Services.prefs.getBoolPref(pref); |
48 break; | 58 break; |
49 case "string": | 59 case "string": |
50 value = Services.prefs.getComplexValue(pref, Ci.nsISupportsString).dat
a; | 60 value = Services.prefs.getComplexValue(pref, Ci.nsISupportsString).dat
a; |
51 break; | 61 break; |
52 case "object": | 62 case "object": |
53 value = JSON.parse(Services.prefs.getComplexValue(pref, Ci.nsISupports
String).data); | 63 value = JSON.parse(Services.prefs.getComplexValue(pref, Ci.nsISupports
String).data); |
54 break; | 64 break; |
55 } | 65 } |
| 66 |
| 67 deepEqual(value, expectedValue, description); |
56 } | 68 } |
57 deepEqual(value, expectedValue, description); | |
58 } | 69 } |
59 | 70 |
60 test("Numerical pref", function() | 71 test("Numerical pref", function(assert) |
61 { | 72 { |
62 Prefs.patternsbackups = 5; | 73 Prefs.patternsbackups = 5; |
63 equal(Prefs.patternsbackups, 5, "Prefs object returns the correct value afte
r setting pref to default value"); | 74 equal(Prefs.patternsbackups, 5, "Prefs object returns the correct value afte
r setting pref to default value"); |
64 equal(prefExists("patternsbackups"), false, "User-defined pref has been remo
ved"); | 75 checkPrefExists("patternsbackups", false, "User-defined pref has been remove
d", assert); |
65 Prefs.patternsbackups = 12; | 76 Prefs.patternsbackups = 12; |
66 equal(Prefs.patternsbackups, 12, "Prefs object returns the correct value aft
er setting pref to non-default value"); | 77 equal(Prefs.patternsbackups, 12, "Prefs object returns the correct value aft
er setting pref to non-default value"); |
67 equal(prefExists("patternsbackups"), true, "User-defined pref has been creat
ed"); | 78 checkPrefExists("patternsbackups", true, "User-defined pref has been created
", assert); |
68 checkPref("patternsbackups", 12, "Value has been written"); | 79 checkPref("patternsbackups", 12, "Value has been written", assert); |
69 }); | 80 }); |
70 | 81 |
71 test("Boolean pref", function() | 82 test("Boolean pref", function(assert) |
72 { | 83 { |
73 Prefs.enabled = true; | 84 Prefs.enabled = true; |
74 equal(Prefs.enabled, true, "Prefs object returns the correct value after set
ting pref to default value"); | 85 equal(Prefs.enabled, true, "Prefs object returns the correct value after set
ting pref to default value"); |
75 equal(prefExists("enabled"), false, "User-defined pref has been removed"); | 86 checkPrefExists("enabled", false, "User-defined pref has been removed", asse
rt); |
76 Prefs.enabled = false; | 87 Prefs.enabled = false; |
77 equal(Prefs.enabled, false, "Prefs object returns the correct value after se
tting pref to non-default value"); | 88 equal(Prefs.enabled, false, "Prefs object returns the correct value after se
tting pref to non-default value"); |
78 equal(prefExists("enabled"), true, "User-defined pref has been created"); | 89 checkPrefExists("enabled", true, "User-defined pref has been created", asser
t); |
79 checkPref("enabled", false, "Value has been written"); | 90 checkPref("enabled", false, "Value has been written", assert); |
80 }); | 91 }); |
81 | 92 |
82 test("String pref", function() | 93 test("String pref", function(assert) |
83 { | 94 { |
84 let defaultValue = "https://notification.adblockplus.org/notification.json"; | 95 let defaultValue = "https://notification.adblockplus.org/notification.json"; |
85 Prefs.notificationurl = defaultValue; | 96 Prefs.notificationurl = defaultValue; |
86 equal(Prefs.notificationurl, defaultValue, "Prefs object returns the correct
value after setting pref to default value"); | 97 equal(Prefs.notificationurl, defaultValue, "Prefs object returns the correct
value after setting pref to default value"); |
87 equal(prefExists("notificationurl"), false, "User-defined pref has been remo
ved"); | 98 checkPrefExists("notificationurl", false, "User-defined pref has been remove
d", assert); |
88 | 99 |
89 let newValue = "https://notification.adblockplus.org/foo\u1234bar.json"; | 100 let newValue = "https://notification.adblockplus.org/foo\u1234bar.json"; |
90 Prefs.notificationurl = newValue; | 101 Prefs.notificationurl = newValue; |
91 equal(Prefs.notificationurl, newValue, "Prefs object returns the correct val
ue after setting pref to non-default value"); | 102 equal(Prefs.notificationurl, newValue, "Prefs object returns the correct val
ue after setting pref to non-default value"); |
92 equal(prefExists("notificationurl"), true, "User-defined pref has been creat
ed"); | 103 checkPrefExists("notificationurl", true, "User-defined pref has been created
", assert); |
93 checkPref("notificationurl", newValue, "Value has been written"); | 104 checkPref("notificationurl", newValue, "Value has been written", assert); |
94 }); | 105 }); |
95 | 106 |
96 test("Object pref (complete replacement)", function() | 107 test("Object pref (complete replacement)", function(assert) |
97 { | 108 { |
98 Prefs.notificationdata = {}; | 109 Prefs.notificationdata = {}; |
99 deepEqual(Prefs.notificationdata, {}, "Prefs object returns the correct valu
e after setting pref to default value"); | 110 deepEqual(Prefs.notificationdata, {}, "Prefs object returns the correct valu
e after setting pref to default value"); |
100 equal(prefExists("notificationdata"), false, "User-defined pref has been rem
oved"); | |
101 | 111 |
102 let newValue = {foo:1, bar: "adsf\u1234"}; | 112 let newValue = {foo:1, bar: "adsf\u1234"}; |
103 Prefs.notificationdata = newValue; | 113 Prefs.notificationdata = newValue; |
104 equal(Prefs.notificationdata, newValue, "Prefs object returns the correct va
lue after setting pref to non-default value"); | 114 equal(Prefs.notificationdata, newValue, "Prefs object returns the correct va
lue after setting pref to non-default value"); |
105 equal(prefExists("notificationdata"), true, "User-defined pref has been crea
ted"); | 115 checkPrefExists("notificationdata", true, "User-defined pref has been create
d", assert); |
106 checkPref("notificationdata", newValue, "Value has been written"); | 116 checkPref("notificationdata", newValue, "Value has been written", assert); |
107 }); | 117 }); |
108 | 118 |
109 test("Property-wise modification", function() | 119 test("Property-wise modification", function(assert) |
110 { | 120 { |
111 Prefs.notificationdata = {}; | 121 Prefs.notificationdata = {}; |
112 | 122 |
113 Prefs.notificationdata.foo = 1; | 123 Prefs.notificationdata.foo = 1; |
114 Prefs.notificationdata.bar = 2; | 124 Prefs.notificationdata.bar = 2; |
115 Prefs.notificationdata = JSON.parse(JSON.stringify(Prefs.notificationdata)); | 125 Prefs.notificationdata = JSON.parse(JSON.stringify(Prefs.notificationdata)); |
116 deepEqual(Prefs.notificationdata, {foo:1, bar: 2}, "Prefs object returns the
correct value after setting pref to non-default value"); | 126 deepEqual(Prefs.notificationdata, {foo:1, bar: 2}, "Prefs object returns the
correct value after setting pref to non-default value"); |
117 equal(prefExists("notificationdata"), true, "User-defined pref has been crea
ted"); | 127 checkPrefExists("notificationdata", true, "User-defined pref has been create
d", assert); |
118 checkPref("notificationdata", {foo:1, bar: 2}, "Value has been written"); | 128 checkPref("notificationdata", {foo:1, bar: 2}, "Value has been written", ass
ert); |
119 | 129 |
120 delete Prefs.notificationdata.foo; | 130 delete Prefs.notificationdata.foo; |
121 delete Prefs.notificationdata.bar; | 131 delete Prefs.notificationdata.bar; |
122 Prefs.notificationdata = JSON.parse(JSON.stringify(Prefs.notificationdata)); | 132 Prefs.notificationdata = JSON.parse(JSON.stringify(Prefs.notificationdata)); |
123 deepEqual(Prefs.notificationdata, {}, "Prefs object returns the correct valu
e after setting pref to default value"); | 133 deepEqual(Prefs.notificationdata, {}, "Prefs object returns the correct valu
e after setting pref to default value"); |
124 equal(prefExists("notificationdata"), false, "User-defined pref has been rem
oved"); | |
125 }); | 134 }); |
126 })(); | 135 })(); |
OLD | NEW |