Index: chrome/browser/ui/omnibox/omnibox_edit_model.cc |
diff --git a/chrome/browser/ui/omnibox/omnibox_edit_model.cc b/chrome/browser/ui/omnibox/omnibox_edit_model.cc |
index 131ee220f3452f182e9fa35e129002f7e3b34feb..bf5901d5c47ac8eb5291de1fbe61987dff7a69fa 100644 |
--- a/chrome/browser/ui/omnibox/omnibox_edit_model.cc |
+++ b/chrome/browser/ui/omnibox/omnibox_edit_model.cc |
@@ -97,8 +97,7 @@ OmniboxEditModel::OmniboxEditModel(OmniboxView* view, |
is_keyword_hint_(false), |
profile_(profile), |
in_revert_(false), |
- allow_exact_keyword_match_(false), |
- instant_complete_behavior_(INSTANT_COMPLETE_DELAYED) { |
+ allow_exact_keyword_match_(false) { |
} |
OmniboxEditModel::~OmniboxEditModel() { |
@@ -186,8 +185,7 @@ void OmniboxEditModel::FinalizeInstantQuery(const string16& input_text, |
void OmniboxEditModel::SetSuggestedText(const string16& text, |
InstantCompleteBehavior behavior) { |
- instant_complete_behavior_ = behavior; |
- if (instant_complete_behavior_ == INSTANT_COMPLETE_NOW) { |
+ if (behavior == INSTANT_COMPLETE_NOW) { |
if (!text.empty()) |
FinalizeInstantQuery(view_->GetText(), text, false); |
else |
@@ -213,7 +211,8 @@ bool OmniboxEditModel::CommitSuggestedText(bool skip_inline_autocomplete) { |
bool OmniboxEditModel::AcceptCurrentInstantPreview() { |
InstantController* instant = controller_->GetInstant(); |
- return instant && instant->CommitIfCurrent(); |
+ return instant && instant->IsCurrent() && |
+ instant->CommitCurrentPreview(INSTANT_COMMIT_PRESSED_ENTER); |
} |
void OmniboxEditModel::OnChanged() { |
@@ -243,10 +242,12 @@ void OmniboxEditModel::OnChanged() { |
UMA_HISTOGRAM_ENUMERATION("AutocompleteActionPredictor.Action", |
recommended_action, |
AutocompleteActionPredictor::LAST_PREDICT_ACTION); |
+ |
string16 suggested_text; |
+ InstantCompleteBehavior complete_behavior = INSTANT_COMPLETE_NOW; |
- if (DoInstant(current_match, &suggested_text)) { |
- SetSuggestedText(suggested_text, instant_complete_behavior_); |
+ if (DoInstant(current_match, &suggested_text, &complete_behavior)) { |
+ SetSuggestedText(suggested_text, complete_behavior); |
} else { |
switch (recommended_action) { |
case AutocompleteActionPredictor::ACTION_PRERENDER: |
@@ -442,7 +443,7 @@ void OmniboxEditModel::StopAutocomplete() { |
if (popup_->IsOpen() && !in_revert_) { |
InstantController* instant = controller_->GetInstant(); |
if (instant && !instant->commit_on_pointer_release()) |
- instant->DestroyPreviewContents(); |
+ instant->Hide(); |
} |
autocomplete_controller_->Stop(true); |
@@ -630,7 +631,7 @@ void OmniboxEditModel::OpenMatch(const AutocompleteMatch& match, |
InstantController* instant = controller_->GetInstant(); |
if (instant && !popup_->IsOpen()) |
- instant->DestroyPreviewContents(); |
+ instant->Hide(); |
in_revert_ = false; |
} |
@@ -700,8 +701,7 @@ void OmniboxEditModel::OnSetFocus(bool control_down) { |
void OmniboxEditModel::OnWillKillFocus(gfx::NativeView view_gaining_focus) { |
SetSuggestedText(string16(), INSTANT_COMPLETE_NOW); |
- InstantController* instant = controller_->GetInstant(); |
- if (instant) |
+ if (InstantController* instant = controller_->GetInstant()) |
instant->OnAutocompleteLostFocus(view_gaining_focus); |
NotifySearchTabHelper(); |
@@ -1104,9 +1104,12 @@ void OmniboxEditModel::NotifySearchTabHelper() { |
} |
} |
-bool OmniboxEditModel::DoInstant(const AutocompleteMatch& match, |
- string16* suggested_text) { |
+bool OmniboxEditModel::DoInstant( |
+ const AutocompleteMatch& match, |
+ string16* suggested_text, |
+ InstantCompleteBehavior* complete_behavior) { |
DCHECK(suggested_text); |
+ DCHECK(complete_behavior); |
if (in_revert_) |
return false; |
@@ -1117,8 +1120,19 @@ bool OmniboxEditModel::DoInstant(const AutocompleteMatch& match, |
return false; |
if (user_input_in_progress_ && popup_->IsOpen()) { |
- return instant->Update(match, view_->GetText(), UseVerbatimInstant(), |
- suggested_text); |
+ string16 text = view_->GetText(); |
+ AutocompleteInput::RemoveForcedQueryStringIfNecessary( |
+ autocomplete_controller_->input().type(), &text); |
+ |
+ // If there's any inline autocompletion, split it out from |text|. |
+ if (!inline_autocomplete_text_.empty()) { |
+ DCHECK_GE(text.size(), inline_autocomplete_text_.size()); |
+ text.resize(text.size() - inline_autocomplete_text_.size()); |
+ *suggested_text = inline_autocomplete_text_; |
+ } |
+ |
+ return instant->Update(match, text, UseVerbatimInstant(), suggested_text, |
+ complete_behavior); |
} |
// It's possible DoInstant() was called due to an OnChanged() event from the |