summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_save_link_when_window_navigates.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/general/browser_save_link_when_window_navigates.js')
-rw-r--r--browser/base/content/test/general/browser_save_link_when_window_navigates.js173
1 files changed, 0 insertions, 173 deletions
diff --git a/browser/base/content/test/general/browser_save_link_when_window_navigates.js b/browser/base/content/test/general/browser_save_link_when_window_navigates.js
deleted file mode 100644
index 2fd10b00e..000000000
--- a/browser/base/content/test/general/browser_save_link_when_window_navigates.js
+++ /dev/null
@@ -1,173 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-var MockFilePicker = SpecialPowers.MockFilePicker;
-MockFilePicker.init(window);
-
-const SAVE_PER_SITE_PREF = "browser.download.lastDir.savePerSite";
-const ALWAYS_DOWNLOAD_DIR_PREF = "browser.download.useDownloadDir";
-const UCT_URI = "chrome://mozapps/content/downloads/unknownContentType.xul";
-
-Cc["@mozilla.org/moz/jssubscript-loader;1"]
- .getService(Ci.mozIJSSubScriptLoader)
- .loadSubScript("chrome://mochitests/content/browser/toolkit/content/tests/browser/common/mockTransfer.js",
- this);
-
-function createTemporarySaveDirectory() {
- var saveDir = Cc["@mozilla.org/file/directory_service;1"]
- .getService(Ci.nsIProperties)
- .get("TmpD", Ci.nsIFile);
- saveDir.append("testsavedir");
- if (!saveDir.exists()) {
- info("create testsavedir!");
- saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
- }
- info("return from createTempSaveDir: " + saveDir.path);
- return saveDir;
-}
-
-function triggerSave(aWindow, aCallback) {
- info("started triggerSave, persite downloads: " + (Services.prefs.getBoolPref(SAVE_PER_SITE_PREF) ? "on" : "off"));
- var fileName;
- let testBrowser = aWindow.gBrowser.selectedBrowser;
- let testURI = "http://mochi.test:8888/browser/browser/base/content/test/general/navigating_window_with_download.html";
- windowObserver.setCallback(onUCTDialog);
- testBrowser.loadURI(testURI);
-
- // Create the folder the link will be saved into.
- var destDir = createTemporarySaveDirectory();
- var destFile = destDir.clone();
-
- MockFilePicker.displayDirectory = destDir;
- MockFilePicker.showCallback = function(fp) {
- info("showCallback");
- fileName = fp.defaultString;
- info("fileName: " + fileName);
- destFile.append (fileName);
- MockFilePicker.returnFiles = [destFile];
- MockFilePicker.filterIndex = 1; // kSaveAsType_URL
- info("done showCallback");
- };
-
- mockTransferCallback = function(downloadSuccess) {
- info("mockTransferCallback");
- onTransferComplete(aWindow, downloadSuccess, destDir);
- destDir.remove(true);
- ok(!destDir.exists(), "Destination dir should be removed");
- ok(!destFile.exists(), "Destination file should be removed");
- mockTransferCallback = null;
- info("done mockTransferCallback");
- }
-
- function onUCTDialog(dialog) {
- function doLoad() {
- content.document.querySelector('iframe').remove();
- }
- testBrowser.messageManager.loadFrameScript("data:,(" + doLoad.toString() + ")()", false);
- executeSoon(continueDownloading);
- }
-
- function continueDownloading() {
- let windows = Services.wm.getEnumerator("");
- while (windows.hasMoreElements()) {
- let win = windows.getNext();
- if (win.location && win.location.href == UCT_URI) {
- win.document.documentElement._fireButtonEvent("accept");
- win.close();
- return;
- }
- }
- ok(false, "No Unknown Content Type dialog yet?");
- }
-
- function onTransferComplete(aWindow2, downloadSuccess) {
- ok(downloadSuccess, "Link should have been downloaded successfully");
- aWindow2.close();
-
- executeSoon(aCallback);
- }
-}
-
-
-var windowObserver = {
- setCallback: function(aCallback) {
- if (this._callback) {
- ok(false, "Should only be dealing with one callback at a time.");
- }
- this._callback = aCallback;
- },
- observe: function(aSubject, aTopic, aData) {
- if (aTopic != "domwindowopened") {
- return;
- }
-
- let win = aSubject.QueryInterface(Ci.nsIDOMEventTarget);
-
- win.addEventListener("load", function onLoad(event) {
- win.removeEventListener("load", onLoad, false);
-
- if (win.location == UCT_URI) {
- SimpleTest.executeSoon(function() {
- if (windowObserver._callback) {
- windowObserver._callback(win);
- delete windowObserver._callback;
- } else {
- ok(false, "Unexpected UCT dialog!");
- }
- });
- }
- }, false);
- }
-};
-
-Services.ww.registerNotification(windowObserver);
-
-function test() {
- waitForExplicitFinish();
-
- function testOnWindow(options, callback) {
- info("testOnWindow(" + options + ")");
- var win = OpenBrowserWindow(options);
- info("got " + win);
- whenDelayedStartupFinished(win, () => callback(win));
- }
-
- function whenDelayedStartupFinished(aWindow, aCallback) {
- info("whenDelayedStartupFinished");
- Services.obs.addObserver(function observer(aSubject, aTopic) {
- info("whenDelayedStartupFinished, got topic: " + aTopic + ", got subject: " + aSubject + ", waiting for " + aWindow);
- if (aWindow == aSubject) {
- Services.obs.removeObserver(observer, aTopic);
- executeSoon(aCallback);
- info("whenDelayedStartupFinished found our window");
- }
- }, "browser-delayed-startup-finished", false);
- }
-
- mockTransferRegisterer.register();
-
- registerCleanupFunction(function () {
- info("Running the cleanup code");
- mockTransferRegisterer.unregister();
- MockFilePicker.cleanup();
- Services.ww.unregisterNotification(windowObserver);
- Services.prefs.clearUserPref(ALWAYS_DOWNLOAD_DIR_PREF);
- Services.prefs.clearUserPref(SAVE_PER_SITE_PREF);
- info("Finished running the cleanup code");
- });
-
- Services.prefs.setBoolPref(ALWAYS_DOWNLOAD_DIR_PREF, false);
- testOnWindow(undefined, function(win) {
- let windowGonePromise = promiseWindowWillBeClosed(win);
- Services.prefs.setBoolPref(SAVE_PER_SITE_PREF, true);
- triggerSave(win, function() {
- windowGonePromise.then(function() {
- Services.prefs.setBoolPref(SAVE_PER_SITE_PREF, false);
- testOnWindow(undefined, function(win2) {
- triggerSave(win2, finish);
- });
- });
- });
- });
-}
-