summaryrefslogtreecommitdiffstats
path: root/toolkit/components/autocomplete
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/autocomplete')
-rw-r--r--toolkit/components/autocomplete/nsAutoCompleteController.cpp16
-rw-r--r--toolkit/components/autocomplete/nsIAutoCompletePopup.idl27
2 files changed, 36 insertions, 7 deletions
diff --git a/toolkit/components/autocomplete/nsAutoCompleteController.cpp b/toolkit/components/autocomplete/nsAutoCompleteController.cpp
index 126199e3cf..c8278f55a7 100644
--- a/toolkit/components/autocomplete/nsAutoCompleteController.cpp
+++ b/toolkit/components/autocomplete/nsAutoCompleteController.cpp
@@ -490,6 +490,13 @@ nsAutoCompleteController::HandleKeyNavigation(uint32_t aKey, bool* _retval) {
}
}
+ // Some script may have changed the value of the text field since our
+ // last keypress or after our focus handler and we don't want to
+ // search for a stale string.
+ nsAutoString value;
+ input->GetTextValue(value);
+ SetSearchStringInternal(value);
+
// Open the popup if there has been a previous non-errored search, or
// else kick off a new search
bool hadPreviousSearch = false;
@@ -522,13 +529,6 @@ nsAutoCompleteController::HandleKeyNavigation(uint32_t aKey, bool* _retval) {
return NS_OK;
}
- // Some script may have changed the value of the text field since our
- // last keypress or after our focus handler and we don't want to
- // search for a stale string.
- nsAutoString value;
- input->GetTextValue(value);
- SetSearchStringInternal(value);
-
StartSearches();
}
@@ -1235,6 +1235,8 @@ nsresult nsAutoCompleteController::EnterMatch(bool aIsPopupSelection,
SetSearchStringInternal(value);
}
+ popup->SelectEntry();
+
obsSvc->NotifyObservers(input, "autocomplete-did-enter-text", nullptr);
input->OnTextEntered(aEvent);
diff --git a/toolkit/components/autocomplete/nsIAutoCompletePopup.idl b/toolkit/components/autocomplete/nsIAutoCompletePopup.idl
index 607863c9a7..556c0d49b8 100644
--- a/toolkit/components/autocomplete/nsIAutoCompletePopup.idl
+++ b/toolkit/components/autocomplete/nsIAutoCompletePopup.idl
@@ -5,6 +5,7 @@
#include "nsISupports.idl"
interface nsIAutoCompleteInput;
+interface nsIFormFillCompleteObserver;
webidl Element;
@@ -33,6 +34,11 @@ interface nsIAutoCompletePopup : nsISupports
readonly attribute boolean popupOpen;
/*
+ * Don't rollup the popup when the search string becomes "".
+ */
+ boolean getNoRollupOnEmptySearch(in Element element);
+
+ /*
* Bind the popup to an input object and display it with the given coordinates
*
* @param input - The input object that the popup will be bound to
@@ -69,4 +75,25 @@ interface nsIAutoCompletePopup : nsISupports
* @return The currently selected result item index
*/
void selectBy(in boolean reverse, in boolean page);
+
+ /*
+ * Search for a given string and notify a listener (either synchronously
+ * or asynchronously) of the result
+ *
+ * @param searchString - The string to search for
+ * @param searchParam - An extra parameter
+ * @param previousResult - A previous result to use for faster searching
+ * @param listener - A listener to notify when the search is complete
+ */
+ void startSearch(in AString searchString, in Element element, in nsIFormFillCompleteObserver listener);
+
+ /*
+ * Stop the search that is in progress
+ */
+ void stopSearch();
+
+ /**
+ * Notify the autocomplete popup that an autocomplete entry is selected.
+ */
+ void selectEntry();
};