| 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 02eb0f1102c50386d8ad588f590a9878967eb2f1..5a896518b4950c158196721bb311b55483a2f4cf 100644 | 
| --- a/chrome/browser/ui/omnibox/omnibox_edit_model.cc | 
| +++ b/chrome/browser/ui/omnibox/omnibox_edit_model.cc | 
| @@ -313,20 +313,16 @@ bool OmniboxEditModel::UseVerbatimInstant() { | 
| return true; | 
| #endif | 
|  | 
| -  // The value of input.prevent_inline_autocomplete() is determined by | 
| +  // The value of input.prevent_inline_autocomplete() is determined by the | 
| // following conditions: | 
| -  // 1. If the caret is at the end of the text (checked below). | 
| +  // 1. If the caret is at the end of the text. | 
| // 2. If it's in IME composition mode. | 
| -  // As we use a separated widget for displaying the Instant suggest, it won't | 
| -  // interfere with IME composition, so we don't need to care about the value of | 
| +  // We send the caret position to Instant (so it can determine #1 itself), and | 
| +  // we use a separated widget for displaying the Instant suggest (so it doesn't | 
| +  // interfere with #2). So, we don't need to care about the value of | 
| // input.prevent_inline_autocomplete() here. | 
| -  if (view_->DeleteAtEndPressed() || (popup_->selected_line() != 0) || | 
| -      just_deleted_text_ || !inline_autocomplete_text_.empty()) | 
| -    return true; | 
| - | 
| -  size_t start, end; | 
| -  view_->GetSelectionBounds(&start, &end); | 
| -  return (start != end) || (start != view_->GetText().length()); | 
| +  return view_->DeleteAtEndPressed() || popup_->selected_line() != 0 || | 
| +         just_deleted_text_; | 
| } | 
|  | 
| string16 OmniboxEditModel::GetDesiredTLD() const { | 
| @@ -1189,17 +1185,9 @@ bool OmniboxEditModel::DoInstant(const AutocompleteMatch& match) { | 
|  | 
| // The two pieces of text we want to send Instant, viz., what the user has | 
| // typed, and the full omnibox text including any inline autocompletion. | 
| -  string16 user_text = user_text_; | 
| -  string16 full_text = user_text_ + inline_autocomplete_text_; | 
| - | 
| -  // If there's temporary text, that overrides the user_text. In this case, we | 
| -  // should ignore any inline_autocomplete_text_, because it won't be visible. | 
| -  if (has_temporary_text_) | 
| -    user_text = full_text = CurrentMatch().fill_into_edit; | 
| - | 
| -  // Remove keyword if we're in keyword mode. | 
| -  user_text = DisplayTextFromUserText(user_text); | 
| -  full_text = DisplayTextFromUserText(full_text); | 
| +  string16 user_text = has_temporary_text_ ? | 
| +      match.fill_into_edit : DisplayTextFromUserText(user_text_); | 
| +  string16 full_text = view_->GetText(); | 
|  | 
| // Remove "?" if we're in forced query mode. | 
| AutocompleteInput::RemoveForcedQueryStringIfNecessary( | 
| @@ -1207,8 +1195,11 @@ bool OmniboxEditModel::DoInstant(const AutocompleteMatch& match) { | 
| AutocompleteInput::RemoveForcedQueryStringIfNecessary( | 
| autocomplete_controller_->input().type(), &full_text); | 
|  | 
| -  return instant->Update(match, user_text, full_text, UseVerbatimInstant(), | 
| -                         user_input_in_progress_, popup_->IsOpen()); | 
| +  size_t start, end; | 
| +  view_->GetSelectionBounds(&start, &end); | 
| + | 
| +  return instant->Update(match, user_text, full_text, start, end, | 
| +      UseVerbatimInstant(), user_input_in_progress_, popup_->IsOpen()); | 
| } | 
|  | 
| void OmniboxEditModel::DoPrerender(const AutocompleteMatch& match) { | 
|  |