diff options
Diffstat (limited to 'dom/url/tests/browser_download_after_revoke.js')
-rw-r--r-- | dom/url/tests/browser_download_after_revoke.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/dom/url/tests/browser_download_after_revoke.js b/dom/url/tests/browser_download_after_revoke.js new file mode 100644 index 0000000000..8894e092e6 --- /dev/null +++ b/dom/url/tests/browser_download_after_revoke.js @@ -0,0 +1,57 @@ +function test() { + waitForExplicitFinish(); + gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser); + + function onLoad() { + info("Page loaded."); + + var listener = { + onOpenWindow(aXULWindow) { + info("Download window shown..."); + Services.wm.removeListener(listener); + + function downloadOnLoad() { + domwindow.removeEventListener("load", downloadOnLoad, true); + + is( + domwindow.document.location.href, + "chrome://mozapps/content/downloads/unknownContentType.xhtml", + "Download page appeared" + ); + + domwindow.close(); + gBrowser.removeTab(gBrowser.selectedTab); + finish(); + } + + var domwindow = aXULWindow.docShell.domWindow; + domwindow.addEventListener("load", downloadOnLoad, true); + }, + onCloseWindow(aXULWindow) {}, + }; + + Services.wm.addListener(listener); + + info("Creating BlobURL and clicking on a HTMLAnchorElement..."); + SpecialPowers.spawn(gBrowser.selectedBrowser, [], function() { + let blob = new content.Blob(["test"], { type: "text/plain" }); + let url = content.URL.createObjectURL(blob); + + let link = content.document.createElement("a"); + link.href = url; + link.download = "example.txt"; + content.document.body.appendChild(link); + link.click(); + + content.URL.revokeObjectURL(url); + }); + } + + const target = "http://example.com/browser/dom/url/tests/empty.html"; + BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser, false, target).then( + onLoad + ); + + info("Loading download page..."); + BrowserTestUtils.loadURI(gBrowser, target); +} |