Left: | ||
Right: |
OLD | NEW |
---|---|
(Empty) | |
1 (function() | |
2 { | |
Thomas Greiner
2012/09/26 15:49:13
bracket on first line (as seen on last line)
Wladimir Palant
2012/09/27 14:55:06
Not really how I usually write it...
| |
3 function getModuleGlobal(module) | |
4 { | |
5 let result = Cu.getGlobalForObject(require(module)); | |
6 if (result == window) | |
7 { | |
8 // Work-around for bug 736316 - getGlobalForObject gave us our own window | |
9 let {XPIProvider} = Cu.import("resource://gre/modules/XPIProvider.jsm", nu ll); | |
10 let addonID = "{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}" | |
Thomas Greiner
2012/09/26 15:49:13
semicolon is missing
Wladimir Palant
2012/09/27 14:55:06
Bigger issue actually - that's the ID for Adblock
| |
11 if (addonID in XPIProvider.bootstrapScopes) | |
12 result = XPIProvider.bootstrapScopes[addonID]; | |
13 } | |
14 | |
15 if ("require" in result) | |
16 result = result.require.scopes[module]; | |
17 return result; | |
18 } | |
19 | |
20 let {onWhitelistEntryAdded, onWhitelistEntryRemoved} = require("rules"); | |
21 let rulesGlobal = getModuleGlobal("rules"); | |
22 | |
23 function saveRules() | |
24 { | |
25 this._rulesBackup = rulesGlobal.rules; | |
26 rulesGlobal.rules = {domain: {}}; | |
27 } | |
28 | |
29 function restoreRules() | |
30 { | |
31 rulesGlobal.rules = this._rulesBackup; | |
32 } | |
33 | |
34 module("Suffix tree manipulation", { | |
35 setup: saveRules, | |
36 teardown: restoreRules | |
37 }); | |
38 | |
39 test("Adding entries", function() | |
40 { | |
41 let priority = " " + rulesGlobal.CUSTOM_RULE_PRIORITY; | |
42 let domains = rulesGlobal.rules.domain; | |
43 | |
44 deepEqual(domains, {}, "Initial state"); | |
45 | |
46 onWhitelistEntryAdded("foo"); | |
47 deepEqual(domains, { | |
48 "o": "of" + priority | |
49 }, "Added foo"); | |
50 | |
51 onWhitelistEntryAdded("goo"); | |
52 deepEqual(domains, { | |
53 "o": { | |
54 "o": { | |
55 "f": priority, | |
56 "g": priority | |
57 } | |
58 } | |
59 }, "Added goo"); | |
60 | |
61 onWhitelistEntryAdded("xyzfoo"); | |
62 deepEqual(domains, { | |
63 "o": { | |
64 "o": { | |
65 "f": { | |
66 "": priority, | |
67 "z": "yx" + priority | |
68 }, | |
69 "g": priority | |
70 } | |
71 } | |
72 }, "Added xyzfoo"); | |
73 | |
74 onWhitelistEntryAdded("o"); | |
75 deepEqual(domains, { | |
76 "o": { | |
77 "": priority, | |
78 "o": { | |
79 "f": { | |
80 "": priority, | |
81 "z": "yx" + priority | |
82 }, | |
83 "g": priority | |
84 } | |
85 } | |
86 }, "Added o"); | |
87 | |
88 domains.o[""] = " 1234"; | |
89 onWhitelistEntryAdded("o"); | |
90 deepEqual(domains, { | |
91 "o": { | |
92 "": priority, | |
93 "o": { | |
94 "f": { | |
95 "": priority, | |
96 "z": "yx" + priority | |
97 }, | |
98 "g": priority | |
99 } | |
100 } | |
101 }, "Re-added o"); | |
102 }); | |
103 | |
104 test("Removing entries", function() | |
105 { | |
106 let priority = " " + rulesGlobal.CUSTOM_RULE_PRIORITY; | |
107 let domains = rulesGlobal.rules.domain = { | |
108 "o": { | |
109 "": priority, | |
110 "o": { | |
111 "f": { | |
112 "": priority, | |
113 "z": "yx" + priority | |
114 }, | |
115 "g": priority | |
116 } | |
117 } | |
118 }; | |
119 | |
120 deepEqual(domains, { | |
121 "o": { | |
122 "": priority, | |
123 "o": { | |
124 "f": { | |
125 "": priority, | |
126 "z": "yx" + priority | |
127 }, | |
128 "g": priority | |
129 } | |
130 } | |
131 }, "Initial state"); | |
132 | |
133 onWhitelistEntryRemoved("o"); | |
134 deepEqual(domains, { | |
135 "o": { | |
136 "o": { | |
137 "f": { | |
138 "": priority, | |
139 "z": "yx" + priority | |
140 }, | |
141 "g": priority | |
142 } | |
143 } | |
144 }, "Removed o"); | |
145 | |
146 onWhitelistEntryRemoved("go"); | |
147 deepEqual(domains, { | |
148 "o": { | |
149 "o": { | |
150 "f": { | |
151 "": priority, | |
152 "z": "yx" + priority | |
153 }, | |
154 "g": priority | |
155 } | |
156 } | |
157 }, "Removed go"); | |
158 | |
159 onWhitelistEntryRemoved("foo"); | |
160 deepEqual(domains, { | |
161 "o": { | |
162 "o": { | |
163 "f": { | |
164 "z": "yx" + priority | |
165 }, | |
166 "g": priority | |
167 } | |
168 } | |
169 }, "Removed foo"); | |
170 | |
171 onWhitelistEntryRemoved("xxyzfoo"); | |
172 deepEqual(domains, { | |
173 "o": { | |
174 "o": { | |
175 "f": { | |
176 "z": "yx" + priority | |
177 }, | |
178 "g": priority | |
179 } | |
180 } | |
181 }, "Removed xxyzfoo"); | |
182 | |
183 onWhitelistEntryRemoved("xyzfoo"); | |
184 deepEqual(domains, { | |
185 "o": { | |
186 "o": { | |
187 "f": { | |
188 }, | |
189 "g": priority | |
190 } | |
191 } | |
192 }, "Removed xyzfoo"); | |
193 | |
194 domains.o.o.g = " 1234"; | |
195 deepEqual(domains, { | |
196 "o": { | |
197 "o": { | |
198 "f": { | |
199 }, | |
200 "g": " 1234" | |
201 } | |
202 } | |
203 }, "Attempted to remove goo"); | |
204 }); | |
205 })(); | |
OLD | NEW |