| Index: test/browser/elemHideEmulation.js |
| =================================================================== |
| --- a/test/browser/elemHideEmulation.js |
| +++ b/test/browser/elemHideEmulation.js |
| @@ -362,56 +362,80 @@ |
| { |
| expectVisible(test, parent); |
| expectVisible(test, middle); |
| expectVisible(test, sibling); |
| expectHidden(test, toHide); |
| }).catch(unexpectedError.bind(test)).then(() => test.done()); |
| }; |
| -function runTestPseudoClassHasSelectorWithHasAndWithSuffixSibling(test, selector) |
| +function runTestPseudoClassHasSelectorWithHasAndWithSuffixSibling(test, selector, expectation) |
| { |
| document.body.innerHTML = `<div id="parent"> |
| <div id="middle"> |
| <div id="middle1"><div id="inside" class="inside"></div></div> |
| </div> |
| <div id="sibling"> |
| <div id="tohide">to hide</div> |
| </div> |
| <div id="sibling2"> |
| <div id="sibling21"><div id="sibling211" class="inside"></div></div> |
| </div> |
| </div>`; |
| - let parent = document.getElementById("parent"); |
| - let middle = document.getElementById("middle"); |
| - let inside = document.getElementById("inside"); |
| - let sibling = document.getElementById("sibling"); |
| - let sibling2 = document.getElementById("sibling2"); |
| - let toHide = document.getElementById("tohide"); |
| + let elems = {}; |
| + elems.parent = document.getElementById("parent"); |
| + elems.middle = document.getElementById("middle"); |
| + elems.inside = document.getElementById("inside"); |
| + elems.sibling = document.getElementById("sibling"); |
| + elems.sibling2 = document.getElementById("sibling2"); |
| + elems.toHide = document.getElementById("tohide"); |
| insertStyleRule(".inside {}"); |
| applyElemHideEmulation( |
| [selector] |
| ).then(() => |
| { |
| - expectVisible(test, parent); |
| - expectVisible(test, middle); |
| - expectVisible(test, inside); |
| - expectVisible(test, sibling); |
| - expectVisible(test, sibling2); |
| - expectHidden(test, toHide); |
| + if (typeof expectation == "function") |
| + return expectation(elems); |
| + |
| + expectVisible(test, elems.parent); |
| + expectVisible(test, elems.middle); |
| + expectVisible(test, elems.inside); |
| + expectVisible(test, elems.sibling); |
| + expectVisible(test, elems.sibling2); |
| + expectHidden(test, elems.toHide); |
| }).catch(unexpectedError.bind(test)).then(() => test.done()); |
| } |
| exports.testPseudoClassHasSelectorWithHasAndWithSuffixSibling = function(test) |
| { |
| runTestPseudoClassHasSelectorWithHasAndWithSuffixSibling(test, "div:-abp-has(:-abp-has(div.inside)) + div > div"); |
| }; |
| +exports.testPseudoClassHasSelectorWithHasAndWithSuffixSibling2 = function(test) |
| +{ |
| + runTestPseudoClassHasSelectorWithHasAndWithSuffixSibling( |
| + test, "div:-abp-has(:-abp-has(> div.inside)) + div > div"); |
| +}; |
| + |
| +exports.testPseudoClassHasSelectorWithSuffixSiblingNoop = function(test) |
| +{ |
| + runTestPseudoClassHasSelectorWithHasAndWithSuffixSibling( |
| + test, "div:-abp-has(> body div.inside) + div > div", (elems) => |
| + { |
| + expectVisible(test, elems.parent); |
| + expectVisible(test, elems.middle); |
| + expectVisible(test, elems.inside); |
| + expectVisible(test, elems.sibling); |
| + expectVisible(test, elems.sibling2); |
| + expectVisible(test, elems.toHide); |
| + }); |
| +}; |
| + |
| exports.testPseudoClassContains = function(test) |
| { |
| document.body.innerHTML = `<div id="parent"> |
| <div id="middle"> |
| <div id="middle1"><div id="inside" class="inside"></div></div> |
| </div> |
| <div id="sibling"> |
| <div id="tohide">to hide</div> |