summaryrefslogtreecommitdiffstats
path: root/comm/suite/components/downloads/tests/chrome/test_multiword_search.xul
diff options
context:
space:
mode:
Diffstat (limited to 'comm/suite/components/downloads/tests/chrome/test_multiword_search.xul')
-rw-r--r--comm/suite/components/downloads/tests/chrome/test_multiword_search.xul173
1 files changed, 173 insertions, 0 deletions
diff --git a/comm/suite/components/downloads/tests/chrome/test_multiword_search.xul b/comm/suite/components/downloads/tests/chrome/test_multiword_search.xul
new file mode 100644
index 0000000000..ae2817c3fa
--- /dev/null
+++ b/comm/suite/components/downloads/tests/chrome/test_multiword_search.xul
@@ -0,0 +1,173 @@
+<?xml version="1.0"?>
+<!--
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Download Manager UI Test Code.
+ *
+ * The Initial Developer of the Original Code is
+ * Edward Lee <edward.lee@engineering.uiuc.edu>.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/**
+ * Test for bug 419403 that lets the download manager support multiple word
+ * search against the download name, source/referrer, date/time, file size,
+ * etc.
+ */
+-->
+
+<window title="Download Manager Test"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload="test();">
+
+ <script src="chrome://mochikit/content/MochiKit/packed.js"/>
+ <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
+
+ <script>
+ <![CDATA[
+
+function test()
+{
+ var dm = Cc["@mozilla.org/download-manager;1"]
+ .getService(Ci.nsIDownloadManager);
+ var db = dm.DBConnection;
+
+ // Empty any old downloads
+ db.executeSimpleSQL("DELETE FROM moz_downloads");
+
+ // Make a file name for the downloads
+ var file = Services.dirsvc.get("TmpD", Ci.nsIFile);
+ file.append("multiWord");
+ var filePath = Services.io.newFileURI(file).spec;
+
+ var stmt = db.createStatement(
+ "INSERT INTO moz_downloads (name, target, source, state, endTime, maxBytes) " +
+ "VALUES (?1, ?2, ?3, ?4, ?5, ?6)");
+
+ try {
+ for (let site of ["ed.agadak.net", "mozilla.org"]) {
+ stmt.bindByIndex(0, "Super Pimped Download");
+ stmt.bindByIndex(1, filePath);
+ stmt.bindByIndex(2, "http://" + site + "/file");
+ stmt.bindByIndex(3, dm.DOWNLOAD_FINISHED);
+ stmt.bindByIndex(4, new Date(1985, 7, 2) * 1000);
+ stmt.bindByIndex(5, 111222333444);
+
+ // Add it!
+ stmt.execute();
+ }
+ } finally {
+ stmt.reset();
+ stmt.finalize();
+ }
+
+ // Close the UI if necessary
+ var win = Services.wm.getMostRecentWindow("Download:Manager");
+ if (win) win.close();
+
+ var obs = Cc["@mozilla.org/observer-service;1"]
+ .getService(Ci.nsIObserverService);
+ const DLMGR_UI_DONE = "download-manager-ui-done";
+
+ var testPhase = -1;
+ var testObs = {
+ observe: function(aSubject, aTopic, aData) {
+ if (aTopic != DLMGR_UI_DONE)
+ return;
+
+ var win = aSubject;
+ var downloadView = win.document.getElementById("downloadTree").view;
+ var searchbox = win.document.getElementById("search-box");
+
+ var search = function(aTerms) {
+ searchbox.value = aTerms;
+ searchbox.doCommand();
+ };
+
+ let testResults = function(aExpected) {
+ is(downloadView.rowCount, aExpected,
+ "Phase " + testPhase + ": search matched " + aExpected + " download(s)");
+ };
+
+ // The list must have built, so figure out what test to do
+ switch (++testPhase) {
+ case 0:
+ // Search for multiple words in any order in all places
+ search("download super pimped multiWord");
+
+ break;
+ case 1:
+ // Done populating the two items
+ testResults(2);
+
+ // Do partial word matches including the site
+ search("Agadak.net downl pimp multi");
+
+ break;
+ case 2:
+ // Done populating the one result
+ testResults(1);
+
+ // The search term shouldn't be treated like a regular expression,
+ // e.g. "D.wnload" shouldn't match "Download".
+ search("D.wnload");
+
+ break;
+ case 3:
+ testResults(0);
+
+ // We're done!
+ win.close();
+ obs.removeObserver(testObs, DLMGR_UI_DONE);
+ SimpleTest.finish();
+
+ break;
+ }
+ }
+ };
+ obs.addObserver(testObs, DLMGR_UI_DONE);
+
+ // Show the Download Manager UI
+ Cc["@mozilla.org/download-manager-ui;1"]
+ .getService(Ci.nsISuiteDownloadManagerUI)
+ .showManager();
+
+ SimpleTest.waitForExplicitFinish();
+}
+
+ ]]>
+ </script>
+
+ <body xmlns="http://www.w3.org/1999/xhtml">
+ <p id="display"></p>
+ <div id="content" style="display:none;"></div>
+ <pre id="test"></pre>
+ </body>
+</window>