diff options
Diffstat (limited to 'chrome/browser/autocomplete/autocomplete_edit.cc')
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_edit.cc | 72 |
1 files changed, 19 insertions, 53 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit.cc b/chrome/browser/autocomplete/autocomplete_edit.cc index 6c367c9..04e3c7b 100644 --- a/chrome/browser/autocomplete/autocomplete_edit.cc +++ b/chrome/browser/autocomplete/autocomplete_edit.cc @@ -173,8 +173,7 @@ void AutocompleteEditModel::FinalizeInstantQuery( if (skip_inline_autocomplete) { const string16 final_text = input_text + suggest_text; view_->OnBeforePossibleChange(); - view_->SetWindowTextAndCaretPos(final_text, final_text.length(), false, - false); + view_->SetWindowTextAndCaretPos(final_text, final_text.length()); view_->OnAfterPossibleChange(); } else if (popup_->IsOpen()) { SearchProvider* search_provider = @@ -407,8 +406,7 @@ void AutocompleteEditModel::Revert() { is_keyword_hint_ = false; has_temporary_text_ = false; view_->SetWindowTextAndCaretPos(permanent_text_, - has_focus_ ? permanent_text_.length() : 0, - false, true); + has_focus_ ? permanent_text_.length() : 0); NetworkActionPredictor* network_action_predictor = NetworkActionPredictorFactory::GetForProfile(profile_); if (network_action_predictor) @@ -418,8 +416,6 @@ void AutocompleteEditModel::Revert() { void AutocompleteEditModel::StartAutocomplete( bool has_selected_text, bool prevent_inline_autocomplete) const { - ClearPopupKeywordMode(); - bool keyword_is_selected = KeywordIsSelected(); popup_->SetHoveredLine(AutocompletePopupModel::kNoMatch); // We don't explicitly clear AutocompletePopupModel::manually_selected_match, @@ -631,49 +627,28 @@ void AutocompleteEditModel::OpenMatch(const AutocompleteMatch& match, bool AutocompleteEditModel::AcceptKeyword() { DCHECK(is_keyword_hint_ && !keyword_.empty()); - autocomplete_controller_->Stop(false); + view_->OnBeforePossibleChange(); + view_->SetWindowTextAndCaretPos(string16(), 0); is_keyword_hint_ = false; - - if (popup_->IsOpen()) - popup_->SetSelectedLineState(AutocompletePopupModel::KEYWORD); - else - StartAutocomplete(false, true); - - // Ensure the current selection is saved before showing keyword mode - // so that moving to another line and then reverting the text will restore - // the current state properly. - view_->OnTemporaryTextMaybeChanged( - DisplayTextFromUserText(CurrentMatch().fill_into_edit), - !has_temporary_text_); - has_temporary_text_ = true; - + view_->OnAfterPossibleChange(); + just_deleted_text_ = false; // OnAfterPossibleChange() erroneously sets this + // since the edit contents have disappeared. It + // doesn't really matter, but we clear it to be + // consistent. content::RecordAction(UserMetricsAction("AcceptedKeywordHint")); return true; } void AutocompleteEditModel::ClearKeyword(const string16& visible_text) { - autocomplete_controller_->Stop(false); - ClearPopupKeywordMode(); - + view_->OnBeforePossibleChange(); const string16 window_text(keyword_ + visible_text); - - // Only reset the result if the edit text has changed since the - // keyword was accepted, or if the popup is closed. - if (just_deleted_text_ || !visible_text.empty() || !popup_->IsOpen()) { - view_->OnBeforePossibleChange(); - view_->SetWindowTextAndCaretPos(window_text.c_str(), keyword_.length(), - false, false); - keyword_.clear(); - is_keyword_hint_ = false; - view_->OnAfterPossibleChange(); - just_deleted_text_ = true; // OnAfterPossibleChange() fails to clear this - // since the edit contents have actually grown - // longer. - } else { - is_keyword_hint_ = true; - view_->SetWindowTextAndCaretPos(window_text.c_str(), keyword_.length(), - false, true); - } + view_->SetWindowTextAndCaretPos(window_text.c_str(), keyword_.length()); + keyword_.clear(); + is_keyword_hint_ = false; + view_->OnAfterPossibleChange(); + just_deleted_text_ = true; // OnAfterPossibleChange() fails to clear this + // since the edit contents have actually grown + // longer. } const AutocompleteResult& AutocompleteEditModel::result() const { @@ -936,9 +911,8 @@ void AutocompleteEditModel::OnResultChanged(bool default_match_changed) { // can be many of these as a user types an initial series of characters, // the OS DNS cache could suffer eviction problems for minimal gain. - is_keyword_hint = match->GetKeyword(&keyword); + is_keyword_hint = popup_->GetKeywordForMatch(*match, &keyword); } - popup_->OnResultChanged(); OnPopupDataChanged(inline_autocomplete_text, NULL, keyword, is_keyword_hint); @@ -971,12 +945,6 @@ bool AutocompleteEditModel::KeywordIsSelected() const { return !is_keyword_hint_ && !keyword_.empty(); } -void AutocompleteEditModel::ClearPopupKeywordMode() const { - if (popup_->IsOpen() && - popup_->selected_line_state() == AutocompletePopupModel::KEYWORD) - popup_->SetSelectedLineState(AutocompletePopupModel::NORMAL); -} - string16 AutocompleteEditModel::DisplayTextFromUserText( const string16& text) const { return KeywordIsSelected() ? @@ -1076,9 +1044,7 @@ bool AutocompleteEditModel::ShouldAllowExactKeywordMatch( TRIM_LEADING, &keyword); // Only allow exact keyword match if |keyword| represents a keyword hint. - return keyword.length() && - !autocomplete_controller_->keyword_provider()-> - GetKeywordForText(keyword).empty(); + return keyword.length() && popup_->GetKeywordForText(keyword, &keyword); } bool AutocompleteEditModel::DoInstant(const AutocompleteMatch& match, |