Index: chrome/content/tests/elemhide.js |
diff --git a/chrome/content/tests/elemhide.js b/chrome/content/tests/elemhide.js |
deleted file mode 100644 |
index 4b38bc6c221e9b60e3b37dd1fb2b76e1e4ceda73..0000000000000000000000000000000000000000 |
--- a/chrome/content/tests/elemhide.js |
+++ /dev/null |
@@ -1,194 +0,0 @@ |
-(function() |
Wladimir Palant
2016/10/04 13:53:18
This test wasn't migrated, elemhide.js in adblockp
kzar
2016/10/04 14:20:43
Shit you're right, sorry. Resurrected this now.
|
-{ |
- let server = null; |
- let frame = null; |
- |
- module("Element hiding", { |
- setup: function() |
- { |
- prepareFilterComponents.call(this); |
- preparePrefs.call(this); |
- |
- server = new nsHttpServer(); |
- server.start(1234); |
- |
- server.registerPathHandler("/test", function(metadata, response) |
- { |
- let body = |
- '<body onload="document.dispatchEvent(new CustomEvent(\'abp:frameready\', {bubbles: true}));">' + |
- '<div id="test1" class="testClass">foo</div>' + |
- '<p id="test2" class="testClass">bar</p>' + |
- '</body>'; |
- response.setStatusLine("1.1", "200", "OK"); |
- response.setHeader("Content-Type", "text/html; charset=utf-8"); |
- response.bodyOutputStream.write(body, body.length); |
- }); |
- |
- frame = document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "browser"); |
- frame.setAttribute("type", "content"); |
- frame.setAttribute("disablehistory", "true"); |
- frame.style.visibility = "collapse"; |
- document.body.appendChild(frame); |
- }, |
- teardown: function() |
- { |
- restoreFilterComponents.call(this); |
- restorePrefs.call(this); |
- |
- stop(); |
- server.stop(function() |
- { |
- frame.parentElement.removeChild(frame); |
- |
- server = null; |
- frame = null; |
- start(); |
- }); |
- } |
- }); |
- |
- let tests = [ |
- [[], ["visible", "visible"]], |
- [["#div(test1)"], ["hidden", "visible"]], |
- [["localhost#div(test1)"], ["hidden", "visible"]], |
- [["localhost#div(test1)", "foo,foo2#p(test2)"], ["hidden", "visible"]], |
- [["localhost,foo#div(test1)", "foo,localhost#p(test2)"], ["hidden", "hidden"]], |
- [["localhost#div(test1)", "localhost#p(test2)"], ["hidden", "hidden"]], |
- [["foo#div(test1)", "foo#p(test2)"], ["visible", "visible"]], |
- |
- [["localhost#div(testClass)"], ["hidden", "visible"]], |
- [["localhost#p(testClass)"], ["visible", "hidden"]], |
- [["localhost#*(testClass)"], ["hidden", "hidden"]], |
- [["localhost#div(testClass)", "localhost#p(test2)"], ["hidden", "hidden"]], |
- [["localhost#p(testClass)", "localhost#p(test2)"], ["visible", "hidden"]], |
- [["localhost#p(testClass)(test2)"], ["visible", "visible"]], // this filter is invalid, must be ignored |
- |
- [["localhost#*(id^=test)"], ["hidden", "hidden"]], |
- [["localhost#p(id^=test)"], ["visible", "hidden"]], |
- [["localhost#*(id$=2)"], ["visible", "hidden"]], |
- [["localhost#p(id$=2)"], ["visible", "hidden"]], |
- [["localhost#div(id$=2)"], ["visible", "visible"]], |
- |
- [["localhost#*(test1)(id^=test)"], ["hidden", "visible"]], |
- [["localhost#*(testClass)(id^=test)"], ["hidden", "hidden"]], |
- [["localhost#p(testClass)(id^=test)"], ["visible", "hidden"]], |
- [["localhost#*(test1)(id$=2)"], ["visible", "visible"]], |
- [["localhost#*(testClass)(id$=2)"], ["visible", "hidden"]], |
- [["localhost#p(testClass)(id$=2)"], ["visible", "hidden"]], |
- |
- [["localhost#*(test1)(id^=test)(id$=2)"], ["visible", "visible"]], |
- [["localhost#*(test1)(id^=test)(id$=1)"], ["hidden", "visible"]], |
- [["localhost#p(test1)(id^=test)(id$=1)"], ["visible", "visible"]], |
- [["localhost#div(test1)(id^=test)(id$=1)"], ["hidden", "visible"]], |
- [["localhost#*(id^=test)(id$=2)"], ["visible", "hidden"]], |
- [["localhost#*(id^=test)(id$=1)"], ["hidden", "visible"]], |
- [["localhost#p(id^=test)(id$=1)"], ["visible", "visible"]], |
- [["localhost#div(id^=test)(id$=1)"], ["hidden", "visible"]], |
- |
- [["localhost##div#test1"], ["hidden", "visible"]], |
- [["localhost##p.testClass"], ["visible", "hidden"]], |
- [["localhost##div#test1, p.testClass"], ["hidden", "hidden"]], |
- [["localhost##div#test1", "localhost##p.testClass"], ["hidden", "hidden"]], |
- [["localhost##.testClass"], ["hidden", "hidden"]], |
- |
- [["~localhost##div#test1"], ["visible", "visible"]], |
- [["foo,~localhost##div#test1"], ["visible", "visible"]], |
- [["localhost,~foo##div#test1"], ["hidden", "visible"]], |
- |
- [["###test1", "localhost#@##test1"], ["visible", "visible"]], |
- [["localhost###test1", "localhost#@##test1"], ["visible", "visible"]], |
- [["localhost,~foo###test1", "localhost#@##test1"], ["visible", "visible"]], |
- [["###test1", "foo#@##test1"], ["hidden", "visible"]], |
- [["###test1", "~foo#@##test1"], ["visible", "visible"]], |
- [["###test1", "~localhost#@##test1"], ["hidden", "visible"]], |
- [["###test1", "#@##test1"], ["visible", "visible"]], |
- [["localhost###test1", "#@##test1"], ["visible", "visible"]], |
- |
- [["localhost.###test1"], ["visible", "visible"]], |
- [["localhost.,localhost###test1"], ["hidden", "visible"]], |
- [["localhost.,foo.###test1"], ["visible", "visible"]], |
- |
- [["##div#test1", "@@localhost$generichide"], ["visible", "visible"]], |
- [["##div#test1", "@@localhost$genericblock"], ["hidden", "visible"]], |
- [["localhost##div#test1", "@@localhost$generichide"], ["hidden", "visible"]], |
- [["~example.com##div#test1", "@@localhost$generichide"], ["visible", "visible"]], |
- [["~example.com##div#test1", "@@localhost$genericblock"], ["hidden", "visible"]], |
- [["~example.com,localhost##div#test1", "@@localhost$generichide"], ["hidden", "visible"]], |
- ]; |
- |
- function runTest([filters, expected], stage) |
- { |
- let listener = function(action) |
- { |
- if (action != "elemhideupdate") |
- return; |
- FilterNotifier.removeListener(listener); |
- |
- if (stage == 2) |
- defaultMatcher.add(Filter.fromText("@@||localhost^$document")); |
- else if (stage == 3) |
- defaultMatcher.add(Filter.fromText("@@||localhost^$~document")); |
- else if (stage == 4) |
- defaultMatcher.add(Filter.fromText("@@||localhost^$elemhide")); |
- |
- if (stage == 2 || stage == 4) |
- expected = ["visible", "visible"]; // Second and forth runs are whitelisted, nothing should be hidden |
- |
- frame.addEventListener("abp:frameready", function() |
- { |
- let frameScript = ` |
- // The "load" event doesn't mean XBL bindings are done, these will |
- // take longer to load (async messaging). Only check visibility after |
- // sending a message to parent and receiving response. |
- addMessageListener("pong", function() |
- { |
- let visibility = [ |
- content.document.getElementById("test1").offsetHeight > 0 ? "visible" : "hidden", |
- content.document.getElementById("test2").offsetHeight > 0 ? "visible" : "hidden" |
- ]; |
- sendAsyncMessage("visibility", visibility); |
- }); |
- sendAsyncMessage("ping"); |
- `; |
- frame.messageManager.addMessageListener("ping", () => frame.messageManager.sendAsyncMessage("pong")); |
- frame.messageManager.addMessageListener("visibility", (message) => |
- { |
- let visibility = message.data; |
- equal(visibility[0], expected[0], "First element visible"); |
- equal(visibility[1], expected[1], "Second element visible"); |
- |
- start(); |
- }); |
- frame.messageManager.loadFrameScript("data:text/javascript," + encodeURIComponent(frameScript), false); |
- }, false, true); |
- frame.setAttribute("src", "http://localhost:1234/test"); |
- }; |
- FilterNotifier.addListener(listener); |
- |
- for (let filter_text of filters) |
- { |
- let filter = Filter.fromText(filter_text); |
- if (filter instanceof WhitelistFilter) |
- defaultMatcher.add(filter); |
- else |
- ElemHide.add(filter); |
- } |
- |
- ElemHide.isDirty = true; |
- ElemHide.apply(); |
- } |
- |
- let stageDescriptions = { |
- 1: "running without exceptions", |
- 2: "running with whitelisted document", |
- 3: "running with exception not applying to documents", |
- 4: "running with element hiding exception", |
- }; |
- |
- for (let test = 0; test < tests.length; test++) |
- { |
- let [filters, expected] = tests[test]; |
- for (let stage = 1; stage in stageDescriptions; stage++) |
- asyncTest(filters.join(", ") + " (" + stageDescriptions[stage] + ")", runTest.bind(null, tests[test], stage)); |
- } |
-})(); |