summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autocomplete/autocomplete_edit.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/autocomplete/autocomplete_edit.cc')
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit.cc72
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,