summaryrefslogtreecommitdiffstats
path: root/toolkit/components/autocomplete/tests
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/autocomplete/tests')
-rw-r--r--toolkit/components/autocomplete/tests/unit/.eslintrc.js7
-rw-r--r--toolkit/components/autocomplete/tests/unit/head_autocomplete.js211
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_330578.js45
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_378079.js285
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_393191.js272
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_440866.js285
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_463023.js12
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_660156.js101
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_autocomplete_multiple.js276
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_autocomplete_userContextId.js45
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_autofillSelectedPopupIndex.js78
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_badDefaultIndex.js96
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_completeDefaultIndex_casing.js63
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_finalCompleteValue.js48
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_finalCompleteValueSelectedIndex.js119
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_finalCompleteValue_defaultIndex.js107
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_finalCompleteValue_forceComplete.js104
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_finalDefaultCompleteValue.js66
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_hiddenResult.js76
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_immediate_search.js157
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_insertMatchAt.js14
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_popupSelectionVsDefaultCompleteValue.js71
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_previousResult.js280
-rw-r--r--toolkit/components/autocomplete/tests/unit/test_stopSearch.js187
-rw-r--r--toolkit/components/autocomplete/tests/unit/xpcshell.ini26
25 files changed, 0 insertions, 3031 deletions
diff --git a/toolkit/components/autocomplete/tests/unit/.eslintrc.js b/toolkit/components/autocomplete/tests/unit/.eslintrc.js
deleted file mode 100644
index d35787cd2..000000000
--- a/toolkit/components/autocomplete/tests/unit/.eslintrc.js
+++ /dev/null
@@ -1,7 +0,0 @@
-"use strict";
-
-module.exports = {
- "extends": [
- "../../../../../testing/xpcshell/xpcshell.eslintrc.js"
- ]
-};
diff --git a/toolkit/components/autocomplete/tests/unit/head_autocomplete.js b/toolkit/components/autocomplete/tests/unit/head_autocomplete.js
deleted file mode 100644
index 5a458bdf4..000000000
--- a/toolkit/components/autocomplete/tests/unit/head_autocomplete.js
+++ /dev/null
@@ -1,211 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cu = Components.utils;
-
-/**
- * Dummy nsIAutoCompleteInput source that returns
- * the given list of AutoCompleteSearch names.
- *
- * Implements only the methods needed for this test.
- */
-function AutoCompleteInputBase(aSearches) {
- this.searches = aSearches;
-}
-AutoCompleteInputBase.prototype = {
-
- // Array of AutoCompleteSearch names
- searches: null,
-
- minResultsForPopup: 0,
- timeout: 10,
- searchParam: "",
- textValue: "",
- disableAutoComplete: false,
- completeDefaultIndex: false,
-
- // Text selection range
- _selStart: 0,
- _selEnd: 0,
- get selectionStart() {
- return this._selStart;
- },
- get selectionEnd() {
- return this._selEnd;
- },
- selectTextRange: function(aStart, aEnd) {
- this._selStart = aStart;
- this._selEnd = aEnd;
- },
-
- get searchCount() {
- return this.searches.length;
- },
-
- getSearchAt: function(aIndex) {
- return this.searches[aIndex];
- },
-
- onSearchBegin: function() {},
- onSearchComplete: function() {},
-
- popupOpen: false,
-
- get popup() {
- if (!this._popup) {
- this._popup = new AutocompletePopupBase(this);
- }
- return this._popup;
- },
-
- // nsISupports implementation
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompleteInput])
-}
-
-/**
- * nsIAutoCompleteResult implementation
- */
-function AutoCompleteResultBase(aValues) {
- this._values = aValues;
-}
-AutoCompleteResultBase.prototype = {
-
- // Arrays
- _values: null,
- _comments: [],
- _styles: [],
- _finalCompleteValues: [],
-
- searchString: "",
- searchResult: null,
-
- defaultIndex: -1,
-
- _typeAheadResult: false,
- get typeAheadResult() {
- return this._typeAheadResult;
- },
-
- get matchCount() {
- return this._values.length;
- },
-
- getValueAt: function(aIndex) {
- return this._values[aIndex];
- },
-
- getLabelAt: function(aIndex) {
- return this.getValueAt(aIndex);
- },
-
- getCommentAt: function(aIndex) {
- return this._comments[aIndex];
- },
-
- getStyleAt: function(aIndex) {
- return this._styles[aIndex];
- },
-
- getImageAt: function(aIndex) {
- return "";
- },
-
- getFinalCompleteValueAt: function(aIndex) {
- return this._finalCompleteValues[aIndex] || this._values[aIndex];
- },
-
- removeValueAt: function (aRowIndex, aRemoveFromDb) {},
-
- // nsISupports implementation
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompleteResult])
-}
-
-/**
- * nsIAutoCompleteSearch implementation that always returns
- * the same result set.
- */
-function AutoCompleteSearchBase(aName, aResult) {
- this.name = aName;
- this._result = aResult;
-}
-AutoCompleteSearchBase.prototype = {
-
- // Search name. Used by AutoCompleteController
- name: null,
-
- // AutoCompleteResult
- _result: null,
-
- startSearch: function(aSearchString,
- aSearchParam,
- aPreviousResult,
- aListener) {
- var result = this._result;
-
- result.searchResult = Ci.nsIAutoCompleteResult.RESULT_SUCCESS;
- aListener.onSearchResult(this, result);
- },
-
- stopSearch: function() {},
-
- // nsISupports implementation
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory,
- Ci.nsIAutoCompleteSearch]),
-
- // nsIFactory implementation
- createInstance: function(outer, iid) {
- return this.QueryInterface(iid);
- }
-}
-
-function AutocompletePopupBase(input) {
- this.input = input;
-}
-AutocompletePopupBase.prototype = {
- selectedIndex: 0,
- invalidate() {},
- selectBy(reverse, page) {
- let numRows = this.input.controller.matchCount;
- if (numRows > 0) {
- let delta = reverse ? -1 : 1;
- this.selectedIndex = (this.selectedIndex + delta) % numRows;
- if (this.selectedIndex < 0) {
- this.selectedIndex = numRows - 1;
- }
- }
- },
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompletePopup]),
-};
-
-/**
- * Helper to register an AutoCompleteSearch with the given name.
- * Allows the AutoCompleteController to find the search.
- */
-function registerAutoCompleteSearch(aSearch) {
- var name = "@mozilla.org/autocomplete/search;1?name=" + aSearch.name;
- var cid = Cc["@mozilla.org/uuid-generator;1"].
- getService(Ci.nsIUUIDGenerator).
- generateUUID();
-
- var desc = "Test AutoCompleteSearch";
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.registerFactory(cid, desc, name, aSearch);
-
- // Keep the id on the object so we can unregister later
- aSearch.cid = cid;
-}
-
-/**
- * Helper to unregister an AutoCompleteSearch.
- */
-function unregisterAutoCompleteSearch(aSearch) {
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.unregisterFactory(aSearch.cid, aSearch);
-}
-
diff --git a/toolkit/components/autocomplete/tests/unit/test_330578.js b/toolkit/components/autocomplete/tests/unit/test_330578.js
deleted file mode 100644
index c422dbb6a..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_330578.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-var gResultListener = {
- _lastResult: null,
- _lastValue: "",
- _lastRemoveFromDb: false,
-
- onValueRemoved: function(aResult, aValue, aRemoveFromDb) {
- this._lastResult = aResult;
- this._lastValue = aValue;
- this._lastRemoveFromDb = aRemoveFromDb;
- }
-};
-
-
-// main
-function run_test() {
- var result = Cc["@mozilla.org/autocomplete/simple-result;1"].
- createInstance(Ci.nsIAutoCompleteSimpleResult);
- result.appendMatch("a", "");
- result.appendMatch("b", "");
- result.appendMatch("c", "");
- result.setListener(gResultListener);
- do_check_eq(result.matchCount, 3);
- result.removeValueAt(0, true);
- do_check_eq(result.matchCount, 2);
- do_check_eq(gResultListener._lastResult, result);
- do_check_eq(gResultListener._lastValue, "a");
- do_check_eq(gResultListener._lastRemoveFromDb, true);
-
- result.removeValueAt(0, false);
- do_check_eq(result.matchCount, 1);
- do_check_eq(gResultListener._lastValue, "b");
- do_check_eq(gResultListener._lastRemoveFromDb, false);
-
- // check that we don't get notified if the listener is unset
- result.setListener(null);
- result.removeValueAt(0, true); // "c"
- do_check_eq(result.matchCount, 0);
- do_check_eq(gResultListener._lastValue, "b");
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_378079.js b/toolkit/components/autocomplete/tests/unit/test_378079.js
deleted file mode 100644
index ad7e5590f..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_378079.js
+++ /dev/null
@@ -1,285 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/**
- * Unit test for Bug 378079 - AutoComplete returns invalid rows when
- * more than one AutoCompleteSearch is used.
- */
-
-
-
-/**
- * Dummy nsIAutoCompleteInput source that returns
- * the given list of AutoCompleteSearch names.
- *
- * Implements only the methods needed for this test.
- */
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
-}
-AutoCompleteInput.prototype = {
- constructor: AutoCompleteInput,
-
- // Array of AutoCompleteSearch names
- searches: null,
-
- minResultsForPopup: 0,
- timeout: 10,
- searchParam: "",
- textValue: "",
- disableAutoComplete: false,
- completeDefaultIndex: false,
-
- get searchCount() {
- return this.searches.length;
- },
-
- getSearchAt: function(aIndex) {
- return this.searches[aIndex];
- },
-
- onSearchBegin: function() {},
- onSearchComplete: function() {},
-
- popupOpen: false,
-
- popup: {
- setSelectedIndex: function(aIndex) {},
- invalidate: function() {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompletePopup))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
- },
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompleteInput))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
-}
-
-
-
-/**
- * nsIAutoCompleteResult implementation
- */
-function AutoCompleteResult(aValues, aComments, aStyles) {
- this._values = aValues;
- this._comments = aComments;
- this._styles = aStyles;
-
- if (this._values.length > 0) {
- this.searchResult = Ci.nsIAutoCompleteResult.RESULT_SUCCESS;
- } else {
- this.searchResult = Ci.nsIAutoCompleteResult.NOMATCH;
- }
-}
-AutoCompleteResult.prototype = {
- constructor: AutoCompleteResult,
-
- // Arrays
- _values: null,
- _comments: null,
- _styles: null,
-
- searchString: "",
- searchResult: null,
-
- defaultIndex: 0,
-
- get matchCount() {
- return this._values.length;
- },
-
- getValueAt: function(aIndex) {
- return this._values[aIndex];
- },
-
- getLabelAt: function(aIndex) {
- return this.getValueAt(aIndex);
- },
-
- getCommentAt: function(aIndex) {
- return this._comments[aIndex];
- },
-
- getStyleAt: function(aIndex) {
- return this._styles[aIndex];
- },
-
- getImageAt: function(aIndex) {
- return "";
- },
-
- getFinalCompleteValueAt: function(aIndex) {
- return this.getValueAt(aIndex);
- },
-
- removeValueAt: function (aRowIndex, aRemoveFromDb) {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompleteResult))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
-}
-
-
-
-/**
- * nsIAutoCompleteSearch implementation that always returns
- * the same result set.
- */
-function AutoCompleteSearch(aName, aResult) {
- this.name = aName;
- this._result = aResult;
-}
-AutoCompleteSearch.prototype = {
- constructor: AutoCompleteSearch,
-
- // Search name. Used by AutoCompleteController
- name: null,
-
- // AutoCompleteResult
- _result:null,
-
-
- /**
- * Return the same result set for every search
- */
- startSearch: function(aSearchString,
- aSearchParam,
- aPreviousResult,
- aListener)
- {
- aListener.onSearchResult(this, this._result);
- },
-
- stopSearch: function() {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIFactory) ||
- iid.equals(Ci.nsIAutoCompleteSearch))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- // nsIFactory implementation
- createInstance: function(outer, iid) {
- return this.QueryInterface(iid);
- }
-}
-
-
-
-/**
- * Helper to register an AutoCompleteSearch with the given name.
- * Allows the AutoCompleteController to find the search.
- */
-function registerAutoCompleteSearch(aSearch) {
- var name = "@mozilla.org/autocomplete/search;1?name=" + aSearch.name;
-
- var uuidGenerator = Cc["@mozilla.org/uuid-generator;1"].
- getService(Ci.nsIUUIDGenerator);
- var cid = uuidGenerator.generateUUID();
-
- var desc = "Test AutoCompleteSearch";
-
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.registerFactory(cid, desc, name, aSearch);
-
- // Keep the id on the object so we can unregister later
- aSearch.cid = cid;
-}
-
-
-
-/**
- * Helper to unregister an AutoCompleteSearch.
- */
-function unregisterAutoCompleteSearch(aSearch) {
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.unregisterFactory(aSearch.cid, aSearch);
-}
-
-
-
-/**
- * Test AutoComplete with multiple AutoCompleteSearch sources.
- */
-function run_test() {
-
- // Make an AutoCompleteSearch that always returns nothing
- var emptySearch = new AutoCompleteSearch("test-empty-search",
- new AutoCompleteResult([], [], []));
-
- // Make an AutoCompleteSearch that returns two values
- var expectedValues = ["test1", "test2"];
- var regularSearch = new AutoCompleteSearch("test-regular-search",
- new AutoCompleteResult(expectedValues, [], []));
-
- // Register searches so AutoCompleteController can find them
- registerAutoCompleteSearch(emptySearch);
- registerAutoCompleteSearch(regularSearch);
-
- var controller = Components.classes["@mozilla.org/autocomplete/controller;1"].
- getService(Components.interfaces.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our searches
- // and confirms results on search complete
- var input = new AutoCompleteInput([emptySearch.name, regularSearch.name]);
- var numSearchesStarted = 0;
-
- input.onSearchBegin = function() {
- numSearchesStarted++;
- do_check_eq(numSearchesStarted, 1);
- };
-
- input.onSearchComplete = function() {
-
- do_check_eq(numSearchesStarted, 1);
-
- do_check_eq(controller.searchStatus,
- Ci.nsIAutoCompleteController.STATUS_COMPLETE_MATCH);
- do_check_eq(controller.matchCount, 2);
-
- // Confirm expected result values
- for (var i = 0; i < expectedValues.length; i++) {
- do_check_eq(expectedValues[i], controller.getValueAt(i));
- }
-
- // Unregister searches
- unregisterAutoCompleteSearch(emptySearch);
- unregisterAutoCompleteSearch(regularSearch);
-
- do_test_finished();
- };
-
- controller.input = input;
-
- // Search is asynchronous, so don't let the test finish immediately
- do_test_pending();
-
- controller.startSearch("test");
-}
-
diff --git a/toolkit/components/autocomplete/tests/unit/test_393191.js b/toolkit/components/autocomplete/tests/unit/test_393191.js
deleted file mode 100644
index 6fb57e6c4..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_393191.js
+++ /dev/null
@@ -1,272 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/**
- * Unit test for Bug 393191 - AutoComplete crashes if result is null
- */
-
-
-
-/**
- * Dummy nsIAutoCompleteInput source that returns
- * the given list of AutoCompleteSearch names.
- *
- * Implements only the methods needed for this test.
- */
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
-}
-AutoCompleteInput.prototype = {
- constructor: AutoCompleteInput,
-
- // Array of AutoCompleteSearch names
- searches: null,
-
- minResultsForPopup: 0,
- timeout: 10,
- searchParam: "",
- textValue: "",
- disableAutoComplete: false,
- completeDefaultIndex: false,
-
- get searchCount() {
- return this.searches.length;
- },
-
- getSearchAt: function(aIndex) {
- return this.searches[aIndex];
- },
-
- onSearchBegin: function() {},
- onSearchComplete: function() {},
-
- popupOpen: false,
-
- popup: {
- setSelectedIndex: function(aIndex) {},
- invalidate: function() {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompletePopup))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
- },
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompleteInput))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
-}
-
-
-
-/**
- * nsIAutoCompleteResult implementation
- */
-function AutoCompleteResult(aValues, aComments, aStyles) {
- this._values = aValues;
- this._comments = aComments;
- this._styles = aStyles;
-
- if (this._values.length > 0) {
- this.searchResult = Ci.nsIAutoCompleteResult.RESULT_SUCCESS;
- } else {
- this.searchResult = Ci.nsIAutoCompleteResult.NOMATCH;
- }
-}
-AutoCompleteResult.prototype = {
- constructor: AutoCompleteResult,
-
- // Arrays
- _values: null,
- _comments: null,
- _styles: null,
-
- searchString: "",
- searchResult: null,
-
- defaultIndex: 0,
-
- get matchCount() {
- return this._values.length;
- },
-
- getValueAt: function(aIndex) {
- return this._values[aIndex];
- },
-
- getLabelAt: function(aIndex) {
- return this.getValueAt(aIndex);
- },
-
- getCommentAt: function(aIndex) {
- return this._comments[aIndex];
- },
-
- getStyleAt: function(aIndex) {
- return this._styles[aIndex];
- },
-
- getImageAt: function(aIndex) {
- return "";
- },
-
- getFinalCompleteValueAt: function(aIndex) {
- return this.getValueAt(aIndex);
- },
-
- removeValueAt: function (aRowIndex, aRemoveFromDb) {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompleteResult))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
-}
-
-
-
-/**
- * nsIAutoCompleteSearch implementation that always returns
- * the same result set.
- */
-function AutoCompleteSearch(aName, aResult) {
- this.name = aName;
- this._result = aResult;
-}
-AutoCompleteSearch.prototype = {
- constructor: AutoCompleteSearch,
-
- // Search name. Used by AutoCompleteController
- name: null,
-
- // AutoCompleteResult
- _result: null,
-
-
- /**
- * Return the same result set for every search
- */
- startSearch: function(aSearchString,
- aSearchParam,
- aPreviousResult,
- aListener)
- {
- aListener.onSearchResult(this, this._result);
- },
-
- stopSearch: function() {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIFactory) ||
- iid.equals(Ci.nsIAutoCompleteSearch))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- // nsIFactory implementation
- createInstance: function(outer, iid) {
- return this.QueryInterface(iid);
- }
-}
-
-
-
-/**
- * Helper to register an AutoCompleteSearch with the given name.
- * Allows the AutoCompleteController to find the search.
- */
-function registerAutoCompleteSearch(aSearch) {
- var name = "@mozilla.org/autocomplete/search;1?name=" + aSearch.name;
-
- var uuidGenerator = Cc["@mozilla.org/uuid-generator;1"].
- getService(Ci.nsIUUIDGenerator);
- var cid = uuidGenerator.generateUUID();
-
- var desc = "Test AutoCompleteSearch";
-
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.registerFactory(cid, desc, name, aSearch);
-
- // Keep the id on the object so we can unregister later
- aSearch.cid = cid;
-}
-
-
-
-/**
- * Helper to unregister an AutoCompleteSearch.
- */
-function unregisterAutoCompleteSearch(aSearch) {
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.unregisterFactory(aSearch.cid, aSearch);
-}
-
-
-
-/**
- * Test AutoComplete with a search that returns a null result
- */
-function run_test() {
-
- // Make an AutoCompleteSearch that always returns nothing
- var emptySearch = new AutoCompleteSearch("test-empty-search",
- new AutoCompleteResult([], [], []));
-
- // Register search so AutoCompleteController can find them
- registerAutoCompleteSearch(emptySearch);
-
- var controller = Components.classes["@mozilla.org/autocomplete/controller;1"].
- getService(Components.interfaces.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our search
- // and confirms results on search complete
- var input = new AutoCompleteInput([emptySearch.name]);
- var numSearchesStarted = 0;
-
- input.onSearchBegin = function() {
- numSearchesStarted++;
- do_check_eq(numSearchesStarted, 1);
- };
-
- input.onSearchComplete = function() {
-
- do_check_eq(numSearchesStarted, 1);
-
- do_check_eq(controller.searchStatus,
- Ci.nsIAutoCompleteController.STATUS_COMPLETE_NO_MATCH);
- do_check_eq(controller.matchCount, 0);
-
- // Unregister searches
- unregisterAutoCompleteSearch(emptySearch);
-
- do_test_finished();
- };
-
- controller.input = input;
-
- // Search is asynchronous, so don't let the test finish immediately
- do_test_pending();
-
- controller.startSearch("test");
-}
-
diff --git a/toolkit/components/autocomplete/tests/unit/test_440866.js b/toolkit/components/autocomplete/tests/unit/test_440866.js
deleted file mode 100644
index e450aebbf..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_440866.js
+++ /dev/null
@@ -1,285 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/**
- * Unit test for Bug 440866 - First AutoCompleteSearch that returns
- * RESULT_NOMATCH cancels all other searches when popup is open
- */
-
-
-
-/**
- * Dummy nsIAutoCompleteInput source that returns
- * the given list of AutoCompleteSearch names.
- *
- * Implements only the methods needed for this test.
- */
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
-}
-AutoCompleteInput.prototype = {
- constructor: AutoCompleteInput,
-
- // Array of AutoCompleteSearch names
- searches: null,
-
- minResultsForPopup: 0,
- timeout: 10,
- searchParam: "",
- textValue: "",
- disableAutoComplete: false,
- completeDefaultIndex: false,
-
- get searchCount() {
- return this.searches.length;
- },
-
- getSearchAt: function(aIndex) {
- return this.searches[aIndex];
- },
-
- onSearchBegin: function() {},
- onSearchComplete: function() {},
-
- popupOpen: false,
-
- popup: {
- setSelectedIndex: function(aIndex) {},
- invalidate: function() {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompletePopup))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
- },
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompleteInput))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
-}
-
-
-
-/**
- * nsIAutoCompleteResult implementation
- */
-function AutoCompleteResult(aValues, aComments, aStyles) {
- this._values = aValues;
- this._comments = aComments;
- this._styles = aStyles;
-
- if (this._values.length > 0) {
- this.searchResult = Ci.nsIAutoCompleteResult.RESULT_SUCCESS;
- } else {
- this.searchResult = Ci.nsIAutoCompleteResult.NOMATCH;
- }
-}
-AutoCompleteResult.prototype = {
- constructor: AutoCompleteResult,
-
- // Arrays
- _values: null,
- _comments: null,
- _styles: null,
-
- searchString: "",
- searchResult: null,
-
- defaultIndex: 0,
-
- get matchCount() {
- return this._values.length;
- },
-
- getValueAt: function(aIndex) {
- return this._values[aIndex];
- },
-
- getLabelAt: function(aIndex) {
- return this.getValueAt(aIndex);
- },
-
- getCommentAt: function(aIndex) {
- return this._comments[aIndex];
- },
-
- getStyleAt: function(aIndex) {
- return this._styles[aIndex];
- },
-
- getImageAt: function(aIndex) {
- return "";
- },
-
- getFinalCompleteValueAt: function(aIndex) {
- return this.getValueAt(aIndex);
- },
-
- removeValueAt: function (aRowIndex, aRemoveFromDb) {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompleteResult))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
-}
-
-
-
-/**
- * nsIAutoCompleteSearch implementation that always returns
- * the same result set.
- */
-function AutoCompleteSearch(aName, aResult) {
- this.name = aName;
- this._result = aResult;
-}
-AutoCompleteSearch.prototype = {
- constructor: AutoCompleteSearch,
-
- // Search name. Used by AutoCompleteController
- name: null,
-
- // AutoCompleteResult
- _result:null,
-
-
- /**
- * Return the same result set for every search
- */
- startSearch: function(aSearchString,
- aSearchParam,
- aPreviousResult,
- aListener)
- {
- aListener.onSearchResult(this, this._result);
- },
-
- stopSearch: function() {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIFactory) ||
- iid.equals(Ci.nsIAutoCompleteSearch))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- // nsIFactory implementation
- createInstance: function(outer, iid) {
- return this.QueryInterface(iid);
- }
-}
-
-
-
-/**
- * Helper to register an AutoCompleteSearch with the given name.
- * Allows the AutoCompleteController to find the search.
- */
-function registerAutoCompleteSearch(aSearch) {
- var name = "@mozilla.org/autocomplete/search;1?name=" + aSearch.name;
-
- var uuidGenerator = Cc["@mozilla.org/uuid-generator;1"].
- getService(Ci.nsIUUIDGenerator);
- var cid = uuidGenerator.generateUUID();
-
- var desc = "Test AutoCompleteSearch";
-
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.registerFactory(cid, desc, name, aSearch);
-
- // Keep the id on the object so we can unregister later
- aSearch.cid = cid;
-}
-
-
-
-/**
- * Helper to unregister an AutoCompleteSearch.
- */
-function unregisterAutoCompleteSearch(aSearch) {
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.unregisterFactory(aSearch.cid, aSearch);
-}
-
-
-
-/**
- * Test AutoComplete with multiple AutoCompleteSearch sources.
- */
-function run_test() {
-
- // Make an AutoCompleteSearch that always returns nothing
- var emptySearch = new AutoCompleteSearch("test-empty-search",
- new AutoCompleteResult([], [], []));
-
- // Make an AutoCompleteSearch that returns two values
- var expectedValues = ["test1", "test2"];
- var regularSearch = new AutoCompleteSearch("test-regular-search",
- new AutoCompleteResult(expectedValues, [], []));
-
- // Register searches so AutoCompleteController can find them
- registerAutoCompleteSearch(emptySearch);
- registerAutoCompleteSearch(regularSearch);
-
- var controller = Components.classes["@mozilla.org/autocomplete/controller;1"].
- getService(Components.interfaces.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our searches
- // and confirms results on search complete
- var input = new AutoCompleteInput([emptySearch.name, regularSearch.name]);
- var numSearchesStarted = 0;
-
- input.onSearchBegin = function() {
- numSearchesStarted++;
- do_check_eq(numSearchesStarted, 1);
- do_check_eq(input.searchCount, 2);
- };
-
- input.onSearchComplete = function() {
- do_check_eq(numSearchesStarted, 1);
-
- do_check_eq(controller.searchStatus,
- Ci.nsIAutoCompleteController.STATUS_COMPLETE_MATCH);
- do_check_eq(controller.matchCount, 2);
-
- // Confirm expected result values
- for (var i = 0; i < expectedValues.length; i++) {
- do_check_eq(expectedValues[i], controller.getValueAt(i));
- }
-
- do_check_true(input.popupOpen);
-
- // Unregister searches
- unregisterAutoCompleteSearch(emptySearch);
- unregisterAutoCompleteSearch(regularSearch);
-
- do_test_finished();
- };
-
- controller.input = input;
-
- // Search is asynchronous, so don't let the test finish immediately
- do_test_pending();
-
- controller.startSearch("test");
-}
-
diff --git a/toolkit/components/autocomplete/tests/unit/test_463023.js b/toolkit/components/autocomplete/tests/unit/test_463023.js
deleted file mode 100644
index a2639fd03..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_463023.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-// main
-function run_test() {
- var result = Cc["@mozilla.org/autocomplete/controller;1"].
- createInstance(Ci.nsIAutoCompleteController);
- do_check_eq(result.searchStatus, Ci.nsIAutoCompleteController.STATUS_NONE);
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_660156.js b/toolkit/components/autocomplete/tests/unit/test_660156.js
deleted file mode 100644
index 98acb243e..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_660156.js
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * Search object that returns results at different times.
- * First, the search that returns results asynchronously.
- */
-function AutoCompleteAsyncSearch(aName, aResult) {
- this.name = aName;
- this._result = aResult;
-}
-AutoCompleteAsyncSearch.prototype = Object.create(AutoCompleteSearchBase.prototype);
-AutoCompleteAsyncSearch.prototype.startSearch = function(aSearchString,
- aSearchParam,
- aPreviousResult,
- aListener) {
- this._result.searchResult = Ci.nsIAutoCompleteResult.RESULT_NOMATCH_ONGOING;
- aListener.onSearchResult(this, this._result);
-
- do_timeout(500, () => {
- this._returnResults(aListener);
- });
-};
-
-AutoCompleteAsyncSearch.prototype._returnResults = function(aListener) {
- var result = this._result;
-
- result.searchResult = Ci.nsIAutoCompleteResult.RESULT_SUCCESS;
- aListener.onSearchResult(this, result);
-};
-
-/**
- * The synchronous version
- */
-function AutoCompleteSyncSearch(aName, aResult) {
- this.name = aName;
- this._result = aResult;
-}
-AutoCompleteSyncSearch.prototype = Object.create(AutoCompleteAsyncSearch.prototype);
-AutoCompleteSyncSearch.prototype.startSearch = function(aSearchString,
- aSearchParam,
- aPreviousResult,
- aListener) {
- this._returnResults(aListener);
-};
-
-/**
- * Results object
- */
-function AutoCompleteResult(aValues, aDefaultIndex) {
- this._values = aValues;
- this.defaultIndex = aDefaultIndex;
-}
-AutoCompleteResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-
-/**
- * Test AutoComplete with multiple AutoCompleteSearch sources, with one of them
- * (index != 0) returning before the rest.
- */
-function run_test() {
- do_test_pending();
-
- var results = ["mozillaTest"];
- var inputStr = "moz";
-
- // Async search
- var asyncSearch = new AutoCompleteAsyncSearch("Async",
- new AutoCompleteResult(results, -1));
- // Sync search
- var syncSearch = new AutoCompleteSyncSearch("Sync",
- new AutoCompleteResult(results, 0));
-
- // Register searches so AutoCompleteController can find them
- registerAutoCompleteSearch(asyncSearch);
- registerAutoCompleteSearch(syncSearch);
-
- var controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our searches
- // and confirms results on search complete.
- // Async search MUST be FIRST to trigger the bug this tests.
- var input = new AutoCompleteInputBase([asyncSearch.name, syncSearch.name]);
- input.completeDefaultIndex = true;
- input.textValue = inputStr;
-
- // Caret must be at the end. Autofill doesn't happen unless you're typing
- // characters at the end.
- var strLen = inputStr.length;
- input.selectTextRange(strLen, strLen);
-
- controller.input = input;
- controller.startSearch(inputStr);
-
- input.onSearchComplete = function() {
- do_check_eq(input.textValue, results[0]);
-
- // Unregister searches
- unregisterAutoCompleteSearch(asyncSearch);
- unregisterAutoCompleteSearch(syncSearch);
- do_test_finished();
- };
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_autocomplete_multiple.js b/toolkit/components/autocomplete/tests/unit/test_autocomplete_multiple.js
deleted file mode 100644
index 7fee48d55..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_autocomplete_multiple.js
+++ /dev/null
@@ -1,276 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/**
- * Dummy nsIAutoCompleteInput source that returns
- * the given list of AutoCompleteSearch names.
- *
- * Implements only the methods needed for this test.
- */
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
-}
-AutoCompleteInput.prototype = {
- constructor: AutoCompleteInput,
-
- // Array of AutoCompleteSearch names
- searches: null,
-
- minResultsForPopup: 0,
- timeout: 10,
- searchParam: "",
- textValue: "",
- disableAutoComplete: false,
- completeDefaultIndex: false,
-
- get searchCount() {
- return this.searches.length;
- },
-
- getSearchAt: function(aIndex) {
- return this.searches[aIndex];
- },
-
- onSearchBegin: function() {},
- onSearchComplete: function() {},
-
- popupOpen: false,
-
- popup: {
- setSelectedIndex: function(aIndex) {},
- invalidate: function() {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompletePopup))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
- },
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompleteInput))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
-}
-
-
-
-/**
- * nsIAutoCompleteResult implementation
- */
-function AutoCompleteResult(aValues, aComments, aStyles) {
- this._values = aValues;
- this._comments = aComments;
- this._styles = aStyles;
-}
-AutoCompleteResult.prototype = {
- constructor: AutoCompleteResult,
-
- // Arrays
- _values: null,
- _comments: null,
- _styles: null,
-
- searchString: "",
- searchResult: null,
-
- defaultIndex: 0,
-
- get matchCount() {
- return this._values.length;
- },
-
- getValueAt: function(aIndex) {
- return this._values[aIndex];
- },
-
- getLabelAt: function(aIndex) {
- return this.getValueAt(aIndex);
- },
-
- getCommentAt: function(aIndex) {
- return this._comments[aIndex];
- },
-
- getStyleAt: function(aIndex) {
- return this._styles[aIndex];
- },
-
- getImageAt: function(aIndex) {
- return "";
- },
-
- getFinalCompleteValueAt: function(aIndex) {
- return this.getValueAt(aIndex);
- },
-
- removeValueAt: function (aRowIndex, aRemoveFromDb) {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompleteResult))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
-}
-
-
-
-/**
- * nsIAutoCompleteSearch implementation that always returns
- * the same result set.
- */
-function AutoCompleteSearch(aName, aResult) {
- this.name = aName;
- this._result = aResult;
-}
-AutoCompleteSearch.prototype = {
- constructor: AutoCompleteSearch,
-
- // Search name. Used by AutoCompleteController
- name: null,
-
- // AutoCompleteResult
- _result:null,
-
-
- /**
- * Return the same result set for every search
- */
- startSearch: function(aSearchString,
- aSearchParam,
- aPreviousResult,
- aListener)
- {
- var result = this._result;
- if (result._values.length > 0) {
- result.searchResult = Ci.nsIAutoCompleteResult.RESULT_SUCCESS_ONGOING;
- } else {
- result.searchResult = Ci.nsIAutoCompleteResult.RESULT_NOMATCH_ONGOING;
- }
- aListener.onSearchResult(this, result);
-
- if (result._values.length > 0) {
- result.searchResult = Ci.nsIAutoCompleteResult.RESULT_SUCCESS;
- } else {
- result.searchResult = Ci.nsIAutoCompleteResult.RESULT_NOMATCH;
- }
- aListener.onSearchResult(this, result);
- },
-
- stopSearch: function() {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIFactory) ||
- iid.equals(Ci.nsIAutoCompleteSearch))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- // nsIFactory implementation
- createInstance: function(outer, iid) {
- return this.QueryInterface(iid);
- }
-}
-
-
-
-/**
- * Helper to register an AutoCompleteSearch with the given name.
- * Allows the AutoCompleteController to find the search.
- */
-function registerAutoCompleteSearch(aSearch) {
- var name = "@mozilla.org/autocomplete/search;1?name=" + aSearch.name;
-
- var uuidGenerator = Cc["@mozilla.org/uuid-generator;1"].
- getService(Ci.nsIUUIDGenerator);
- var cid = uuidGenerator.generateUUID();
-
- var desc = "Test AutoCompleteSearch";
-
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.registerFactory(cid, desc, name, aSearch);
-
- // Keep the id on the object so we can unregister later
- aSearch.cid = cid;
-}
-
-
-
-/**
- * Helper to unregister an AutoCompleteSearch.
- */
-function unregisterAutoCompleteSearch(aSearch) {
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.unregisterFactory(aSearch.cid, aSearch);
-}
-
-
-
-/**
- * Test AutoComplete with multiple AutoCompleteSearch sources.
- */
-function run_test() {
- var expected1 = ["1", "2", "3"];
- var expected2 = ["a", "b", "c"];
- var search1 = new AutoCompleteSearch("search1",
- new AutoCompleteResult(expected1, [], []));
- var search2 = new AutoCompleteSearch("search2",
- new AutoCompleteResult(expected2, [], []));
-
- // Register searches so AutoCompleteController can find them
- registerAutoCompleteSearch(search1);
- registerAutoCompleteSearch(search2);
-
- var controller = Components.classes["@mozilla.org/autocomplete/controller;1"].
- getService(Components.interfaces.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our searches
- // and confirms results on search complete
- var input = new AutoCompleteInput([search1.name, search2.name]);
- var numSearchesStarted = 0;
-
- input.onSearchBegin = function() {
- numSearchesStarted++;
- do_check_eq(numSearchesStarted, 1);
- };
-
- input.onSearchComplete = function() {
-
- do_check_eq(numSearchesStarted, 1);
-
- do_check_eq(controller.searchStatus,
- Ci.nsIAutoCompleteController.STATUS_COMPLETE_MATCH);
- do_check_eq(controller.matchCount, expected1.length + expected2.length);
-
- // Unregister searches
- unregisterAutoCompleteSearch(search1);
- unregisterAutoCompleteSearch(search2);
-
- do_test_finished();
- };
-
- controller.input = input;
-
- // Search is asynchronous, so don't let the test finish immediately
- do_test_pending();
-
- controller.startSearch("test");
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_autocomplete_userContextId.js b/toolkit/components/autocomplete/tests/unit/test_autocomplete_userContextId.js
deleted file mode 100644
index c98db7f8f..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_autocomplete_userContextId.js
+++ /dev/null
@@ -1,45 +0,0 @@
-"use strict";
-
-Cu.import("resource://gre/modules/Promise.jsm");
-
-function AutoCompleteInput(aSearches, aUserContextId) {
- this.searches = aSearches;
- this.userContextId = aUserContextId;
- this.popup.selectedIndex = -1;
-}
-AutoCompleteInput.prototype = Object.create(AutoCompleteInputBase.prototype);
-
-function AutoCompleteSearch(aName) {
- this.name = aName;
-}
-AutoCompleteSearch.prototype = Object.create(AutoCompleteSearchBase.prototype);
-
-add_task(function *test_userContextId() {
- let searchParam = yield doSearch("test", 1);
- Assert.equal(searchParam, " user-context-id:1");
-});
-
-function doSearch(aString, aUserContextId) {
- let deferred = Promise.defer();
- let search = new AutoCompleteSearch("test");
-
- search.startSearch = function (aSearchString,
- aSearchParam,
- aPreviousResult,
- aListener) {
- unregisterAutoCompleteSearch(search);
- deferred.resolve(aSearchParam);
- };
-
- registerAutoCompleteSearch(search);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- let input = new AutoCompleteInput([ search.name ], aUserContextId);
- controller.input = input;
- controller.startSearch(aString);
-
- return deferred.promise;
- }
-
diff --git a/toolkit/components/autocomplete/tests/unit/test_autofillSelectedPopupIndex.js b/toolkit/components/autocomplete/tests/unit/test_autofillSelectedPopupIndex.js
deleted file mode 100644
index 5fb93abc1..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_autofillSelectedPopupIndex.js
+++ /dev/null
@@ -1,78 +0,0 @@
-"use strict";
-
-add_task(function* sameCaseAsMatch() {
- yield runTest("moz");
-});
-
-add_task(function* differentCaseFromMatch() {
- yield runTest("MOZ");
-});
-
-function* runTest(searchStr) {
- let matches = [
- "mozilla.org",
- "example.com",
- ];
- let result = new AutoCompleteResultBase(matches);
- result.defaultIndex = 0;
-
- let search = new AutoCompleteSearchBase("search", result);
- registerAutoCompleteSearch(search);
-
- let input = new AutoCompleteInputBase([search.name]);
- input.completeSelectedIndex = true;
- input.completeDefaultIndex = true;
-
- // Start off with the search string in the input. The selection must be
- // collapsed and the caret must be at the end to trigger autofill below.
- input.textValue = searchStr;
- input.selectTextRange(searchStr.length, searchStr.length);
- Assert.equal(input.selectionStart, searchStr.length,
- "Selection should start at the end of the input");
- Assert.equal(input.selectionEnd, searchStr.length,
- "Selection should end at the end of the input");
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- createInstance(Ci.nsIAutoCompleteController);
- controller.input = input;
- input.controller = controller;
-
- // Start a search.
- yield new Promise(resolve => {
- controller.startSearch(searchStr);
- input.onSearchComplete = () => {
- // The first match should have autofilled, but the case of the search
- // string should be preserved.
- let expectedValue = searchStr + matches[0].substr(searchStr.length);
- Assert.equal(input.textValue, expectedValue,
- "Should have autofilled");
- Assert.equal(input.selectionStart, searchStr.length,
- "Selection should start after search string");
- Assert.equal(input.selectionEnd, expectedValue.length,
- "Selection should end at the end of the input");
- resolve();
- };
- });
-
- // Key down to select the second match in the popup.
- controller.handleKeyNavigation(Ci.nsIDOMKeyEvent.DOM_VK_DOWN);
- let expectedValue = matches[1];
- Assert.equal(input.textValue, expectedValue,
- "Should have filled second match");
- Assert.equal(input.selectionStart, expectedValue.length,
- "Selection should start at the end of the input");
- Assert.equal(input.selectionEnd, expectedValue.length,
- "Selection should end at the end of the input");
-
- // Key up to select the first match again. The input should be restored
- // exactly as it was when the first match was autofilled above: the search
- // string's case should be preserved, and the selection should be preserved.
- controller.handleKeyNavigation(Ci.nsIDOMKeyEvent.DOM_VK_UP);
- expectedValue = searchStr + matches[0].substr(searchStr.length);
- Assert.equal(input.textValue, expectedValue,
- "Should have filled first match again");
- Assert.equal(input.selectionStart, searchStr.length,
- "Selection should start after search string again");
- Assert.equal(input.selectionEnd, expectedValue.length,
- "Selection should end at the end of the input again");
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_badDefaultIndex.js b/toolkit/components/autocomplete/tests/unit/test_badDefaultIndex.js
deleted file mode 100644
index 17f735388..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_badDefaultIndex.js
+++ /dev/null
@@ -1,96 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/**
- * A results that wants to defaultComplete to 0, but it has no matches,
- * though it notifies SUCCESS to the controller.
- */
-function AutoCompleteNoMatchResult() {
- this.defaultIndex = 0;
-}
-AutoCompleteNoMatchResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-/**
- * A results that wants to defaultComplete to an index greater than the number
- * of matches.
- */
-function AutoCompleteBadIndexResult(aValues, aDefaultIndex) {
- do_check_true(aValues.length <= aDefaultIndex);
- this._values = aValues;
- this.defaultIndex = aDefaultIndex;
-}
-AutoCompleteBadIndexResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-add_test(function autocomplete_noMatch_success() {
- const INPUT_STR = "moz";
-
- let searchNoMatch =
- new AutoCompleteSearchBase("searchNoMatch",
- new AutoCompleteNoMatchResult());
- registerAutoCompleteSearch(searchNoMatch);
-
- // Make an AutoCompleteInput that uses our search and confirms results.
- let input = new AutoCompleteInputBase([searchNoMatch.name]);
- input.completeDefaultIndex = true;
- input.textValue = INPUT_STR;
-
- // Caret must be at the end for autoFill to happen.
- let strLen = INPUT_STR.length;
- input.selectTextRange(strLen, strLen);
- do_check_eq(input.selectionStart, strLen);
- do_check_eq(input.selectionEnd, strLen);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
- controller.input = input;
- controller.startSearch(INPUT_STR);
-
- input.onSearchComplete = function () {
- // Should not try to autoFill to an empty value.
- do_check_eq(input.textValue, "moz");
-
- // Clean up.
- unregisterAutoCompleteSearch(searchNoMatch);
- run_next_test();
- };
-});
-
-add_test(function autocomplete_defaultIndex_exceeds_matchCount() {
- const INPUT_STR = "moz";
-
- // Result returning matches, but a bad defaultIndex.
- let searchBadIndex =
- new AutoCompleteSearchBase("searchBadIndex",
- new AutoCompleteBadIndexResult(["mozillaTest"], 1));
- registerAutoCompleteSearch(searchBadIndex);
-
- // Make an AutoCompleteInput that uses our search and confirms results.
- let input = new AutoCompleteInputBase([searchBadIndex.name]);
- input.completeDefaultIndex = true;
- input.textValue = INPUT_STR;
-
- // Caret must be at the end for autoFill to happen.
- let strLen = INPUT_STR.length;
- input.selectTextRange(strLen, strLen);
- do_check_eq(input.selectionStart, strLen);
- do_check_eq(input.selectionEnd, strLen);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
- controller.input = input;
- controller.startSearch(INPUT_STR);
-
- input.onSearchComplete = function () {
- // Should not try to autoFill to an empty value.
- do_check_eq(input.textValue, "moz");
-
- // Clean up.
- unregisterAutoCompleteSearch(searchBadIndex);
- run_next_test();
- };
-});
-
-function run_test() {
- run_next_test();
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_completeDefaultIndex_casing.js b/toolkit/components/autocomplete/tests/unit/test_completeDefaultIndex_casing.js
deleted file mode 100644
index c25b00907..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_completeDefaultIndex_casing.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-function AutoCompleteResult(aValues) {
- this._values = aValues;
- this.defaultIndex = 0;
-}
-AutoCompleteResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
- this.popup.selectedIndex = -1;
- this.completeDefaultIndex = true;
-}
-AutoCompleteInput.prototype = Object.create(AutoCompleteInputBase.prototype);
-
-function run_test() {
- run_next_test();
-}
-
-add_test(function test_keyNavigation() {
- doSearch("MOZ", "mozilla", function(aController) {
- do_check_eq(aController.input.textValue, "MOZilla");
- aController.handleKeyNavigation(Ci.nsIDOMKeyEvent.DOM_VK_RIGHT);
- do_check_eq(aController.input.textValue, "mozilla");
- });
-});
-
-add_test(function test_handleEnter() {
- doSearch("MOZ", "mozilla", function(aController) {
- do_check_eq(aController.input.textValue, "MOZilla");
- aController.handleEnter(false);
- do_check_eq(aController.input.textValue, "mozilla");
- });
-});
-
-function doSearch(aSearchString, aResultValue, aOnCompleteCallback) {
- let search = new AutoCompleteSearchBase("search",
- new AutoCompleteResult([ "mozilla", "toolkit" ], 0));
- registerAutoCompleteSearch(search);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our searches and confirms results.
- let input = new AutoCompleteInput([ search.name ]);
- input.textValue = aSearchString;
-
- // Caret must be at the end for autofill to happen.
- let strLen = aSearchString.length;
- input.selectTextRange(strLen, strLen);
- controller.input = input;
- controller.startSearch(aSearchString);
-
- input.onSearchComplete = function onSearchComplete() {
- aOnCompleteCallback(controller);
-
- // Clean up.
- unregisterAutoCompleteSearch(search);
- run_next_test();
- };
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_finalCompleteValue.js b/toolkit/components/autocomplete/tests/unit/test_finalCompleteValue.js
deleted file mode 100644
index fcac8ae43..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_finalCompleteValue.js
+++ /dev/null
@@ -1,48 +0,0 @@
-function AutoCompleteResult(aValues, aFinalCompleteValues) {
- this._values = aValues;
- this._finalCompleteValues = aFinalCompleteValues;
-}
-AutoCompleteResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
- this.popup.selectedIndex = 0;
-}
-AutoCompleteInput.prototype = Object.create(AutoCompleteInputBase.prototype);
-
-add_test(function test_handleEnter_mouse() {
- doSearch("moz", "mozilla.com", "http://www.mozilla.com", function(aController) {
- do_check_eq(aController.input.textValue, "moz");
- do_check_eq(aController.getFinalCompleteValueAt(0), "http://www.mozilla.com");
- // Keyboard interaction is tested by test_finalCompleteValueSelectedIndex.js
- // so here just test popup selection.
- aController.handleEnter(true);
- do_check_eq(aController.input.textValue, "http://www.mozilla.com");
- });
-});
-
-function doSearch(aSearchString, aResultValue, aFinalCompleteValue, aOnCompleteCallback) {
- let search = new AutoCompleteSearchBase(
- "search",
- new AutoCompleteResult([ aResultValue ], [ aFinalCompleteValue ])
- );
- registerAutoCompleteSearch(search);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our searches and confirms results.
- let input = new AutoCompleteInput([ search.name ]);
- input.textValue = aSearchString;
-
- controller.input = input;
- controller.startSearch(aSearchString);
-
- input.onSearchComplete = function onSearchComplete() {
- aOnCompleteCallback(controller);
-
- // Clean up.
- unregisterAutoCompleteSearch(search);
- run_next_test();
- };
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_finalCompleteValueSelectedIndex.js b/toolkit/components/autocomplete/tests/unit/test_finalCompleteValueSelectedIndex.js
deleted file mode 100644
index 6556a26dc..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_finalCompleteValueSelectedIndex.js
+++ /dev/null
@@ -1,119 +0,0 @@
-function AutoCompleteResult(aResultValues) {
- this._values = aResultValues.map(x => x[0]);
- this._finalCompleteValues = aResultValues.map(x => x[1]);
-}
-AutoCompleteResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-var selectByWasCalled = false;
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
- this.popup.selectedIndex = 0;
- this.popup.selectBy = function(reverse, page) {
- Assert.equal(selectByWasCalled, false);
- selectByWasCalled = true;
- Assert.equal(reverse, false);
- Assert.equal(page, false);
- this.selectedIndex += (reverse ? -1 : 1) * (page ? 100 : 1);
- };
- this.completeSelectedIndex = true;
-}
-AutoCompleteInput.prototype = Object.create(AutoCompleteInputBase.prototype);
-
-add_test(function test_handleEnter_key() {
- let results = [
- ["mozilla.com", "http://www.mozilla.com"],
- ["mozilla.org", "http://www.mozilla.org"],
- ];
- // First check the case where we do select a value with the keyboard:
- doSearch("moz", results, function(aController) {
- Assert.equal(aController.input.textValue, "moz");
- Assert.equal(aController.getFinalCompleteValueAt(0), "http://www.mozilla.com");
- Assert.equal(aController.getFinalCompleteValueAt(1), "http://www.mozilla.org");
-
- Assert.equal(aController.input.popup.selectedIndex, 0);
- aController.handleKeyNavigation(Ci.nsIDOMKeyEvent.DOM_VK_DOWN);
- Assert.equal(aController.input.popup.selectedIndex, 1);
- // Simulate mouse interaction changing selectedIndex
- // ie NOT keyboard interaction:
- aController.input.popup.selectedIndex = 0;
-
- aController.handleEnter(false);
- // Verify that the keyboard-selected thing got inserted,
- // and not the mouse selection:
- Assert.equal(aController.input.textValue, "http://www.mozilla.org");
- });
-});
-
-add_test(function test_handleEnter_mouse() {
- let results = [
- ["mozilla.com", "http://www.mozilla.com"],
- ["mozilla.org", "http://www.mozilla.org"],
- ];
- // Then the case where we do not:
- doSearch("moz", results, function(aController) {
- Assert.equal(aController.input.textValue, "moz");
- Assert.equal(aController.getFinalCompleteValueAt(0), "http://www.mozilla.com");
- Assert.equal(aController.getFinalCompleteValueAt(1), "http://www.mozilla.org");
-
- Assert.equal(aController.input.popup.selectedIndex, 0);
- aController.input.popupOpen = true;
- // Simulate mouse interaction changing selectedIndex
- // ie NOT keyboard interaction:
- aController.input.popup.selectedIndex = 1;
- Assert.equal(selectByWasCalled, false);
- Assert.equal(aController.input.popup.selectedIndex, 1);
-
- aController.handleEnter(false);
- // Verify that the input stayed the same, because no selection was made
- // with the keyboard:
- Assert.equal(aController.input.textValue, "moz");
- });
-});
-
-add_test(function test_handleEnter_preselected() {
- let results = [
- ["mozilla.com", "http://www.mozilla.com"],
- ["mozilla.org", "http://www.mozilla.org"],
- ];
- // Then test a preselection.
- doSearch("moz", results, function(aController) {
- Assert.equal(aController.input.textValue, "moz");
- Assert.equal(aController.getFinalCompleteValueAt(0), "http://www.mozilla.com");
- Assert.equal(aController.getFinalCompleteValueAt(1), "http://www.mozilla.org");
-
- aController.setInitiallySelectedIndex(0);
-
- aController.handleEnter(false);
- // Verify that the input stayed the same, because no selection was made
- // with the keyboard:
- Assert.equal(aController.input.textValue, "http://www.mozilla.com");
- });
-});
-
-function doSearch(aSearchString, aResults, aOnCompleteCallback) {
- selectByWasCalled = false;
- let search = new AutoCompleteSearchBase(
- "search",
- new AutoCompleteResult(aResults)
- );
- registerAutoCompleteSearch(search);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our searches and confirms results.
- let input = new AutoCompleteInput([ search.name ]);
- input.textValue = aSearchString;
-
- controller.input = input;
- controller.startSearch(aSearchString);
-
- input.onSearchComplete = function onSearchComplete() {
- aOnCompleteCallback(controller);
-
- // Clean up.
- unregisterAutoCompleteSearch(search);
- run_next_test();
- };
-}
-
diff --git a/toolkit/components/autocomplete/tests/unit/test_finalCompleteValue_defaultIndex.js b/toolkit/components/autocomplete/tests/unit/test_finalCompleteValue_defaultIndex.js
deleted file mode 100644
index 4942e7a9f..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_finalCompleteValue_defaultIndex.js
+++ /dev/null
@@ -1,107 +0,0 @@
-function AutoCompleteResult(aResultValues) {
- this.defaultIndex = 0;
- this._values = aResultValues.map(x => x[0]);
- this._finalCompleteValues = aResultValues.map(x => x[1]);
-}
-AutoCompleteResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
- this.popup.selectedIndex = 0;
- this.completeSelectedIndex = true;
- this.completeDefaultIndex = true;
-}
-AutoCompleteInput.prototype = Object.create(AutoCompleteInputBase.prototype);
-
-add_test(function test_handleEnter() {
- let results = [
- ["mozilla.com", "https://www.mozilla.com"],
- ["gomozilla.org", "http://www.gomozilla.org"],
- ];
- doSearch("moz", results, { selectedIndex: 0 }, controller => {
- let input = controller.input;
- Assert.equal(input.textValue, "mozilla.com");
- Assert.equal(controller.getFinalCompleteValueAt(0), results[0][1]);
- Assert.equal(controller.getFinalCompleteValueAt(1), results[1][1]);
- Assert.equal(input.popup.selectedIndex, 0);
-
- controller.handleEnter(false);
- // Verify that the keyboard-selected thing got inserted,
- // and not the mouse selection:
- Assert.equal(controller.input.textValue, "https://www.mozilla.com");
- });
-});
-
-add_test(function test_handleEnter_otherSelected() {
- // The popup selection may not coincide with what is filled into the input
- // field, for example if the user changed it with the mouse and then pressed
- // Enter. In such a case we should still use the inputField value and not the
- // popup selected value.
- let results = [
- ["mozilla.com", "https://www.mozilla.com"],
- ["gomozilla.org", "http://www.gomozilla.org"],
- ];
- doSearch("moz", results, { selectedIndex: 1 }, controller => {
- let input = controller.input;
- Assert.equal(input.textValue, "mozilla.com");
- Assert.equal(controller.getFinalCompleteValueAt(0), results[0][1]);
- Assert.equal(controller.getFinalCompleteValueAt(1), results[1][1]);
- Assert.equal(input.popup.selectedIndex, 1);
-
- controller.handleEnter(false);
- // Verify that the keyboard-selected thing got inserted,
- // and not the mouse selection:
- Assert.equal(controller.input.textValue, "https://www.mozilla.com");
- });
-});
-
-add_test(function test_handleEnter_otherSelected_nocompleteselectedindex() {
- let results = [
- ["mozilla.com", "https://www.mozilla.com"],
- ["gomozilla.org", "http://www.gomozilla.org"],
- ];
- doSearch("moz", results, { selectedIndex: 1,
- completeSelectedIndex: false }, controller => {
- let input = controller.input;
- Assert.equal(input.textValue, "mozilla.com");
- Assert.equal(controller.getFinalCompleteValueAt(0), results[0][1]);
- Assert.equal(controller.getFinalCompleteValueAt(1), results[1][1]);
- Assert.equal(input.popup.selectedIndex, 1);
-
- controller.handleEnter(false);
- // Verify that the keyboard-selected result is inserted, not the
- // defaultComplete.
- Assert.equal(controller.input.textValue, "http://www.gomozilla.org");
- });
-});
-
-function doSearch(aSearchString, aResults, aOptions, aOnCompleteCallback) {
- let search = new AutoCompleteSearchBase(
- "search",
- new AutoCompleteResult(aResults)
- );
- registerAutoCompleteSearch(search);
-
- let input = new AutoCompleteInput([ search.name ]);
- input.textValue = aSearchString;
- if ("selectedIndex" in aOptions) {
- input.popup.selectedIndex = aOptions.selectedIndex;
- }
- if ("completeSelectedIndex" in aOptions) {
- input.completeSelectedIndex = aOptions.completeSelectedIndex;
- }
- // Needed for defaultIndex completion.
- input.selectTextRange(aSearchString.length, aSearchString.length);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
- controller.input = input;
- controller.startSearch(aSearchString);
-
- input.onSearchComplete = function onSearchComplete() {
- aOnCompleteCallback(controller);
-
- unregisterAutoCompleteSearch(search);
- run_next_test();
- };
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_finalCompleteValue_forceComplete.js b/toolkit/components/autocomplete/tests/unit/test_finalCompleteValue_forceComplete.js
deleted file mode 100644
index 5642d3e3e..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_finalCompleteValue_forceComplete.js
+++ /dev/null
@@ -1,104 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-function AutoCompleteResult(aValues, aFinalCompleteValues) {
- this._values = aValues;
- this._finalCompleteValues = aFinalCompleteValues;
- this.defaultIndex = 0;
-}
-AutoCompleteResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
- this.popup.selectedIndex = -1;
-}
-AutoCompleteInput.prototype = Object.create(AutoCompleteInputBase.prototype);
-
-function run_test() {
- run_next_test();
-}
-
-add_test(function test_handleEnterWithDirectMatchCompleteSelectedIndex() {
- doSearch("moz", "mozilla.com", "http://www.mozilla.com",
- { forceComplete: true, completeSelectedIndex: true }, function(aController) {
- do_check_eq(aController.input.textValue, "moz");
- do_check_eq(aController.getFinalCompleteValueAt(0), "http://www.mozilla.com");
- aController.handleEnter(false);
- // After enter the final complete value should be shown in the input.
- do_check_eq(aController.input.textValue, "http://www.mozilla.com");
- });
-});
-
-add_test(function test_handleEnterWithDirectMatch() {
- doSearch("mozilla", "mozilla.com", "http://www.mozilla.com",
- { forceComplete: true, completeDefaultIndex: true }, function(aController) {
- // Should autocomplete the search string to a suggestion.
- do_check_eq(aController.input.textValue, "mozilla.com");
- do_check_eq(aController.getFinalCompleteValueAt(0), "http://www.mozilla.com");
- aController.handleEnter(false);
- // After enter the final complete value should be shown in the input.
- do_check_eq(aController.input.textValue, "http://www.mozilla.com");
- });
-});
-
-add_test(function test_handleEnterWithNoMatch() {
- doSearch("mozilla", "mozilla.com", "http://www.mozilla.com",
- { forceComplete: true, completeDefaultIndex: true }, function(aController) {
- // Should autocomplete the search string to a suggestion.
- do_check_eq(aController.input.textValue, "mozilla.com");
- do_check_eq(aController.getFinalCompleteValueAt(0), "http://www.mozilla.com");
- // Now input something that does not match...
- aController.input.textValue = "mozillax";
- // ... and confirm. We don't want one of the values from the previous
- // results to be taken, since what's now in the input field doesn't match.
- aController.handleEnter(false);
- do_check_eq(aController.input.textValue, "mozillax");
- });
-});
-
-add_test(function test_handleEnterWithIndirectMatch() {
- doSearch("com", "mozilla.com", "http://www.mozilla.com",
- { forceComplete: true, completeDefaultIndex: true }, function(aController) {
- // Should autocomplete the search string to a suggestion.
- do_check_eq(aController.input.textValue, "com >> mozilla.com");
- do_check_eq(aController.getFinalCompleteValueAt(0), "http://www.mozilla.com");
- aController.handleEnter(false);
- // After enter the final complete value from the suggestion should be shown
- // in the input.
- do_check_eq(aController.input.textValue, "http://www.mozilla.com");
- });
-});
-
-function doSearch(aSearchString, aResultValue, aFinalCompleteValue,
- aInputProps, aOnCompleteCallback) {
- let search = new AutoCompleteSearchBase(
- "search",
- new AutoCompleteResult([ aResultValue ], [ aFinalCompleteValue ])
- );
- registerAutoCompleteSearch(search);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our searches and confirms results.
- let input = new AutoCompleteInput([ search.name ]);
- for (var p in aInputProps) {
- input[p] = aInputProps[p];
- }
- input.textValue = aSearchString;
- // Place the cursor at the end of the input so that completion to
- // default index will kick in.
- input.selectTextRange(aSearchString.length, aSearchString.length);
-
- controller.input = input;
- controller.startSearch(aSearchString);
-
- input.onSearchComplete = function onSearchComplete() {
- aOnCompleteCallback(controller);
-
- // Clean up.
- unregisterAutoCompleteSearch(search);
- run_next_test();
- };
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_finalDefaultCompleteValue.js b/toolkit/components/autocomplete/tests/unit/test_finalDefaultCompleteValue.js
deleted file mode 100644
index c983d969b..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_finalDefaultCompleteValue.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-function AutoCompleteResult(aValues, aFinalCompleteValues) {
- this._values = aValues;
- this._finalCompleteValues = aFinalCompleteValues;
- this.defaultIndex = 0;
-}
-AutoCompleteResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
- this.popup.selectedIndex = -1;
- this.completeDefaultIndex = true;
-}
-AutoCompleteInput.prototype = Object.create(AutoCompleteInputBase.prototype);
-
-function run_test() {
- run_next_test();
-}
-
-add_test(function test_keyNavigation() {
- doSearch("moz", "mozilla.com", "http://www.mozilla.com", function(aController) {
- do_check_eq(aController.input.textValue, "mozilla.com");
- aController.handleKeyNavigation(Ci.nsIDOMKeyEvent.DOM_VK_RIGHT);
- do_check_eq(aController.input.textValue, "mozilla.com");
- });
-});
-
-add_test(function test_handleEnter() {
- doSearch("moz", "mozilla.com", "http://www.mozilla.com", function(aController) {
- do_check_eq(aController.input.textValue, "mozilla.com");
- aController.handleEnter(false);
- do_check_eq(aController.input.textValue, "http://www.mozilla.com");
- });
-});
-
-function doSearch(aSearchString, aResultValue, aFinalCompleteValue, aOnCompleteCallback) {
- let search = new AutoCompleteSearchBase(
- "search",
- new AutoCompleteResult([ aResultValue ], [ aFinalCompleteValue ])
- );
- registerAutoCompleteSearch(search);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our searches and confirms results.
- let input = new AutoCompleteInput([ search.name ]);
- input.textValue = aSearchString;
-
- // Caret must be at the end for autofill to happen.
- let strLen = aSearchString.length;
- input.selectTextRange(strLen, strLen);
- controller.input = input;
- controller.startSearch(aSearchString);
-
- input.onSearchComplete = function onSearchComplete() {
- aOnCompleteCallback(controller);
-
- // Clean up.
- unregisterAutoCompleteSearch(search);
- run_next_test();
- };
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_hiddenResult.js b/toolkit/components/autocomplete/tests/unit/test_hiddenResult.js
deleted file mode 100644
index 8e2485716..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_hiddenResult.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function AutoCompleteResult(aValues) {
- this._values = aValues;
- this.defaultIndex = -1;
- this._typeAheadResult = false;
-}
-AutoCompleteResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-function AutoCompleteTypeAheadResult(aValues) {
- this._values = aValues;
- this.defaultIndex = 0;
- this._typeAheadResult = true;
-}
-AutoCompleteTypeAheadResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-
-/**
- * Test AutoComplete with multiple AutoCompleteSearch sources, with one of them
- * being hidden from the popup, but can still do typeahead completion.
- */
-function run_test() {
- do_test_pending();
-
- var inputStr = "moz";
-
- // Type ahead result
- var searchTypeAhead = new AutoCompleteSearchBase("search1",
- new AutoCompleteTypeAheadResult(["mozillaTest1"]));
- // Regular result
- var searchNormal = new AutoCompleteSearchBase("search2",
- new AutoCompleteResult(["mozillaTest2"]));
-
- // Register searches so AutoCompleteController can find them
- registerAutoCompleteSearch(searchNormal);
- registerAutoCompleteSearch(searchTypeAhead);
-
- // Make an AutoCompleteInput that uses our searches
- // and confirms results on search complete.
- var input = new AutoCompleteInputBase([searchTypeAhead.name, searchNormal.name]);
- input.completeDefaultIndex = true;
- input.textValue = inputStr;
-
- // Caret must be at the end. Autofill doesn't happen unless you're typing
- // characters at the end.
- var strLen = inputStr.length;
- input.selectTextRange(strLen, strLen);
- do_check_eq(input.selectionStart, strLen);
- do_check_eq(input.selectionEnd, strLen);
-
- var controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- controller.input = input;
- controller.startSearch(inputStr);
-
- input.onSearchComplete = function() {
- // Hidden results should still be able to do inline autocomplete
- do_check_eq(input.textValue, "mozillaTest1");
-
- // Now, let's fill the textbox with the first result of the popup.
- // The first search is marked as hidden, so we must always get the
- // second search.
- controller.handleEnter(true);
- do_check_eq(input.textValue, "mozillaTest2");
-
- // Only one item in the popup.
- do_check_eq(controller.matchCount, 1);
-
- // Unregister searches
- unregisterAutoCompleteSearch(searchNormal);
- unregisterAutoCompleteSearch(searchTypeAhead);
- do_test_finished();
- };
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_immediate_search.js b/toolkit/components/autocomplete/tests/unit/test_immediate_search.js
deleted file mode 100644
index 0579f5dcb..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_immediate_search.js
+++ /dev/null
@@ -1,157 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-
-function AutoCompleteImmediateSearch(aName, aResult) {
- this.name = aName;
- this._result = aResult;
-}
-AutoCompleteImmediateSearch.prototype = Object.create(AutoCompleteSearchBase.prototype);
-AutoCompleteImmediateSearch.prototype.searchType =
- Ci.nsIAutoCompleteSearchDescriptor.SEARCH_TYPE_IMMEDIATE;
-AutoCompleteImmediateSearch.prototype.QueryInterface =
- XPCOMUtils.generateQI([Ci.nsIFactory,
- Ci.nsIAutoCompleteSearch,
- Ci.nsIAutoCompleteSearchDescriptor]);
-
-function AutoCompleteDelayedSearch(aName, aResult) {
- this.name = aName;
- this._result = aResult;
-}
-AutoCompleteDelayedSearch.prototype = Object.create(AutoCompleteSearchBase.prototype);
-
-function AutoCompleteResult(aValues, aDefaultIndex) {
- this._values = aValues;
- this.defaultIndex = aDefaultIndex;
-}
-AutoCompleteResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-function run_test() {
- run_next_test();
-}
-
-/**
- * An immediate search should be executed synchronously.
- */
-add_test(function test_immediate_search() {
- let inputStr = "moz";
-
- let immediateSearch = new AutoCompleteImmediateSearch(
- "immediate", new AutoCompleteResult(["moz-immediate"], 0));
- registerAutoCompleteSearch(immediateSearch);
- let delayedSearch = new AutoCompleteDelayedSearch(
- "delayed", new AutoCompleteResult(["moz-delayed"], 0));
- registerAutoCompleteSearch(delayedSearch);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- let input = new AutoCompleteInputBase([delayedSearch.name,
- immediateSearch.name]);
- input.completeDefaultIndex = true;
- input.textValue = inputStr;
-
- // Caret must be at the end. Autofill doesn't happen unless you're typing
- // characters at the end.
- let strLen = inputStr.length;
- input.selectTextRange(strLen, strLen);
-
- controller.input = input;
- controller.startSearch(inputStr);
-
- // Immediately check the result, the immediate search should have finished.
- do_check_eq(input.textValue, "moz-immediate");
-
- // Wait for both queries to finish.
- input.onSearchComplete = function() {
- // Sanity check.
- do_check_eq(input.textValue, "moz-immediate");
-
- unregisterAutoCompleteSearch(immediateSearch);
- unregisterAutoCompleteSearch(delayedSearch);
- run_next_test();
- };
-});
-
-/**
- * An immediate search should be executed before any delayed search.
- */
-add_test(function test_immediate_search_notimeout() {
- let inputStr = "moz";
-
- let immediateSearch = new AutoCompleteImmediateSearch(
- "immediate", new AutoCompleteResult(["moz-immediate"], 0));
- registerAutoCompleteSearch(immediateSearch);
-
- let delayedSearch = new AutoCompleteDelayedSearch(
- "delayed", new AutoCompleteResult(["moz-delayed"], 0));
- registerAutoCompleteSearch(delayedSearch);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- let input = new AutoCompleteInputBase([delayedSearch.name,
- immediateSearch.name]);
- input.completeDefaultIndex = true;
- input.textValue = inputStr;
- input.timeout = 0;
-
- // Caret must be at the end. Autofill doesn't happen unless you're typing
- // characters at the end.
- let strLen = inputStr.length;
- input.selectTextRange(strLen, strLen);
-
- controller.input = input;
- let complete = false;
- input.onSearchComplete = function() {
- complete = true;
- };
- controller.startSearch(inputStr);
- do_check_true(complete);
-
- // Immediately check the result, the immediate search should have finished.
- do_check_eq(input.textValue, "moz-immediate");
-
- unregisterAutoCompleteSearch(immediateSearch);
- unregisterAutoCompleteSearch(delayedSearch);
- run_next_test();
-});
-
-/**
- * A delayed search should be executed synchronously with a zero timeout.
- */
-add_test(function test_delayed_search_notimeout() {
- let inputStr = "moz";
-
- let delayedSearch = new AutoCompleteDelayedSearch(
- "delayed", new AutoCompleteResult(["moz-delayed"], 0));
- registerAutoCompleteSearch(delayedSearch);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- let input = new AutoCompleteInputBase([delayedSearch.name]);
- input.completeDefaultIndex = true;
- input.textValue = inputStr;
- input.timeout = 0;
-
- // Caret must be at the end. Autofill doesn't happen unless you're typing
- // characters at the end.
- let strLen = inputStr.length;
- input.selectTextRange(strLen, strLen);
-
- controller.input = input;
- let complete = false;
- input.onSearchComplete = function() {
- complete = true;
- };
- controller.startSearch(inputStr);
- do_check_true(complete);
-
- // Immediately check the result, the delayed search should have finished.
- do_check_eq(input.textValue, "moz-delayed");
-
- unregisterAutoCompleteSearch(delayedSearch);
- run_next_test();
-});
diff --git a/toolkit/components/autocomplete/tests/unit/test_insertMatchAt.js b/toolkit/components/autocomplete/tests/unit/test_insertMatchAt.js
deleted file mode 100644
index 14ee388b8..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_insertMatchAt.js
+++ /dev/null
@@ -1,14 +0,0 @@
-function run_test() {
- let result = Cc["@mozilla.org/autocomplete/simple-result;1"]
- .createInstance(Ci.nsIAutoCompleteSimpleResult);
- result.appendMatch("a", "");
- result.appendMatch("c", "");
- result.insertMatchAt(1, "b", "");
- result.insertMatchAt(3, "d", "");
-
- Assert.equal(result.matchCount, 4);
- Assert.equal(result.getValueAt(0), "a");
- Assert.equal(result.getValueAt(1), "b");
- Assert.equal(result.getValueAt(2), "c");
- Assert.equal(result.getValueAt(3), "d");
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_popupSelectionVsDefaultCompleteValue.js b/toolkit/components/autocomplete/tests/unit/test_popupSelectionVsDefaultCompleteValue.js
deleted file mode 100644
index fb4153355..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_popupSelectionVsDefaultCompleteValue.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-function AutoCompleteTypeAheadResult(aValues, aFinalCompleteValues) {
- this._values = aValues;
- this._finalCompleteValues = aFinalCompleteValues;
- this.defaultIndex = 0;
- this._typeAheadResult = true;
-}
-AutoCompleteTypeAheadResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-function AutoCompleteResult(aValues) {
- this._values = aValues;
-}
-AutoCompleteResult.prototype = Object.create(AutoCompleteResultBase.prototype);
-
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
- this.popupOpen = true;
- this.completeDefaultIndex = true;
- this.completeSelectedIndex = true;
-}
-AutoCompleteInput.prototype = Object.create(AutoCompleteInputBase.prototype);
-
-function run_test() {
- run_next_test();
-}
-
-add_test(function test_handleEnter() {
- doSearch("moz", function(aController) {
- do_check_eq(aController.input.textValue, "mozilla.com");
- aController.handleEnter(true);
- do_check_eq(aController.input.textValue, "mozilla.org");
- });
-});
-
-function doSearch(aSearchString, aOnCompleteCallback) {
- let typeAheadSearch = new AutoCompleteSearchBase(
- "typeAheadSearch",
- new AutoCompleteTypeAheadResult([ "mozilla.com" ], [ "http://www.mozilla.com" ])
- );
- registerAutoCompleteSearch(typeAheadSearch);
-
- let search = new AutoCompleteSearchBase(
- "search",
- new AutoCompleteResult([ "mozilla.org" ])
- );
- registerAutoCompleteSearch(search);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our searches and confirms results.
- let input = new AutoCompleteInput([ typeAheadSearch.name, search.name ]);
- input.textValue = aSearchString;
-
- // Caret must be at the end for autofill to happen.
- let strLen = aSearchString.length;
- input.selectTextRange(strLen, strLen);
- controller.input = input;
- controller.startSearch(aSearchString);
-
- input.onSearchComplete = function onSearchComplete() {
- aOnCompleteCallback(controller);
-
- // Clean up.
- unregisterAutoCompleteSearch(search);
- run_next_test();
- };
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_previousResult.js b/toolkit/components/autocomplete/tests/unit/test_previousResult.js
deleted file mode 100644
index bfe6c7aae..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_previousResult.js
+++ /dev/null
@@ -1,280 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/**
- * Unit test for Bug 438861 - Previous search results not returned to multiple
- * searches.
- */
-
-
-/**
- * Dummy nsIAutoCompleteInput source that returns
- * the given list of AutoCompleteSearch names.
- *
- * Implements only the methods needed for this test.
- */
-function AutoCompleteInput(aSearches) {
- this.searches = aSearches;
-}
-AutoCompleteInput.prototype = {
- constructor: AutoCompleteInput,
-
- // Array of AutoCompleteSearch names
- searches: null,
-
- minResultsForPopup: 0,
- timeout: 10,
- searchParam: "",
- textValue: "",
- disableAutoComplete: false,
- completeDefaultIndex: false,
-
- get searchCount() {
- return this.searches.length;
- },
-
- getSearchAt: function(aIndex) {
- return this.searches[aIndex];
- },
-
- onSearchBegin: function() {},
- onSearchComplete: function() {},
-
- popupOpen: false,
-
- popup: {
- setSelectedIndex: function(aIndex) {},
- invalidate: function() {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompletePopup))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
- },
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompleteInput))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
-}
-
-
-
-/**
- * nsIAutoCompleteResult implementation
- */
-function AutoCompleteResult(aValues, aComments, aStyles) {
- this._values = aValues;
- this._comments = aComments;
- this._styles = aStyles;
- if (this._values.length > 0) {
- this.searchResult = Ci.nsIAutoCompleteResult.RESULT_SUCCESS;
- } else {
- this.searchResult = Ci.nsIAutoCompleteResult.NOMATCH;
- }
-}
-AutoCompleteResult.prototype = {
- constructor: AutoCompleteResult,
-
- // Arrays
- _values: null,
- _comments: null,
- _styles: null,
-
- searchString: "",
- searchResult: null,
-
- defaultIndex: 0,
-
- get matchCount() {
- return this._values.length;
- },
-
- getValueAt: function(aIndex) {
- return this._values[aIndex];
- },
-
- getLabelAt: function(aIndex) {
- return this.getValueAt(aIndex);
- },
-
- getCommentAt: function(aIndex) {
- return this._comments[aIndex];
- },
-
- getStyleAt: function(aIndex) {
- return this._styles[aIndex];
- },
-
- getImageAt: function(aIndex) {
- return "";
- },
-
- getFinalCompleteValueAt: function(aIndex) {
- return this.getValueAt(aIndex);
- },
-
- removeValueAt: function (aRowIndex, aRemoveFromDb) {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIAutoCompleteResult))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- }
-}
-
-
-/**
- * nsIAutoCompleteSearch implementation that always returns
- * the same result set.
- */
-function AutoCompleteSearch(aName, aResult) {
- this.name = aName;
- this._result = aResult;
-}
-AutoCompleteSearch.prototype = {
- constructor: AutoCompleteSearch,
-
- // Search name. Used by AutoCompleteController
- name: null,
-
- // AutoCompleteResult
- _result: null,
-
- _previousResult: null,
-
-
- /**
- * Return the same result set for every search
- */
- startSearch: function(aSearchString,
- aSearchParam,
- aPreviousResult,
- aListener)
- {
- this._previousResult = aPreviousResult;
- aListener.onSearchResult(this, this._result);
- },
-
- stopSearch: function() {},
-
- // nsISupports implementation
- QueryInterface: function(iid) {
- if (iid.equals(Ci.nsISupports) ||
- iid.equals(Ci.nsIFactory) ||
- iid.equals(Ci.nsIAutoCompleteSearch))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- // nsIFactory implementation
- createInstance: function(outer, iid) {
- return this.QueryInterface(iid);
- }
-}
-
-
-/**
- * Helper to register an AutoCompleteSearch with the given name.
- * Allows the AutoCompleteController to find the search.
- */
-function registerAutoCompleteSearch(aSearch) {
- var name = "@mozilla.org/autocomplete/search;1?name=" + aSearch.name;
-
- var uuidGenerator = Cc["@mozilla.org/uuid-generator;1"].
- getService(Ci.nsIUUIDGenerator);
- var cid = uuidGenerator.generateUUID();
-
- var desc = "Test AutoCompleteSearch";
-
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.registerFactory(cid, desc, name, aSearch);
-
- // Keep the id on the object so we can unregister later
- aSearch.cid = cid;
-}
-
-
-/**
- * Helper to unregister an AutoCompleteSearch.
- */
-function unregisterAutoCompleteSearch(aSearch) {
- var componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.unregisterFactory(aSearch.cid, aSearch);
-}
-
-
-/**
- */
-function run_test() {
- // Make an AutoCompleteSearch that always returns nothing
- var search1 = new AutoCompleteSearch("test-previous-result1",
- new AutoCompleteResult(["hello1"], [""], [""]));
-
- var search2 = new AutoCompleteSearch("test-previous-result2",
- new AutoCompleteResult(["hello2"], [""], [""]));
-
- // Register search so AutoCompleteController can find them
- registerAutoCompleteSearch(search1);
- registerAutoCompleteSearch(search2);
-
- var controller = Components.classes["@mozilla.org/autocomplete/controller;1"].
- getService(Components.interfaces.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our search
- // and confirms results on search complete
- var input = new AutoCompleteInput([search1.name,
- search2.name]);
- var numSearchesStarted = 0;
-
- input.onSearchBegin = function() {
- numSearchesStarted++;
- };
-
- input.onSearchComplete = function() {
- do_check_eq(controller.searchStatus,
- Ci.nsIAutoCompleteController.STATUS_COMPLETE_MATCH);
- do_check_eq(controller.matchCount, 2);
-
- if (numSearchesStarted == 1) {
- do_check_eq(search1._previousResult, null);
- do_check_eq(search2._previousResult, null);
-
- // Now start it again
- controller.startSearch("test");
- return;
- }
- do_check_neq(search1._previousResult, null);
- do_check_neq(search2._previousResult, null);
-
- // Unregister searches
- unregisterAutoCompleteSearch(search1);
- unregisterAutoCompleteSearch(search2);
-
- do_test_finished();
- };
-
- controller.input = input;
-
- // Search is asynchronous, so don't let the test finish immediately
- do_test_pending();
-
- controller.startSearch("test");
-}
diff --git a/toolkit/components/autocomplete/tests/unit/test_stopSearch.js b/toolkit/components/autocomplete/tests/unit/test_stopSearch.js
deleted file mode 100644
index 5ef3454b4..000000000
--- a/toolkit/components/autocomplete/tests/unit/test_stopSearch.js
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-/**
- * Purpose of the test is to check that a stopSearch call comes always before a
- * startSearch call.
- */
-
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-
-/**
- * Dummy nsIAutoCompleteInput source that returns
- * the given list of AutoCompleteSearch names.
- *
- * Implements only the methods needed for this test.
- */
-function AutoCompleteInput(aSearches)
-{
- this.searches = aSearches;
-}
-AutoCompleteInput.prototype = {
- constructor: AutoCompleteInput,
- minResultsForPopup: 0,
- timeout: 10,
- searchParam: "",
- textValue: "hello",
- disableAutoComplete: false,
- completeDefaultIndex: false,
- set popupOpen(val) { return val; }, // ignore
- get popupOpen() { return false; },
- get searchCount() { return this.searches.length; },
- getSearchAt: function(aIndex) { return this.searches[aIndex]; },
- onSearchBegin: function() {},
- onSearchComplete: function() {},
- onTextReverted: function () {},
- onTextEntered: function () {},
- popup: {
- selectBy: function() {},
- invalidate: function() {},
- set selectedIndex(val) { return val; }, // ignore
- get selectedIndex() { return -1 },
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompletePopup])
- },
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompleteInput])
-}
-
-
-/**
- * nsIAutoCompleteSearch implementation.
- */
-function AutoCompleteSearch(aName)
-{
- this.name = aName;
-}
-AutoCompleteSearch.prototype = {
- constructor: AutoCompleteSearch,
- stopSearchInvoked: true,
- startSearch: function(aSearchString, aSearchParam, aPreviousResult, aListener)
- {
- print("Check stop search has been called");
- do_check_true(this.stopSearchInvoked);
- this.stopSearchInvoked = false;
- },
- stopSearch: function()
- {
- this.stopSearchInvoked = true;
- },
- QueryInterface: XPCOMUtils.generateQI([
- Ci.nsIFactory
- , Ci.nsIAutoCompleteSearch
- ]),
- createInstance: function(outer, iid)
- {
- return this.QueryInterface(iid);
- }
-}
-
-
-/**
- * Helper to register an AutoCompleteSearch with the given name.
- * Allows the AutoCompleteController to find the search.
- */
-function registerAutoCompleteSearch(aSearch)
-{
- let name = "@mozilla.org/autocomplete/search;1?name=" + aSearch.name;
- let uuidGenerator = Cc["@mozilla.org/uuid-generator;1"].
- getService(Ci.nsIUUIDGenerator);
- let cid = uuidGenerator.generateUUID();
- let desc = "Test AutoCompleteSearch";
- let componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.registerFactory(cid, desc, name, aSearch);
- // Keep the id on the object so we can unregister later
- aSearch.cid = cid;
-}
-
-
-/**
- * Helper to unregister an AutoCompleteSearch.
- */
-function unregisterAutoCompleteSearch(aSearch) {
- let componentManager = Components.manager
- .QueryInterface(Ci.nsIComponentRegistrar);
- componentManager.unregisterFactory(aSearch.cid, aSearch);
-}
-
-
-var gTests = [
- function(controller) {
- print("handleText");
- controller.input.textValue = "hel";
- controller.handleText();
- },
- function(controller) {
- print("handleStartComposition");
- controller.handleStartComposition();
- },
- function(controller) {
- print("handleEndComposition");
- controller.handleEndComposition();
- // an input event always follows compositionend event.
- controller.handleText();
- },
- function(controller) {
- print("handleEscape");
- controller.handleEscape();
- },
- function(controller) {
- print("handleEnter");
- controller.handleEnter(false);
- },
- function(controller) {
- print("handleTab");
- controller.handleTab();
- },
-
- function(controller) {
- print("handleKeyNavigation");
- controller.handleKeyNavigation(Ci.nsIDOMKeyEvent.DOM_VK_UP);
- },
-];
-
-
-var gSearch;
-var gCurrentTest;
-function run_test() {
- // Make an AutoCompleteSearch that always returns nothing
- gSearch = new AutoCompleteSearch("test");
- registerAutoCompleteSearch(gSearch);
-
- let controller = Cc["@mozilla.org/autocomplete/controller;1"].
- getService(Ci.nsIAutoCompleteController);
-
- // Make an AutoCompleteInput that uses our search.
- let input = new AutoCompleteInput([gSearch.name]);
- controller.input = input;
-
- input.onSearchBegin = function() {
- do_execute_soon(function() {
- gCurrentTest(controller);
- });
- };
- input.onSearchComplete = function() {
- run_next_test(controller);
- }
-
- // Search is asynchronous, so don't let the test finish immediately
- do_test_pending();
-
- run_next_test(controller);
-}
-
-function run_next_test(controller) {
- if (gTests.length == 0) {
- unregisterAutoCompleteSearch(gSearch);
- controller.stopSearch();
- controller.input = null;
- do_test_finished();
- return;
- }
-
- gCurrentTest = gTests.shift();
- controller.startSearch("hello");
-}
diff --git a/toolkit/components/autocomplete/tests/unit/xpcshell.ini b/toolkit/components/autocomplete/tests/unit/xpcshell.ini
deleted file mode 100644
index daf89db17..000000000
--- a/toolkit/components/autocomplete/tests/unit/xpcshell.ini
+++ /dev/null
@@ -1,26 +0,0 @@
-[DEFAULT]
-head = head_autocomplete.js
-tail =
-
-[test_330578.js]
-[test_378079.js]
-[test_393191.js]
-[test_440866.js]
-[test_463023.js]
-[test_660156.js]
-[test_autocomplete_multiple.js]
-[test_autocomplete_userContextId.js]
-[test_autofillSelectedPopupIndex.js]
-[test_badDefaultIndex.js]
-[test_completeDefaultIndex_casing.js]
-[test_finalCompleteValue.js]
-[test_finalCompleteValue_defaultIndex.js]
-[test_finalCompleteValue_forceComplete.js]
-[test_finalCompleteValueSelectedIndex.js]
-[test_finalDefaultCompleteValue.js]
-[test_hiddenResult.js]
-[test_immediate_search.js]
-[test_insertMatchAt.js]
-[test_popupSelectionVsDefaultCompleteValue.js]
-[test_previousResult.js]
-[test_stopSearch.js]