Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Unified Diff: chrome/browser/autocomplete/autocomplete_edit.h

Issue 6252003: Accept keyword by pressing space. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;
« no previous file with comments | « no previous file | chrome/browser/autocomplete/autocomplete_edit.cc » ('j') | chrome/browser/autocomplete/autocomplete_edit.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698