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