summaryrefslogtreecommitdiffstats
path: root/browser/components/downloads/test/browser/browser_basic_functionality.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/downloads/test/browser/browser_basic_functionality.js')
-rw-r--r--browser/components/downloads/test/browser/browser_basic_functionality.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/browser/components/downloads/test/browser/browser_basic_functionality.js b/browser/components/downloads/test/browser/browser_basic_functionality.js
new file mode 100644
index 0000000000..769f41cccf
--- /dev/null
+++ b/browser/components/downloads/test/browser/browser_basic_functionality.js
@@ -0,0 +1,59 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+registerCleanupFunction(async function () {
+ await task_resetState();
+});
+
+/**
+ * Make sure the downloads panel can display items in the right order and
+ * contains the expected data.
+ */
+add_task(async function test_basic_functionality() {
+ // Display one of each download state.
+ const DownloadData = [
+ { state: DownloadsCommon.DOWNLOAD_NOTSTARTED },
+ { state: DownloadsCommon.DOWNLOAD_PAUSED },
+ { state: DownloadsCommon.DOWNLOAD_FINISHED },
+ { state: DownloadsCommon.DOWNLOAD_FAILED },
+ { state: DownloadsCommon.DOWNLOAD_CANCELED },
+ ];
+
+ // Wait for focus first
+ await promiseFocus();
+
+ // Ensure that state is reset in case previous tests didn't finish.
+ await task_resetState();
+
+ // For testing purposes, show all the download items at once.
+ var originalCountLimit = DownloadsView.kItemCountLimit;
+ DownloadsView.kItemCountLimit = DownloadData.length;
+ registerCleanupFunction(function () {
+ DownloadsView.kItemCountLimit = originalCountLimit;
+ });
+
+ // Populate the downloads database with the data required by this test.
+ await task_addDownloads(DownloadData);
+
+ // Open the user interface and wait for data to be fully loaded.
+ await task_openPanel();
+
+ // Test item data and count. This also tests the ordering of the display.
+ let richlistbox = document.getElementById("downloadsListBox");
+ /* disabled for failing intermittently (bug 767828)
+ is(richlistbox.itemChildren.length, DownloadData.length,
+ "There is the correct number of richlistitems");
+ */
+ let itemCount = richlistbox.itemChildren.length;
+ for (let i = 0; i < itemCount; i++) {
+ let element = richlistbox.itemChildren[itemCount - i - 1];
+ let download = DownloadsView.itemForElement(element).download;
+ is(
+ DownloadsCommon.stateOfDownload(download),
+ DownloadData[i].state,
+ "Download states match up"
+ );
+ }
+});