OLD | NEW |
1 (function() | 1 (function() |
2 { | 2 { |
3 let server = null; | 3 let server = null; |
4 let frame = null; | 4 let frame = null; |
5 | 5 |
6 module("Element hiding", { | 6 module("Element hiding", { |
7 setup: function() | 7 setup: function() |
8 { | 8 { |
9 prepareFilterComponents.call(this); | 9 prepareFilterComponents.call(this); |
10 preparePrefs.call(this); | 10 preparePrefs.call(this); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 [["###test1", "foo#@##test1"], ["hidden", "visible"]], | 101 [["###test1", "foo#@##test1"], ["hidden", "visible"]], |
102 [["###test1", "~foo#@##test1"], ["visible", "visible"]], | 102 [["###test1", "~foo#@##test1"], ["visible", "visible"]], |
103 [["###test1", "~localhost#@##test1"], ["hidden", "visible"]], | 103 [["###test1", "~localhost#@##test1"], ["hidden", "visible"]], |
104 [["###test1", "#@##test1"], ["visible", "visible"]], | 104 [["###test1", "#@##test1"], ["visible", "visible"]], |
105 [["localhost###test1", "#@##test1"], ["visible", "visible"]], | 105 [["localhost###test1", "#@##test1"], ["visible", "visible"]], |
106 | 106 |
107 [["localhost.###test1"], ["visible", "visible"]], | 107 [["localhost.###test1"], ["visible", "visible"]], |
108 [["localhost.,localhost###test1"], ["hidden", "visible"]], | 108 [["localhost.,localhost###test1"], ["hidden", "visible"]], |
109 [["localhost.,foo.###test1"], ["visible", "visible"]], | 109 [["localhost.,foo.###test1"], ["visible", "visible"]], |
110 | 110 |
111 [["##div#test1", "@@localhost$generichide"], ["visible", "visible"]], | 111 [["###test1", "localhost###test2", "@@||localhost^$document"], ["visible", "
visible"]], |
112 [["##div#test1", "@@localhost$genericblock"], ["hidden", "visible"]], | 112 [["###test1", "localhost###test2", "@@||localhost^$~document"], ["hidden", "
hidden"]], |
113 [["localhost##div#test1", "@@localhost$generichide"], ["hidden", "visible"]]
, | 113 [["###test1", "localhost###test2", "@@||localhost^$elemhide"], ["visible", "
visible"]], |
114 [["~example.com##div#test1", "@@localhost$generichide"], ["visible", "visibl
e"]], | 114 [["###test1", "localhost###test2", "@@||localhost^$~elemhide"], ["hidden", "
hidden"]], |
115 [["~example.com##div#test1", "@@localhost$genericblock"], ["hidden", "visibl
e"]], | 115 |
116 [["~example.com,localhost##div#test1", "@@localhost$generichide"], ["hidden"
, "visible"]], | 116 [["###test1", "@@||localhost^$generichide"], ["visible", "visible"]], |
| 117 [["###test1", "@@||localhost^$genericblock"], ["hidden", "visible"]], |
| 118 [["localhost###test1", "@@||localhost^$generichide"], ["hidden", "visible"]]
, |
| 119 [["~example.com###test1", "@@||localhost^$generichide"], ["visible", "visibl
e"]], |
| 120 [["~example.com###test1", "@@||localhost^$genericblock"], ["hidden", "visibl
e"]], |
| 121 [["~example.com,localhost###test1", "@@||localhost^$generichide"], ["hidden"
, "visible"]], |
117 ]; | 122 ]; |
118 | 123 |
119 function runTest([filters, expected], stage) | 124 function runTest(filters, expected) |
120 { | 125 { |
121 for (let filterText of filters) | 126 for (let filterText of filters) |
122 FilterStorage.addFilter(Filter.fromText(filterText)); | 127 FilterStorage.addFilter(Filter.fromText(filterText)); |
123 | 128 |
124 if (stage == 2) | |
125 FilterStorage.addFilter(Filter.fromText("@@||localhost^$document")); | |
126 else if (stage == 3) | |
127 FilterStorage.addFilter(Filter.fromText("@@||localhost^$~document")); | |
128 else if (stage == 4) | |
129 FilterStorage.addFilter(Filter.fromText("@@||localhost^$elemhide")); | |
130 | |
131 // Second and forth runs are whitelisted, nothing should be hidden | |
132 if (stage == 2 || stage == 4) | |
133 expected = ["visible", "visible"]; | |
134 | |
135 frame.addEventListener("abp:frameready", function() | 129 frame.addEventListener("abp:frameready", function() |
136 { | 130 { |
137 let frameScript = ` | 131 let frameScript = ` |
138 // The "load" event doesn't mean that our styles are applied - these | 132 // The "load" event doesn't mean that our styles are applied - these |
139 // are only applied after a message roundtrip to parent determining | 133 // are only applied after a message roundtrip to parent determining |
140 // whether element hiding is enabled. Do the same roundtrip here before | 134 // whether element hiding is enabled. Do the same roundtrip here before |
141 // checking visibility to make sure timing is right. | 135 // checking visibility to make sure timing is right. |
142 addMessageListener("pong", function() | 136 addMessageListener("pong", function() |
143 { | 137 { |
144 let visibility = [ | 138 let visibility = [ |
(...skipping 11 matching lines...) Expand all Loading... |
156 equal(visibility[0], expected[0], "First element visible"); | 150 equal(visibility[0], expected[0], "First element visible"); |
157 equal(visibility[1], expected[1], "Second element visible"); | 151 equal(visibility[1], expected[1], "Second element visible"); |
158 | 152 |
159 start(); | 153 start(); |
160 }); | 154 }); |
161 frame.messageManager.loadFrameScript("data:text/javascript," + encodeURICo
mponent(frameScript), false); | 155 frame.messageManager.loadFrameScript("data:text/javascript," + encodeURICo
mponent(frameScript), false); |
162 }, false, true); | 156 }, false, true); |
163 frame.setAttribute("src", "http://localhost:1234/test"); | 157 frame.setAttribute("src", "http://localhost:1234/test"); |
164 } | 158 } |
165 | 159 |
166 let stageDescriptions = { | 160 for (let [filters, expected] of tests) |
167 1: "running without exceptions", | 161 asyncTest(filters.join(", "), runTest.bind(null, filters, expected)); |
168 2: "running with whitelisted document", | |
169 3: "running with exception not applying to documents", | |
170 4: "running with element hiding exception", | |
171 }; | |
172 | |
173 for (let test = 0; test < tests.length; test++) | |
174 { | |
175 let [filters, expected] = tests[test]; | |
176 for (let stage = 1; stage in stageDescriptions; stage++) | |
177 asyncTest(filters.join(", ") + " (" + stageDescriptions[stage] + ")", runT
est.bind(null, tests[test], stage)); | |
178 } | |
179 })(); | 162 })(); |
OLD | NEW |