mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
Bug 1576508 - Fix downloads.onCreated DataClone error regression due to nsIURI referrer property. r=zombie
Differential Revision: https://phabricator.services.mozilla.com/D49007 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
f2f4cc162b
commit
dea9517662
@ -104,9 +104,11 @@ class DownloadItem {
|
||||
return this.download.source.url;
|
||||
}
|
||||
get referrer() {
|
||||
return this.download.source.referrerInfo
|
||||
const uri = this.download.source.referrerInfo
|
||||
? this.download.source.referrerInfo.originalReferrer
|
||||
: null;
|
||||
|
||||
return uri && uri.spec;
|
||||
}
|
||||
get filename() {
|
||||
return this.download.target.path;
|
||||
|
@ -1,7 +1,9 @@
|
||||
[DEFAULT]
|
||||
support-files =
|
||||
head.js
|
||||
data/**
|
||||
|
||||
[browser_ext_downloads_referrer.js]
|
||||
[browser_ext_management_themes.js]
|
||||
skip-if = verify
|
||||
[browser_ext_test_mock.js]
|
||||
|
@ -0,0 +1,82 @@
|
||||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
|
||||
"use strict";
|
||||
|
||||
const { BrowserTestUtils } = ChromeUtils.import(
|
||||
"resource://testing-common/BrowserTestUtils.jsm"
|
||||
);
|
||||
|
||||
const URL_PATH = "browser/toolkit/components/extensions/test/browser/data";
|
||||
const TEST_URL = `http://example.com/${URL_PATH}/test_downloads_referrer.html`;
|
||||
const DOWNLOAD_URL = `http://example.com/${URL_PATH}/test-download.txt`;
|
||||
|
||||
async function triggerSaveAs({ selector }) {
|
||||
await BrowserTestUtils.synthesizeMouseAtCenter(
|
||||
selector,
|
||||
{ type: "contextmenu", button: 2 },
|
||||
gBrowser.selectedBrowser
|
||||
);
|
||||
let saveLinkCommand = window.document.getElementById("context-savelink");
|
||||
saveLinkCommand.doCommand();
|
||||
}
|
||||
|
||||
add_task(function test_setup() {
|
||||
const tempDir = Services.dirsvc.get("TmpD", Ci.nsIFile);
|
||||
tempDir.append("test-download-dir");
|
||||
if (!tempDir.exists()) {
|
||||
tempDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
|
||||
}
|
||||
|
||||
let MockFilePicker = SpecialPowers.MockFilePicker;
|
||||
MockFilePicker.init(window);
|
||||
registerCleanupFunction(function() {
|
||||
MockFilePicker.cleanup();
|
||||
|
||||
if (tempDir.exists()) {
|
||||
tempDir.remove(true);
|
||||
}
|
||||
});
|
||||
|
||||
MockFilePicker.displayDirectory = tempDir;
|
||||
MockFilePicker.showCallback = function(fp) {
|
||||
info("MockFilePicker: shown");
|
||||
const filename = fp.defaultString;
|
||||
info("MockFilePicker: save as " + filename);
|
||||
const destFile = tempDir.clone();
|
||||
destFile.append(filename);
|
||||
MockFilePicker.setFiles([destFile]);
|
||||
info("MockFilePicker: showCallback done");
|
||||
};
|
||||
});
|
||||
|
||||
add_task(async function test_download_item_referrer_info() {
|
||||
const extension = ExtensionTestUtils.loadExtension({
|
||||
manifest: {
|
||||
permissions: ["downloads"],
|
||||
},
|
||||
async background() {
|
||||
browser.downloads.onCreated.addListener(async downloadInfo => {
|
||||
browser.test.sendMessage("download-on-created", downloadInfo);
|
||||
});
|
||||
|
||||
// Call an API method implemented in the parent process to make sure
|
||||
// registering the downloas.onCreated event listener has been completed.
|
||||
await browser.runtime.getBrowserInfo();
|
||||
|
||||
browser.test.sendMessage("bg-page:ready");
|
||||
},
|
||||
});
|
||||
|
||||
await extension.startup();
|
||||
await extension.awaitMessage("bg-page:ready");
|
||||
|
||||
await BrowserTestUtils.withNewTab({ gBrowser, url: TEST_URL }, async () => {
|
||||
await triggerSaveAs({ selector: "a.test-link" });
|
||||
const downloadInfo = await extension.awaitMessage("download-on-created");
|
||||
is(downloadInfo.url, DOWNLOAD_URL, "Got the expected download url");
|
||||
is(downloadInfo.referrer, TEST_URL, "Got the expected referrer");
|
||||
});
|
||||
|
||||
await extension.unload();
|
||||
});
|
@ -0,0 +1 @@
|
||||
test download content
|
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test downloads referrer</title>
|
||||
</head>
|
||||
<body>
|
||||
<a href="test-download.txt" class="test-link">test link</a>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user