mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
130 lines
4.4 KiB
JavaScript
130 lines
4.4 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
function test() {
|
|
// initialization
|
|
waitForExplicitFinish();
|
|
let windowsToClose = [];
|
|
let testURI = "http://mochi.test:8888/browser/browser/base/content/test/bug792517.html";
|
|
let fileName;
|
|
let MockFilePicker = SpecialPowers.MockFilePicker;
|
|
let cache = Cc["@mozilla.org/network/cache-service;1"]
|
|
.getService(Ci.nsICacheService);
|
|
|
|
function checkDiskCacheFor(filename) {
|
|
let visitor = {
|
|
visitDevice: function(deviceID, deviceInfo) {
|
|
if (deviceID == "disk")
|
|
info(deviceID + " device contains " + deviceInfo.entryCount + " entries");
|
|
return deviceID == "disk";
|
|
},
|
|
|
|
visitEntry: function(deviceID, entryInfo) {
|
|
info(entryInfo.key);
|
|
is(entryInfo.key.contains(filename), false, "web content present in disk cache");
|
|
}
|
|
};
|
|
cache.visitEntries(visitor);
|
|
}
|
|
|
|
function contextMenuOpened(aWindow, event) {
|
|
cache.evictEntries(Ci.nsICache.STORE_ANYWHERE);
|
|
|
|
event.currentTarget.removeEventListener("popupshown", contextMenuOpened);
|
|
|
|
// Create the folder the image will be saved into.
|
|
var destDir = createTemporarySaveDirectory();
|
|
var destFile = destDir.clone();
|
|
|
|
MockFilePicker.displayDirectory = destDir;
|
|
MockFilePicker.showCallback = function(fp) {
|
|
fileName = fp.defaultString;
|
|
destFile.append (fileName);
|
|
MockFilePicker.returnFiles = [destFile];
|
|
MockFilePicker.filterIndex = 1; // kSaveAsType_URL
|
|
};
|
|
|
|
mockTransferCallback = onTransferComplete;
|
|
mockTransferRegisterer.register();
|
|
|
|
registerCleanupFunction(function () {
|
|
mockTransferRegisterer.unregister();
|
|
MockFilePicker.cleanup();
|
|
destDir.remove(true);
|
|
});
|
|
|
|
// Select "Save Image As" option from context menu
|
|
var saveVideoCommand = aWindow.document.getElementById("context-saveimage");
|
|
saveVideoCommand.doCommand();
|
|
|
|
event.target.hidePopup();
|
|
}
|
|
|
|
function onTransferComplete(downloadSuccess) {
|
|
ok(downloadSuccess, "Image file should have been downloaded successfully");
|
|
|
|
// Give the request a chance to finish and create a cache entry
|
|
executeSoon(function() {
|
|
checkDiskCacheFor(fileName);
|
|
finish();
|
|
});
|
|
}
|
|
|
|
function createTemporarySaveDirectory() {
|
|
var saveDir = Cc["@mozilla.org/file/directory_service;1"]
|
|
.getService(Ci.nsIProperties)
|
|
.get("TmpD", Ci.nsIFile);
|
|
saveDir.append("testsavedir");
|
|
if (!saveDir.exists())
|
|
saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0755);
|
|
return saveDir;
|
|
}
|
|
|
|
function doTest(aIsPrivateMode, aWindow, aCallback) {
|
|
aWindow.gBrowser.addEventListener("pageshow", function pageShown(event) {
|
|
if (event.target.location == "about:blank")
|
|
return;
|
|
aWindow.gBrowser.removeEventListener("pageshow", pageShown);
|
|
|
|
executeSoon(function () {
|
|
aWindow.document.addEventListener("popupshown",
|
|
function(e) contextMenuOpened(aWindow, e), false);
|
|
var img = aWindow.gBrowser.selectedBrowser.contentDocument.getElementById("img");
|
|
EventUtils.synthesizeMouseAtCenter(img,
|
|
{ type: "contextmenu", button: 2 },
|
|
aWindow.gBrowser.contentWindow);
|
|
});
|
|
});
|
|
|
|
aWindow.gBrowser.selectedBrowser.loadURI(testURI);
|
|
}
|
|
|
|
function testOnWindow(aOptions, aCallback) {
|
|
whenNewWindowLoaded(aOptions, function(aWin) {
|
|
windowsToClose.push(aWin);
|
|
// execute should only be called when need, like when you are opening
|
|
// web pages on the test. If calling executeSoon() is not necesary, then
|
|
// call whenNewWindowLoaded() instead of testOnWindow() on your test.
|
|
executeSoon(function() aCallback(aWin));
|
|
});
|
|
};
|
|
|
|
// this function is called after calling finish() on the test.
|
|
registerCleanupFunction(function() {
|
|
windowsToClose.forEach(function(aWin) {
|
|
aWin.close();
|
|
});
|
|
});
|
|
|
|
MockFilePicker.init(window);
|
|
// then test when on private mode
|
|
testOnWindow({private: true}, function(aWin) {
|
|
doTest(true, aWin, finish);
|
|
});
|
|
}
|
|
|
|
Cc["@mozilla.org/moz/jssubscript-loader;1"]
|
|
.getService(Ci.mozIJSSubScriptLoader)
|
|
.loadSubScript("chrome://mochitests/content/browser/toolkit/content/tests/browser/common/mockTransfer.js",
|
|
this);
|