From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../tests/browser/browser_save_wrongextension.js | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 toolkit/mozapps/downloads/tests/browser/browser_save_wrongextension.js (limited to 'toolkit/mozapps/downloads/tests/browser/browser_save_wrongextension.js') diff --git a/toolkit/mozapps/downloads/tests/browser/browser_save_wrongextension.js b/toolkit/mozapps/downloads/tests/browser/browser_save_wrongextension.js new file mode 100644 index 0000000000..ba1b6cde5c --- /dev/null +++ b/toolkit/mozapps/downloads/tests/browser/browser_save_wrongextension.js @@ -0,0 +1,98 @@ +/* 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/. */ + +"use strict"; + +let url = + "data:text/html,Link"; + +let MockFilePicker = SpecialPowers.MockFilePicker; +MockFilePicker.init(window); + +let httpServer = null; + +add_task(async function test() { + const { HttpServer } = ChromeUtils.import( + "resource://testing-common/httpd.js" + ); + + httpServer = new HttpServer(); + httpServer.start(8000); + + function handleRequest(aRequest, aResponse) { + aResponse.setStatusLine(aRequest.httpVersion, 200); + aResponse.setHeader("Content-Type", "text/plain"); + aResponse.write("Some Text"); + } + httpServer.registerPathHandler("/thefile.js", handleRequest); + + let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url); + + let popupShownPromise = BrowserTestUtils.waitForEvent(document, "popupshown"); + + await BrowserTestUtils.synthesizeMouseAtCenter( + "#link", + { type: "contextmenu", button: 2 }, + gBrowser.selectedBrowser + ); + await popupShownPromise; + + let tempDir = createTemporarySaveDirectory(); + let destFile; + + MockFilePicker.displayDirectory = tempDir; + MockFilePicker.showCallback = fp => { + let fileName = fp.defaultString; + destFile = tempDir.clone(); + destFile.append(fileName); + + MockFilePicker.setFiles([destFile]); + MockFilePicker.filterIndex = 1; // kSaveAsType_URL + }; + + let transferCompletePromise = new Promise(resolve => { + mockTransferCallback = resolve; + mockTransferRegisterer.register(); + }); + + registerCleanupFunction(function () { + mockTransferRegisterer.unregister(); + tempDir.remove(true); + }); + + document.getElementById("context-savelink").doCommand(); + + let contextMenu = document.getElementById("contentAreaContextMenu"); + let popupHiddenPromise = BrowserTestUtils.waitForEvent( + document, + "popuphidden" + ); + contextMenu.hidePopup(); + await popupHiddenPromise; + + await transferCompletePromise; + + is(destFile.leafName, "thefile.js", "filename extension is not modified"); + + BrowserTestUtils.removeTab(tab); +}); + +add_task(async () => { + MockFilePicker.cleanup(); + await new Promise(resolve => httpServer.stop(resolve)); +}); + +Services.scriptloader.loadSubScript( + "chrome://mochitests/content/browser/toolkit/content/tests/browser/common/mockTransfer.js", + this +); + +function createTemporarySaveDirectory() { + let saveDir = Services.dirsvc.get("TmpD", Ci.nsIFile); + saveDir.append("testsavedir"); + if (!saveDir.exists()) { + saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755); + } + return saveDir; +} -- cgit v1.2.3