Index: components/omnibox/browser/omnibox_edit_model.h |
diff --git a/components/omnibox/browser/omnibox_edit_model.h b/components/omnibox/browser/omnibox_edit_model.h |
index de6ff02da4bedd70185ef080522c523a1a475c2d..8fcf79e0d3634e8ef13982ba69bf75b5b3733203 100644 |
--- a/components/omnibox/browser/omnibox_edit_model.h |
+++ b/components/omnibox/browser/omnibox_edit_model.h |
@@ -18,6 +18,7 @@ |
#include "components/omnibox/browser/autocomplete_input.h" |
#include "components/omnibox/browser/autocomplete_match.h" |
#include "components/omnibox/browser/omnibox_controller.h" |
+#include "components/omnibox/browser/omnibox_view.h" |
#include "components/omnibox/common/omnibox_focus_state.h" |
#include "ui/base/window_open_disposition.h" |
#include "ui/gfx/native_widget_types.h" |
@@ -37,11 +38,13 @@ class Rect; |
// Reasons why the Omnibox could change into keyword mode. |
// These numeric values are used in UMA logs; do not change them. |
-enum EnteredKeywordModeMethod { |
- ENTERED_KEYWORD_MODE_VIA_TAB = 0, |
- ENTERED_KEYWORD_MODE_VIA_SPACE_AT_END = 1, |
- ENTERED_KEYWORD_MODE_VIA_SPACE_IN_MIDDLE = 2, |
- ENTERED_KEYWORD_MODE_NUM_ITEMS |
+enum class KeywordModeEntryMethod { |
+ TAB = 0, |
+ SPACE_AT_END = 1, |
+ SPACE_IN_MIDDLE = 2, |
+ KEYBOARD_SHORTCUT = 3, |
+ QUESTION_MARK = 4, |
+ NUM_ITEMS, |
}; |
class OmniboxEditModel { |
@@ -60,6 +63,7 @@ class OmniboxEditModel { |
const base::string16& gray_text, |
const base::string16& keyword, |
bool is_keyword_hint, |
+ KeywordModeEntryMethod keyword_mode_entry_method, |
bool url_replacement_enabled, |
OmniboxFocusState focus_state, |
FocusSource focus_source, |
@@ -72,6 +76,7 @@ class OmniboxEditModel { |
const base::string16 gray_text; |
const base::string16 keyword; |
const bool is_keyword_hint; |
+ KeywordModeEntryMethod keyword_mode_entry_method; |
bool url_replacement_enabled; |
OmniboxFocusState focus_state; |
FocusSource focus_source; |
@@ -237,10 +242,14 @@ class OmniboxEditModel { |
} |
// Accepts the current keyword hint as a keyword. It always returns true for |
- // caller convenience. |entered_method| indicates how the use entered |
- // keyword mode. This parameter is only used for metrics/logging; it's not |
- // used to change user-visible behavior. |
- bool AcceptKeyword(EnteredKeywordModeMethod entered_method); |
+ // caller convenience. |entered_method| indicates how the user entered |
+ // keyword mode. |
+ bool AcceptKeyword(KeywordModeEntryMethod entry_method); |
+ |
+ // Sets the current keyword to that of the user's default search provider and |
+ // updates the view so the user sees the keyword chip in the omnibox. |
+ void EnterKeywordModeForDefaultSearchProvider( |
+ KeywordModeEntryMethod entry_method); |
// Accepts the current temporary text as the user text. |
void AcceptTemporaryTextAsUserText(); |
@@ -324,19 +333,13 @@ class OmniboxEditModel { |
// Called by the OmniboxView after something changes, with details about what |
// state changes occured. Updates internal state, updates the popup if |
// necessary, and returns true if any significant changes occurred. Note that |
- // |text_differs| may be set even if |old_text| == |new_text|, e.g. if we've |
- // just committed an IME composition. |
+ // |text_change.text_differs| may be set even if |text_change.old_text| == |
+ // |text_change.new_text|, e.g. if we've just committed an IME composition. |
// |
// If |allow_keyword_ui_change| is false then the change should not affect |
// keyword ui state, even if the text matches a keyword exactly. This value |
// may be false when the user is composing a text with an IME. |
- bool OnAfterPossibleChange(const base::string16& old_text, |
- const base::string16& new_text, |
- size_t selection_start, |
- size_t selection_end, |
- bool selection_differs, |
- bool text_differs, |
- bool just_deleted_text, |
+ bool OnAfterPossibleChange(const OmniboxView::StateChanges& state_changes, |
bool allow_keyword_ui_change); |
// Called when the current match has changed in the OmniboxController. |
@@ -547,6 +550,11 @@ class OmniboxEditModel { |
// keyword_ to show a "Press <tab> to search" sort of hint. |
bool is_keyword_hint_; |
+ // Indicates how the user entered keyword mode if the user is actually in |
+ // keyword mode. Otherwise, the value of this variable is undefined. This |
+ // is used to restore the user's search terms upon a call to ClearKeyword(). |
+ KeywordModeEntryMethod keyword_mode_entry_method_; |
+ |
// This is needed to properly update the SearchModel state when the user |
// presses escape. |
bool in_revert_; |