| 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 |