| Index: chrome/content/elemHideEmulation.js |
| =================================================================== |
| --- a/chrome/content/elemHideEmulation.js |
| +++ b/chrome/content/elemHideEmulation.js |
| @@ -186,16 +186,17 @@ |
| */ |
| *getSelectors(prefix, subtree, styles) |
| { |
| yield [prefix + this._selector, subtree]; |
| } |
| }; |
| const incompletePrefixRegexp = /[\s>+~]$/; |
| +const relativeSelectorRegexp = /^[\s>+~]/; |
|
Wladimir Palant
2017/08/10 13:42:17
\s doesn't belong in here.
hub
2017/08/14 14:25:32
Done.
|
| function HasSelector(selectors) |
| { |
| this._innerSelectors = selectors; |
| } |
| HasSelector.prototype = { |
| requiresHiding: true, |
| @@ -221,18 +222,22 @@ |
| { |
| let actualPrefix = (!prefix || incompletePrefixRegexp.test(prefix)) ? |
| prefix + "*" : prefix; |
| let elements = subtree.querySelectorAll(actualPrefix); |
| for (let element of elements) |
| { |
| let iter = evaluate(this._innerSelectors, 0, "", element, styles); |
| for (let selector of iter) |
| + { |
| + if (relativeSelectorRegexp.test(selector)) |
| + selector = ":scope" + selector; |
|
Wladimir Palant
2017/08/10 13:36:08
Nice one, I didn't know about :scope yet. Browser
hub
2017/08/14 14:25:32
Good point. Will catch the exception. I'll see if
|
| if (element.querySelector(selector)) |
| yield element; |
| + } |
| } |
| } |
| }; |
| function PropsSelector(propertyExpression) |
| { |
| let regexpString; |
| if (propertyExpression.length >= 2 && propertyExpression[0] == "/" && |