Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: chrome/content/tests/elemhide.js

Issue 29355735: Issue 4223 - Remove tests migrated to adblockpluscore (Closed)
Patch Set: Created Oct. 4, 2016, 1:19 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/content/tests/domainRestrictions.js ('k') | chrome/content/tests/filterClasses.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 (function()
Wladimir Palant 2016/10/04 13:53:18 This test wasn't migrated, elemhide.js in adblockp
kzar 2016/10/04 14:20:43 Shit you're right, sorry. Resurrected this now.
2 {
3 let server = null;
4 let frame = null;
5
6 module("Element hiding", {
7 setup: function()
8 {
9 prepareFilterComponents.call(this);
10 preparePrefs.call(this);
11
12 server = new nsHttpServer();
13 server.start(1234);
14
15 server.registerPathHandler("/test", function(metadata, response)
16 {
17 let body =
18 '<body onload="document.dispatchEvent(new CustomEvent(\'abp:frameready \', {bubbles: true}));">' +
19 '<div id="test1" class="testClass">foo</div>' +
20 '<p id="test2" class="testClass">bar</p>' +
21 '</body>';
22 response.setStatusLine("1.1", "200", "OK");
23 response.setHeader("Content-Type", "text/html; charset=utf-8");
24 response.bodyOutputStream.write(body, body.length);
25 });
26
27 frame = document.createElementNS("http://www.mozilla.org/keymaster/gatekee per/there.is.only.xul", "browser");
28 frame.setAttribute("type", "content");
29 frame.setAttribute("disablehistory", "true");
30 frame.style.visibility = "collapse";
31 document.body.appendChild(frame);
32 },
33 teardown: function()
34 {
35 restoreFilterComponents.call(this);
36 restorePrefs.call(this);
37
38 stop();
39 server.stop(function()
40 {
41 frame.parentElement.removeChild(frame);
42
43 server = null;
44 frame = null;
45 start();
46 });
47 }
48 });
49
50 let tests = [
51 [[], ["visible", "visible"]],
52 [["#div(test1)"], ["hidden", "visible"]],
53 [["localhost#div(test1)"], ["hidden", "visible"]],
54 [["localhost#div(test1)", "foo,foo2#p(test2)"], ["hidden", "visible"]],
55 [["localhost,foo#div(test1)", "foo,localhost#p(test2)"], ["hidden", "hidden" ]],
56 [["localhost#div(test1)", "localhost#p(test2)"], ["hidden", "hidden"]],
57 [["foo#div(test1)", "foo#p(test2)"], ["visible", "visible"]],
58
59 [["localhost#div(testClass)"], ["hidden", "visible"]],
60 [["localhost#p(testClass)"], ["visible", "hidden"]],
61 [["localhost#*(testClass)"], ["hidden", "hidden"]],
62 [["localhost#div(testClass)", "localhost#p(test2)"], ["hidden", "hidden"]],
63 [["localhost#p(testClass)", "localhost#p(test2)"], ["visible", "hidden"]],
64 [["localhost#p(testClass)(test2)"], ["visible", "visible"]], // this filte r is invalid, must be ignored
65
66 [["localhost#*(id^=test)"], ["hidden", "hidden"]],
67 [["localhost#p(id^=test)"], ["visible", "hidden"]],
68 [["localhost#*(id$=2)"], ["visible", "hidden"]],
69 [["localhost#p(id$=2)"], ["visible", "hidden"]],
70 [["localhost#div(id$=2)"], ["visible", "visible"]],
71
72 [["localhost#*(test1)(id^=test)"], ["hidden", "visible"]],
73 [["localhost#*(testClass)(id^=test)"], ["hidden", "hidden"]],
74 [["localhost#p(testClass)(id^=test)"], ["visible", "hidden"]],
75 [["localhost#*(test1)(id$=2)"], ["visible", "visible"]],
76 [["localhost#*(testClass)(id$=2)"], ["visible", "hidden"]],
77 [["localhost#p(testClass)(id$=2)"], ["visible", "hidden"]],
78
79 [["localhost#*(test1)(id^=test)(id$=2)"], ["visible", "visible"]],
80 [["localhost#*(test1)(id^=test)(id$=1)"], ["hidden", "visible"]],
81 [["localhost#p(test1)(id^=test)(id$=1)"], ["visible", "visible"]],
82 [["localhost#div(test1)(id^=test)(id$=1)"], ["hidden", "visible"]],
83 [["localhost#*(id^=test)(id$=2)"], ["visible", "hidden"]],
84 [["localhost#*(id^=test)(id$=1)"], ["hidden", "visible"]],
85 [["localhost#p(id^=test)(id$=1)"], ["visible", "visible"]],
86 [["localhost#div(id^=test)(id$=1)"], ["hidden", "visible"]],
87
88 [["localhost##div#test1"], ["hidden", "visible"]],
89 [["localhost##p.testClass"], ["visible", "hidden"]],
90 [["localhost##div#test1, p.testClass"], ["hidden", "hidden"]],
91 [["localhost##div#test1", "localhost##p.testClass"], ["hidden", "hidden"]],
92 [["localhost##.testClass"], ["hidden", "hidden"]],
93
94 [["~localhost##div#test1"], ["visible", "visible"]],
95 [["foo,~localhost##div#test1"], ["visible", "visible"]],
96 [["localhost,~foo##div#test1"], ["hidden", "visible"]],
97
98 [["###test1", "localhost#@##test1"], ["visible", "visible"]],
99 [["localhost###test1", "localhost#@##test1"], ["visible", "visible"]],
100 [["localhost,~foo###test1", "localhost#@##test1"], ["visible", "visible"]],
101 [["###test1", "foo#@##test1"], ["hidden", "visible"]],
102 [["###test1", "~foo#@##test1"], ["visible", "visible"]],
103 [["###test1", "~localhost#@##test1"], ["hidden", "visible"]],
104 [["###test1", "#@##test1"], ["visible", "visible"]],
105 [["localhost###test1", "#@##test1"], ["visible", "visible"]],
106
107 [["localhost.###test1"], ["visible", "visible"]],
108 [["localhost.,localhost###test1"], ["hidden", "visible"]],
109 [["localhost.,foo.###test1"], ["visible", "visible"]],
110
111 [["##div#test1", "@@localhost$generichide"], ["visible", "visible"]],
112 [["##div#test1", "@@localhost$genericblock"], ["hidden", "visible"]],
113 [["localhost##div#test1", "@@localhost$generichide"], ["hidden", "visible"]] ,
114 [["~example.com##div#test1", "@@localhost$generichide"], ["visible", "visibl e"]],
115 [["~example.com##div#test1", "@@localhost$genericblock"], ["hidden", "visibl e"]],
116 [["~example.com,localhost##div#test1", "@@localhost$generichide"], ["hidden" , "visible"]],
117 ];
118
119 function runTest([filters, expected], stage)
120 {
121 let listener = function(action)
122 {
123 if (action != "elemhideupdate")
124 return;
125 FilterNotifier.removeListener(listener);
126
127 if (stage == 2)
128 defaultMatcher.add(Filter.fromText("@@||localhost^$document"));
129 else if (stage == 3)
130 defaultMatcher.add(Filter.fromText("@@||localhost^$~document"));
131 else if (stage == 4)
132 defaultMatcher.add(Filter.fromText("@@||localhost^$elemhide"));
133
134 if (stage == 2 || stage == 4)
135 expected = ["visible", "visible"]; // Second and forth runs are whitel isted, nothing should be hidden
136
137 frame.addEventListener("abp:frameready", function()
138 {
139 let frameScript = `
140 // The "load" event doesn't mean XBL bindings are done, these will
141 // take longer to load (async messaging). Only check visibility after
142 // sending a message to parent and receiving response.
143 addMessageListener("pong", function()
144 {
145 let visibility = [
146 content.document.getElementById("test1").offsetHeight > 0 ? "visib le" : "hidden",
147 content.document.getElementById("test2").offsetHeight > 0 ? "visib le" : "hidden"
148 ];
149 sendAsyncMessage("visibility", visibility);
150 });
151 sendAsyncMessage("ping");
152 `;
153 frame.messageManager.addMessageListener("ping", () => frame.messageManag er.sendAsyncMessage("pong"));
154 frame.messageManager.addMessageListener("visibility", (message) =>
155 {
156 let visibility = message.data;
157 equal(visibility[0], expected[0], "First element visible");
158 equal(visibility[1], expected[1], "Second element visible");
159
160 start();
161 });
162 frame.messageManager.loadFrameScript("data:text/javascript," + encodeURI Component(frameScript), false);
163 }, false, true);
164 frame.setAttribute("src", "http://localhost:1234/test");
165 };
166 FilterNotifier.addListener(listener);
167
168 for (let filter_text of filters)
169 {
170 let filter = Filter.fromText(filter_text);
171 if (filter instanceof WhitelistFilter)
172 defaultMatcher.add(filter);
173 else
174 ElemHide.add(filter);
175 }
176
177 ElemHide.isDirty = true;
178 ElemHide.apply();
179 }
180
181 let stageDescriptions = {
182 1: "running without exceptions",
183 2: "running with whitelisted document",
184 3: "running with exception not applying to documents",
185 4: "running with element hiding exception",
186 };
187
188 for (let test = 0; test < tests.length; test++)
189 {
190 let [filters, expected] = tests[test];
191 for (let stage = 1; stage in stageDescriptions; stage++)
192 asyncTest(filters.join(", ") + " (" + stageDescriptions[stage] + ")", runT est.bind(null, tests[test], stage));
193 }
194 })();
OLDNEW
« no previous file with comments | « chrome/content/tests/domainRestrictions.js ('k') | chrome/content/tests/filterClasses.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld