| Left: | ||
| Right: |
| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-present eyeo GmbH | 3 * Copyright (C) 2006-present eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 141 // Insert a <div> with a unique id and a CSS rule | 141 // Insert a <div> with a unique id and a CSS rule |
| 142 // for the the selector matching the id. | 142 // for the the selector matching the id. |
| 143 function createElementWithStyle(styleBlock, parent) | 143 function createElementWithStyle(styleBlock, parent) |
| 144 { | 144 { |
| 145 let element = createElement(parent); | 145 let element = createElement(parent); |
| 146 insertStyleRule("#" + element.id + " " + styleBlock); | 146 insertStyleRule("#" + element.id + " " + styleBlock); |
| 147 return element; | 147 return element; |
| 148 } | 148 } |
| 149 | 149 |
| 150 // Create a new ElemHideEmulation instance with @selectors. | 150 // Create a new ElemHideEmulation instance with @selectors. |
| 151 function applyElemHideEmulation(selectors) | 151 async function applyElemHideEmulation(selectors, test) |
| 152 { | 152 { |
| 153 return Promise.resolve().then(() => | 153 await Promise.resolve(); |
|
Manish Jethani
2019/01/17 08:03:33
This should not be necessary but I left it in for
| |
| 154 | |
| 155 let elemHideEmulation = null; | |
| 156 | |
| 157 try | |
| 154 { | 158 { |
| 155 let elemHideEmulation = new ElemHideEmulation( | 159 elemHideEmulation = new ElemHideEmulation( |
| 156 elems => | 160 elems => |
| 157 { | 161 { |
| 158 for (let elem of elems) | 162 for (let elem of elems) |
| 159 elem.style.display = "none"; | 163 elem.style.display = "none"; |
| 160 } | 164 } |
| 161 ); | 165 ); |
| 162 | 166 |
| 163 elemHideEmulation.document = testDocument; | 167 elemHideEmulation.document = testDocument; |
| 164 elemHideEmulation.MIN_INVOCATION_INTERVAL = REFRESH_INTERVAL / 2; | 168 elemHideEmulation.MIN_INVOCATION_INTERVAL = REFRESH_INTERVAL / 2; |
| 165 elemHideEmulation.apply(selectors.map( | 169 elemHideEmulation.apply(selectors.map( |
| 166 selector => ({selector, text: selector}) | 170 selector => ({selector, text: selector}) |
| 167 )); | 171 )); |
| 168 return elemHideEmulation; | 172 } |
| 169 }); | 173 catch (error) |
| 174 { | |
| 175 if (!test) | |
|
Manish Jethani
2019/01/17 08:03:33
This should not be necessary if every call to this
Manish Jethani
2019/01/17 08:04:36
Removed now.
| |
| 176 throw error; | |
| 177 | |
| 178 unexpectedError.call(test, error); | |
| 179 return null; | |
| 180 } | |
| 181 | |
| 182 return elemHideEmulation; | |
| 170 } | 183 } |
| 171 | 184 |
| 172 exports.testVerbatimPropertySelector = function(test) | 185 exports.testVerbatimPropertySelector = async function(test) |
| 173 { | 186 { |
| 174 let toHide = createElementWithStyle("{background-color: #000}"); | 187 let toHide = createElementWithStyle("{background-color: #000}"); |
| 175 applyElemHideEmulation( | 188 |
| 176 [":-abp-properties(background-color: rgb(0, 0, 0))"] | 189 if (await applyElemHideEmulation( |
| 177 ).then(() => | 190 [":-abp-properties(background-color: rgb(0, 0, 0))"], |
| 191 test | |
| 192 )) | |
| 178 { | 193 { |
| 179 expectHidden(test, toHide); | 194 expectHidden(test, toHide); |
| 180 }).catch(unexpectedError.bind(test)).then(() => test.done()); | 195 } |
| 196 | |
| 197 test.done(); | |
| 181 }; | 198 }; |
| 182 | 199 |
| 183 exports.testVerbatimPropertySelectorWithPrefix = function(test) | 200 exports.testVerbatimPropertySelectorWithPrefix = async function(test) |
| 184 { | 201 { |
| 185 let parent = createElementWithStyle("{background-color: #000}"); | 202 let parent = createElementWithStyle("{background-color: #000}"); |
| 186 let toHide = createElementWithStyle("{background-color: #000}", parent); | 203 let toHide = createElementWithStyle("{background-color: #000}", parent); |
| 187 applyElemHideEmulation( | 204 |
| 188 ["div > :-abp-properties(background-color: rgb(0, 0, 0))"] | 205 if (await applyElemHideEmulation( |
| 189 ).then(() => | 206 ["div > :-abp-properties(background-color: rgb(0, 0, 0))"], |
| 207 test | |
| 208 )) | |
| 190 { | 209 { |
| 191 expectVisible(test, parent); | 210 expectVisible(test, parent); |
| 192 expectHidden(test, toHide); | 211 expectHidden(test, toHide); |
| 193 }).catch(unexpectedError.bind(test)).then(() => test.done()); | 212 } |
| 213 | |
| 214 test.done(); | |
| 194 }; | 215 }; |
| 195 | 216 |
| 196 exports.testVerbatimPropertySelectorWithPrefixNoMatch = function(test) | 217 exports.testVerbatimPropertySelectorWithPrefixNoMatch = function(test) |
| 197 { | 218 { |
| 198 let parent = createElementWithStyle("{background-color: #000}"); | 219 let parent = createElementWithStyle("{background-color: #000}"); |
| 199 let toHide = createElementWithStyle("{background-color: #fff}", parent); | 220 let toHide = createElementWithStyle("{background-color: #fff}", parent); |
| 200 applyElemHideEmulation( | 221 applyElemHideEmulation( |
| 201 ["div > :-abp-properties(background-color: rgb(0, 0, 0))"] | 222 ["div > :-abp-properties(background-color: rgb(0, 0, 0))"] |
| 202 ).then(() => | 223 ).then(() => |
| 203 { | 224 { |
| (...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1034 for (let element of [...testDocument.getElementsByTagName("div"), | 1055 for (let element of [...testDocument.getElementsByTagName("div"), |
| 1035 ...testDocument.getElementsByTagName("p")]) | 1056 ...testDocument.getElementsByTagName("p")]) |
| 1036 { | 1057 { |
| 1037 if (element.id == "n2" || element.id == "n2_3") | 1058 if (element.id == "n2" || element.id == "n2_3") |
| 1038 expectProcessed(test, element, element.id); | 1059 expectProcessed(test, element, element.id); |
| 1039 else | 1060 else |
| 1040 expectNotProcessed(test, element, element.id); | 1061 expectNotProcessed(test, element, element.id); |
| 1041 } | 1062 } |
| 1042 }).catch(unexpectedError.bind(test)).then(() => test.done()); | 1063 }).catch(unexpectedError.bind(test)).then(() => test.done()); |
| 1043 }; | 1064 }; |
| OLD | NEW |