| Index: chrome/browser/autocomplete/autocomplete_edit.h
|
| diff --git a/chrome/browser/autocomplete/autocomplete_edit.h b/chrome/browser/autocomplete/autocomplete_edit.h
|
| index ea70b849e4c489f618fd3f60a507a561a6954bb8..6cefc0bfcdfe9c57823db7114f0199f89b9ee20f 100644
|
| --- a/chrome/browser/autocomplete/autocomplete_edit.h
|
| +++ b/chrome/browser/autocomplete/autocomplete_edit.h
|
| @@ -102,32 +102,17 @@ class AutocompleteEditController {
|
|
|
| class AutocompleteEditModel : public NotificationObserver {
|
| public:
|
| - enum KeywordUIState {
|
| - // The user is typing normally.
|
| - NORMAL,
|
| - // The user is editing in the middle of the input string. Even if the
|
| - // input looks like a keyword, don't display the keyword UI, as to not
|
| - // interfere with the user's editing.
|
| - NO_KEYWORD,
|
| - // The user has triggered the keyword UI. Until it disappears, bias
|
| - // autocomplete results so that input strings of the keyword alone default
|
| - // to the keyword provider, not a normal navigation or search.
|
| - KEYWORD,
|
| - };
|
| -
|
| struct State {
|
| State(bool user_input_in_progress,
|
| const std::wstring& user_text,
|
| const std::wstring& keyword,
|
| - bool is_keyword_hint,
|
| - KeywordUIState keyword_ui_state);
|
| + bool is_keyword_hint);
|
| ~State();
|
|
|
| bool user_input_in_progress;
|
| const std::wstring user_text;
|
| const std::wstring keyword;
|
| const bool is_keyword_hint;
|
| - const KeywordUIState keyword_ui_state;
|
| };
|
|
|
| AutocompleteEditModel(AutocompleteEditView* view,
|
| @@ -255,14 +240,12 @@ class AutocompleteEditModel : public NotificationObserver {
|
|
|
| // Accessors for keyword-related state (see comments on keyword_ and
|
| // is_keyword_hint_).
|
| - std::wstring keyword() const {
|
| - return (is_keyword_hint_ || (keyword_ui_state_ != NO_KEYWORD)) ?
|
| - keyword_ : std::wstring();
|
| - }
|
| + const std::wstring& keyword() const { return keyword_; }
|
| bool is_keyword_hint() const { return is_keyword_hint_; }
|
|
|
| - // Accepts the current keyword hint as a keyword.
|
| - void AcceptKeyword();
|
| + // Accepts the current keyword hint as a keyword. It always returns true for
|
| + // caller convenience.
|
| + bool AcceptKeyword();
|
|
|
| // Clears the current keyword. |visible_text| is the (non-keyword) text
|
| // currently visible in the edit.
|
| @@ -294,8 +277,8 @@ class AutocompleteEditModel : public NotificationObserver {
|
| // necessary.
|
| void OnControlKeyChanged(bool pressed);
|
|
|
| - // Called when the user pastes in text that replaces the entire edit contents.
|
| - void on_paste_replacing_all() { paste_state_ = REPLACING_ALL; }
|
| + // Called when the user pastes in text.
|
| + void on_paste() { paste_state_ = PASTING; }
|
|
|
| // Called when the user presses up or down. |count| is a repeat count,
|
| // negative for moving up, positive for moving down.
|
| @@ -338,15 +321,14 @@ class AutocompleteEditModel : public NotificationObserver {
|
|
|
| private:
|
| enum PasteState {
|
| - NONE, // Most recent edit was not a paste that replaced all text.
|
| - REPLACED_ALL, // Most recent edit was a paste that replaced all text.
|
| - REPLACING_ALL, // In the middle of doing a paste that replaces all
|
| - // text. We need this intermediate state because OnPaste()
|
| - // does the actual detection of such pastes, but
|
| - // OnAfterPossibleChange() has to update the paste state
|
| - // for every edit. If OnPaste() set the state directly to
|
| - // REPLACED_ALL, OnAfterPossibleChange() wouldn't know
|
| + NONE, // Most recent edit was not a paste.
|
| + PASTING, // In the middle of doing a paste. We need this intermediate
|
| + // state because OnPaste() does the actual detection of
|
| + // paste, but OnAfterPossibleChange() has to update the
|
| + // paste state for every edit. If OnPaste() set the state
|
| + // directly to PASTED, OnAfterPossibleChange() wouldn't know
|
| // whether that represented the current edit or a past one.
|
| + PASTED, // Most recent edit was a paste.
|
| };
|
|
|
| enum ControlKeyState {
|
| @@ -393,6 +375,14 @@ class AutocompleteEditModel : public NotificationObserver {
|
| // copy.
|
| bool GetURLForText(const std::wstring& text, GURL* url) const;
|
|
|
| + // Accepts current keyword if the user only typed a space at the end of
|
| + // |new_user_text|. Returns true if the current keyword is accepted.
|
| + bool MaybeAcceptKeywordBySpace(const std::wstring& new_user_text);
|
| +
|
| + // Checks if a given character is a valid space character for accepting
|
| + // keyword.
|
| + static bool IsSpaceCharForAcceptingKeyword(wchar_t c);
|
| +
|
| AutocompleteEditView* view_;
|
|
|
| AutocompletePopupModel* popup_;
|
| @@ -461,12 +451,10 @@ class AutocompleteEditModel : public NotificationObserver {
|
| // them and not revert all the way to the permanent_text_.
|
| bool has_temporary_text_;
|
| GURL original_url_;
|
| - KeywordUIState original_keyword_ui_state_;
|
|
|
| - // When the user's last action was to paste and replace all the text, we
|
| - // disallow inline autocomplete (on the theory that the user is trying to
|
| - // paste in a new URL or part of one, and in either case inline autocomplete
|
| - // would get in the way).
|
| + // When the user's last action was to paste, we disallow inline autocomplete
|
| + // (on the theory that the user is trying to paste in a new URL or part of
|
| + // one, and in either case inline autocomplete would get in the way).
|
| PasteState paste_state_;
|
|
|
| // Whether the control key is depressed. We track this to avoid calling
|
| @@ -485,9 +473,6 @@ class AutocompleteEditModel : public NotificationObserver {
|
| // keyword_ to show a "Press <tab> to search" sort of hint.
|
| bool is_keyword_hint_;
|
|
|
| - // See KeywordUIState enum.
|
| - KeywordUIState keyword_ui_state_;
|
| -
|
| // Paste And Go-related state. See CanPasteAndGo().
|
| mutable GURL paste_and_go_url_;
|
| mutable PageTransition::Type paste_and_go_transition_;
|
|
|