summaryrefslogtreecommitdiffstats
path: root/browser/components/downloads/test/browser/browser_go_to_download_page.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/downloads/test/browser/browser_go_to_download_page.js')
-rw-r--r--browser/components/downloads/test/browser/browser_go_to_download_page.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/browser/components/downloads/test/browser/browser_go_to_download_page.js b/browser/components/downloads/test/browser/browser_go_to_download_page.js
new file mode 100644
index 0000000000..938d54ccb2
--- /dev/null
+++ b/browser/components/downloads/test/browser/browser_go_to_download_page.js
@@ -0,0 +1,93 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+const ReferrerInfo = Components.Constructor(
+ "@mozilla.org/referrer-info;1",
+ "nsIReferrerInfo",
+ "init"
+);
+
+const TEST_REFERRER = "https://example.com/";
+
+registerCleanupFunction(async function () {
+ await task_resetState();
+ await PlacesUtils.history.clear();
+});
+
+async function addDownload(referrerInfo) {
+ let startTimeMs = Date.now();
+
+ let publicList = await Downloads.getList(Downloads.PUBLIC);
+ let downloadData = {
+ source: {
+ url: "http://www.example.com/test-download.txt",
+ referrerInfo,
+ },
+ target: {
+ path: gTestTargetFile.path,
+ },
+ startTime: new Date(startTimeMs++),
+ };
+ let download = await Downloads.createDownload(downloadData);
+ await publicList.add(download);
+ await download.start();
+}
+
+/**
+ * Make sure "Go To Download Page" is enabled and works as expected.
+ */
+add_task(async function test_go_to_download_page() {
+ let referrerInfo = new ReferrerInfo(
+ Ci.nsIReferrerInfo.NO_REFERRER,
+ true,
+ NetUtil.newURI(TEST_REFERRER)
+ );
+
+ let tabPromise = BrowserTestUtils.waitForNewTab(gBrowser, TEST_REFERRER);
+
+ // Wait for focus first
+ await promiseFocus();
+
+ // Ensure that state is reset in case previous tests didn't finish.
+ await task_resetState();
+
+ // Populate the downloads database with the data required by this test.
+ await addDownload(referrerInfo);
+
+ // Open the user interface and wait for data to be fully loaded.
+ await task_openPanel();
+
+ let win = await openLibrary("Downloads");
+ registerCleanupFunction(function () {
+ win.close();
+ });
+
+ let listbox = win.document.getElementById("downloadsListBox");
+ ok(listbox, "download list box present");
+
+ // Select one of the downloads.
+ listbox.itemChildren[0].click();
+
+ let contextMenu = win.document.getElementById("downloadsContextMenu");
+
+ let popupShownPromise = BrowserTestUtils.waitForEvent(
+ contextMenu,
+ "popupshown"
+ );
+ EventUtils.synthesizeMouseAtCenter(
+ listbox.itemChildren[0],
+ { type: "contextmenu", button: 2 },
+ win
+ );
+ await popupShownPromise;
+
+ // Find and click "Go To Download Page"
+ let goToDownloadButton = [...contextMenu.children].find(
+ child => child.command == "downloadsCmd_openReferrer"
+ );
+ contextMenu.activateItem(goToDownloadButton);
+
+ let newTab = await tabPromise;
+ ok(newTab, "Go To Download Page opened a new tab");
+ gBrowser.removeTab(newTab);
+});