Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/omnibox/omnibox_edit_model.h" | 5 #include "chrome/browser/ui/omnibox/omnibox_edit_model.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 642 is_keyword_hint_ = false; | 642 is_keyword_hint_ = false; |
| 643 | 643 |
| 644 if (popup_->IsOpen()) | 644 if (popup_->IsOpen()) |
| 645 popup_->SetSelectedLineState(OmniboxPopupModel::KEYWORD); | 645 popup_->SetSelectedLineState(OmniboxPopupModel::KEYWORD); |
| 646 else | 646 else |
| 647 StartAutocomplete(false, true); | 647 StartAutocomplete(false, true); |
| 648 | 648 |
| 649 // Ensure the current selection is saved before showing keyword mode | 649 // Ensure the current selection is saved before showing keyword mode |
| 650 // so that moving to another line and then reverting the text will restore | 650 // so that moving to another line and then reverting the text will restore |
| 651 // the current state properly. | 651 // the current state properly. |
| 652 bool save_original_selection = !has_temporary_text_; | |
| 653 has_temporary_text_ = true; | |
| 652 view_->OnTemporaryTextMaybeChanged( | 654 view_->OnTemporaryTextMaybeChanged( |
| 653 DisplayTextFromUserText(CurrentMatch().fill_into_edit), | 655 DisplayTextFromUserText(CurrentMatch().fill_into_edit), |
| 654 !has_temporary_text_); | 656 save_original_selection); |
| 655 has_temporary_text_ = true; | |
| 656 | 657 |
| 657 content::RecordAction(UserMetricsAction("AcceptedKeywordHint")); | 658 content::RecordAction(UserMetricsAction("AcceptedKeywordHint")); |
| 658 return true; | 659 return true; |
| 659 } | 660 } |
| 660 | 661 |
| 661 void OmniboxEditModel::ClearKeyword(const string16& visible_text) { | 662 void OmniboxEditModel::ClearKeyword(const string16& visible_text) { |
| 662 autocomplete_controller_->Stop(false); | 663 autocomplete_controller_->Stop(false); |
| 663 ClearPopupKeywordMode(); | 664 ClearPopupKeywordMode(); |
| 664 | 665 |
| 665 const string16 window_text(keyword_ + visible_text); | 666 const string16 window_text(keyword_ + visible_text); |
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1113 | 1114 |
| 1114 if (in_revert_) | 1115 if (in_revert_) |
| 1115 return false; | 1116 return false; |
| 1116 | 1117 |
| 1117 InstantController* instant = controller_->GetInstant(); | 1118 InstantController* instant = controller_->GetInstant(); |
| 1118 | 1119 |
| 1119 if (!instant) | 1120 if (!instant) |
| 1120 return false; | 1121 return false; |
| 1121 | 1122 |
| 1122 if (user_input_in_progress_ && popup_->IsOpen()) { | 1123 if (user_input_in_progress_ && popup_->IsOpen()) { |
| 1123 string16 text = view_->GetText(); | 1124 // The two pieces of text we want to send Instant, viz., what the user has |
| 1124 AutocompleteInput::RemoveForcedQueryStringIfNecessary( | 1125 // typed, and any inline autocomplete suggestion. |
| 1125 autocomplete_controller_->input().type(), &text); | 1126 string16 user_text = user_text_; |
| 1127 *suggested_text = inline_autocomplete_text_; | |
| 1126 | 1128 |
| 1127 // If there's any inline autocompletion, split it out from |text|. | 1129 // If the user has selected some other text (say from the drop down), use |
|
Peter Kasting
2012/08/10 21:39:10
Nit: Change to:
If there's temporary text, that o
sreeram
2012/08/10 22:34:13
Done.
| |
| 1128 if (!inline_autocomplete_text_.empty()) { | 1130 // that instead (in which case, inline text should always be blank). |
| 1129 DCHECK_GE(text.size(), inline_autocomplete_text_.size()); | 1131 if (has_temporary_text_) { |
| 1130 text.resize(text.size() - inline_autocomplete_text_.size()); | 1132 user_text = CurrentMatch().fill_into_edit; |
| 1131 *suggested_text = inline_autocomplete_text_; | 1133 suggested_text->clear(); |
| 1132 } | 1134 } |
| 1133 | 1135 |
| 1134 return instant->Update(match, text, UseVerbatimInstant(), suggested_text, | 1136 // Remove any keywords and "?" prefix. |
| 1135 complete_behavior); | 1137 user_text = DisplayTextFromUserText(user_text); |
| 1138 AutocompleteInput::RemoveForcedQueryStringIfNecessary( | |
| 1139 autocomplete_controller_->input().type(), &user_text); | |
| 1140 | |
| 1141 return instant->Update(match, user_text, UseVerbatimInstant(), | |
| 1142 suggested_text, complete_behavior); | |
| 1136 } | 1143 } |
| 1137 | 1144 |
| 1138 // It's possible DoInstant() was called due to an OnChanged() event from the | 1145 // It's possible DoInstant() was called due to an OnChanged() event from the |
| 1139 // omnibox view if the user clicked the renderer while IME composition was | 1146 // omnibox view if the user clicked the renderer while IME composition was |
| 1140 // active. In that case we still want to commit on mouse up, so don't call | 1147 // active. In that case we still want to commit on mouse up, so don't call |
| 1141 // Hide(). | 1148 // Hide(). |
| 1142 if (!instant->commit_on_pointer_release()) | 1149 if (!instant->commit_on_pointer_release()) |
| 1143 instant->Hide(); | 1150 instant->Hide(); |
| 1144 return false; | 1151 return false; |
| 1145 } | 1152 } |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1205 } | 1212 } |
| 1206 | 1213 |
| 1207 void OmniboxEditModel::ClassifyStringForPasteAndGo( | 1214 void OmniboxEditModel::ClassifyStringForPasteAndGo( |
| 1208 const string16& text, | 1215 const string16& text, |
| 1209 AutocompleteMatch* match, | 1216 AutocompleteMatch* match, |
| 1210 GURL* alternate_nav_url) const { | 1217 GURL* alternate_nav_url) const { |
| 1211 DCHECK(match); | 1218 DCHECK(match); |
| 1212 AutocompleteClassifierFactory::GetForProfile(profile_)->Classify(text, | 1219 AutocompleteClassifierFactory::GetForProfile(profile_)->Classify(text, |
| 1213 string16(), false, false, match, alternate_nav_url); | 1220 string16(), false, false, match, alternate_nav_url); |
| 1214 } | 1221 } |
| OLD | NEW |