Index: chrome/content/tests/popupBlocker.js |
=================================================================== |
--- a/chrome/content/tests/popupBlocker.js |
+++ b/chrome/content/tests/popupBlocker.js |
@@ -1,64 +1,65 @@ |
(function() |
{ |
let server = null; |
- let frame = null; |
+ let wnd = null; |
+ let tab = null; |
module("Pop-up blocker", { |
setup: function() |
{ |
prepareFilterComponents.call(this, true); |
preparePrefs.call(this); |
server = new nsHttpServer(); |
server.start(1234); |
server.registerPathHandler("/test", function(metadata, response) |
{ |
response.setStatusLine("1.1", "200", "OK"); |
response.setHeader("Content-Type", "text/html; charset=utf-8"); |
- let body = '<html><body><a id="link" href="/redirect" target="_blank">link</a></body></html>'; |
+ let body = |
+ '<body onload="document.dispatchEvent(new CustomEvent(\'abp:frameready\', {bubbles: true}));">' + |
+ '<a id="link" href="/redirect" target="_blank">link</a>' + |
+ '</body>'; |
response.bodyOutputStream.write(body, body.length); |
}); |
server.registerPathHandler("/redirect", function(metadata, response) |
{ |
response.setStatusLine("1.1", "302", "Moved Temporarily"); |
response.setHeader("Location", "http://127.0.0.1:1234/target"); |
}); |
server.registerPathHandler("/target", function(metadata, response) |
{ |
- response.setStatusLine("1.1", "302", "Moved Temporarily"); |
response.setHeader("Content-Type", "text/html; charset=utf-8"); |
let body = '<html><body>OK</body></html>'; |
response.bodyOutputStream.write(body, body.length); |
}); |
- frame = document.createElement("iframe"); |
- frame.setAttribute("src", "http://127.0.0.1:1234/test"); |
- frame.style.visibility = "collapse"; |
- document.body.appendChild(frame); |
+ wnd = UI.currentWindow; |
+ tab = wnd.gBrowser.loadOneTab("http://127.0.0.1:1234/test", {inBackground: false}); |
+ wnd.gBrowser.getBrowserForTab(tab).addEventListener("abp:frameready", function(event) |
+ { |
+ start(); |
+ }, false, true); |
stop(); |
- frame.addEventListener("load", function(event) |
- { |
- start(); |
- }, false); |
}, |
teardown: function() |
{ |
restoreFilterComponents.call(this); |
restorePrefs.call(this); |
stop(); |
server.stop(function() |
{ |
- frame.parentElement.removeChild(frame); |
+ wnd.gBrowser.removeTab(tab); |
server = null; |
frame = null; |
start(); |
}); |
} |
}); |
@@ -74,17 +75,16 @@ |
["||127.0.0.1:1234/redirect$popup,domain=128.0.0.1", true], |
]; |
function runTest(filter, result) |
{ |
FilterStorage.addFilter(filter); |
let successful = false; |
- let wnd = Utils.getChromeWindow(window); |
function onTabOpen(event) |
{ |
window.clearTimeout(timeout); |
wnd.gBrowser.tabContainer.removeEventListener("TabOpen", onTabOpen, false); |
let tab = event.target; |
let browser = wnd.gBrowser.getBrowserForTab(tab); |
@@ -111,14 +111,14 @@ |
FilterStorage.removeFilter(filter); |
start(); |
} |
wnd.gBrowser.tabContainer.addEventListener("TabOpen", onTabOpen, false); |
wnd.gBrowser.tabContainer.addEventListener("TabClose", onTabClose, false); |
let timeout = window.setTimeout(onTabClose, 1000); // In case the tab isn't opened |
- frame.contentDocument.getElementById("link").click(); |
+ wnd.gBrowser.getBrowserForTab(tab).contentDocument.getElementById("link").click(); |
} |
for (let [filter, result] of tests) |
asyncTest(filter, runTest.bind(null, Filter.fromText(filter), result)); |
})(); |