OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/format_macros.h" | 10 #include "base/format_macros.h" |
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1013 } | 1013 } |
1014 | 1014 |
1015 // Handle changes to temporary text. | 1015 // Handle changes to temporary text. |
1016 if (destination_for_temporary_text_change != NULL) { | 1016 if (destination_for_temporary_text_change != NULL) { |
1017 const bool save_original_selection = !has_temporary_text_; | 1017 const bool save_original_selection = !has_temporary_text_; |
1018 if (save_original_selection) { | 1018 if (save_original_selection) { |
1019 // Save the original selection and URL so it can be reverted later. | 1019 // Save the original selection and URL so it can be reverted later. |
1020 has_temporary_text_ = true; | 1020 has_temporary_text_ = true; |
1021 original_url_ = *destination_for_temporary_text_change; | 1021 original_url_ = *destination_for_temporary_text_change; |
1022 inline_autocomplete_text_.clear(); | 1022 inline_autocomplete_text_.clear(); |
| 1023 view_->OnInlineAutocompleteTextCleared(); |
1023 } | 1024 } |
1024 if (control_key_state_ == DOWN_WITHOUT_CHANGE) { | 1025 if (control_key_state_ == DOWN_WITHOUT_CHANGE) { |
1025 // Arrowing around the popup cancels control-enter. | 1026 // Arrowing around the popup cancels control-enter. |
1026 control_key_state_ = DOWN_WITH_CHANGE; | 1027 control_key_state_ = DOWN_WITH_CHANGE; |
1027 // Now things are a bit screwy: the desired_tld has changed, but if we | 1028 // Now things are a bit screwy: the desired_tld has changed, but if we |
1028 // update the popup, the new order of entries won't match the old, so the | 1029 // update the popup, the new order of entries won't match the old, so the |
1029 // user's selection gets screwy; and if we don't update the popup, and the | 1030 // user's selection gets screwy; and if we don't update the popup, and the |
1030 // user reverts, then the selected item will be as if control is still | 1031 // user reverts, then the selected item will be as if control is still |
1031 // pressed, even though maybe it isn't any more. There is no obvious | 1032 // pressed, even though maybe it isn't any more. There is no obvious |
1032 // right answer here :( | 1033 // right answer here :( |
1033 } | 1034 } |
1034 view_->OnTemporaryTextMaybeChanged(DisplayTextFromUserText(text), | 1035 view_->OnTemporaryTextMaybeChanged(DisplayTextFromUserText(text), |
1035 save_original_selection, true); | 1036 save_original_selection, true); |
1036 return; | 1037 return; |
1037 } | 1038 } |
1038 | 1039 |
1039 bool call_controller_onchanged = true; | 1040 bool call_controller_onchanged = true; |
1040 inline_autocomplete_text_ = text; | 1041 inline_autocomplete_text_ = text; |
| 1042 if (inline_autocomplete_text_.empty()) |
| 1043 view_->OnInlineAutocompleteTextCleared(); |
1041 | 1044 |
1042 string16 user_text = user_input_in_progress_ ? user_text_ : permanent_text_; | 1045 string16 user_text = user_input_in_progress_ ? user_text_ : permanent_text_; |
1043 if (keyword_state_changed && KeywordIsSelected()) { | 1046 if (keyword_state_changed && KeywordIsSelected()) { |
1044 // If we reach here, the user most likely entered keyword mode by inserting | 1047 // If we reach here, the user most likely entered keyword mode by inserting |
1045 // a space between a keyword name and a search string (as pressing space or | 1048 // a space between a keyword name and a search string (as pressing space or |
1046 // tab after the keyword name alone would have been be handled in | 1049 // tab after the keyword name alone would have been be handled in |
1047 // MaybeAcceptKeywordBySpace() by calling AcceptKeyword(), which won't reach | 1050 // MaybeAcceptKeywordBySpace() by calling AcceptKeyword(), which won't reach |
1048 // here). In this case, we don't want to call | 1051 // here). In this case, we don't want to call |
1049 // OnInlineAutocompleteTextMaybeChanged() as normal, because that will | 1052 // OnInlineAutocompleteTextMaybeChanged() as normal, because that will |
1050 // correctly change the text (to the search string alone) but move the caret | 1053 // correctly change the text (to the search string alone) but move the caret |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1211 } | 1214 } |
1212 | 1215 |
1213 bool OmniboxEditModel::query_in_progress() const { | 1216 bool OmniboxEditModel::query_in_progress() const { |
1214 return !autocomplete_controller()->done(); | 1217 return !autocomplete_controller()->done(); |
1215 } | 1218 } |
1216 | 1219 |
1217 void OmniboxEditModel::InternalSetUserText(const string16& text) { | 1220 void OmniboxEditModel::InternalSetUserText(const string16& text) { |
1218 user_text_ = text; | 1221 user_text_ = text; |
1219 just_deleted_text_ = false; | 1222 just_deleted_text_ = false; |
1220 inline_autocomplete_text_.clear(); | 1223 inline_autocomplete_text_.clear(); |
| 1224 view_->OnInlineAutocompleteTextCleared(); |
1221 } | 1225 } |
1222 | 1226 |
1223 bool OmniboxEditModel::KeywordIsSelected() const { | 1227 bool OmniboxEditModel::KeywordIsSelected() const { |
1224 return !is_keyword_hint_ && !keyword_.empty(); | 1228 return !is_keyword_hint_ && !keyword_.empty(); |
1225 } | 1229 } |
1226 | 1230 |
1227 void OmniboxEditModel::ClearPopupKeywordMode() const { | 1231 void OmniboxEditModel::ClearPopupKeywordMode() const { |
1228 omnibox_controller_->ClearPopupKeywordMode(); | 1232 omnibox_controller_->ClearPopupKeywordMode(); |
1229 } | 1233 } |
1230 | 1234 |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1390 instant->OmniboxFocusChanged(state, reason, NULL); | 1394 instant->OmniboxFocusChanged(state, reason, NULL); |
1391 | 1395 |
1392 // Update state and notify view if the omnibox has focus and the caret | 1396 // Update state and notify view if the omnibox has focus and the caret |
1393 // visibility changed. | 1397 // visibility changed. |
1394 const bool was_caret_visible = is_caret_visible(); | 1398 const bool was_caret_visible = is_caret_visible(); |
1395 focus_state_ = state; | 1399 focus_state_ = state; |
1396 if (focus_state_ != OMNIBOX_FOCUS_NONE && | 1400 if (focus_state_ != OMNIBOX_FOCUS_NONE && |
1397 is_caret_visible() != was_caret_visible) | 1401 is_caret_visible() != was_caret_visible) |
1398 view_->ApplyCaretVisibility(); | 1402 view_->ApplyCaretVisibility(); |
1399 } | 1403 } |
OLD | NEW |