diff options
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.xul | 173 |
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> |