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 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 | 244 |
245 if (!match.destination_url.is_valid()) { | 245 if (!match.destination_url.is_valid()) { |
246 GetInfoForCurrentText(&match, alternate_nav_url); | 246 GetInfoForCurrentText(&match, alternate_nav_url); |
247 } else if (alternate_nav_url) { | 247 } else if (alternate_nav_url) { |
248 *alternate_nav_url = AutocompleteResult::ComputeAlternateNavUrl( | 248 *alternate_nav_url = AutocompleteResult::ComputeAlternateNavUrl( |
249 autocomplete_controller()->input(), match); | 249 autocomplete_controller()->input(), match); |
250 } | 250 } |
251 return match; | 251 return match; |
252 } | 252 } |
253 | 253 |
254 bool OmniboxEditModel::UpdatePermanentText(const string16& new_permanent_text) { | 254 bool OmniboxEditModel::UpdatePermanentText() { |
255 // When there's a new URL, and the user is not editing anything or the edit | 255 // When there's a new URL, and the user is not editing anything or the edit |
256 // doesn't have focus, we want to revert the edit to show the new URL. (The | 256 // doesn't have focus, we want to revert the edit to show the new URL. (The |
257 // common case where the edit doesn't have focus is when the user has started | 257 // common case where the edit doesn't have focus is when the user has started |
258 // an edit and then abandoned it and clicked a link on the page.) | 258 // an edit and then abandoned it and clicked a link on the page.) |
259 // | 259 // |
260 // If the page is auto-committing gray text, however, we generally don't want | 260 // If the page is auto-committing gray text, however, we generally don't want |
261 // to make any change to the edit. While auto-commits modify the underlying | 261 // to make any change to the edit. While auto-commits modify the underlying |
262 // permanent URL, they're intended to have no effect on the user's editing | 262 // permanent URL, they're intended to have no effect on the user's editing |
263 // process -- before and after the auto-commit, the omnibox should show the | 263 // process -- before and after the auto-commit, the omnibox should show the |
264 // same user text and the same instant suggestion, even if the auto-commit | 264 // same user text and the same instant suggestion, even if the auto-commit |
265 // happens while the edit doesn't have focus. | 265 // happens while the edit doesn't have focus. |
| 266 string16 new_permanent_text = controller_->GetToolbarModel()->GetText(true); |
266 string16 gray_text = view_->GetGrayTextAutocompletion(); | 267 string16 gray_text = view_->GetGrayTextAutocompletion(); |
267 const bool visibly_changed_permanent_text = | 268 const bool visibly_changed_permanent_text = |
268 (permanent_text_ != new_permanent_text) && | 269 (permanent_text_ != new_permanent_text) && |
269 (!has_focus() || | 270 (!has_focus() || |
270 (!user_input_in_progress_ && !popup_model()->IsOpen())) && | 271 (!user_input_in_progress_ && !popup_model()->IsOpen())) && |
271 (gray_text.empty() || | 272 (gray_text.empty() || |
272 new_permanent_text != user_text_ + gray_text); | 273 new_permanent_text != user_text_ + gray_text); |
273 | 274 |
274 permanent_text_ = new_permanent_text; | 275 permanent_text_ = new_permanent_text; |
275 return visibly_changed_permanent_text; | 276 return visibly_changed_permanent_text; |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
717 UMA_HISTOGRAM_ENUMERATION("Omnibox.SearchEngine", | 718 UMA_HISTOGRAM_ENUMERATION("Omnibox.SearchEngine", |
718 template_url->prepopulate_id(), | 719 template_url->prepopulate_id(), |
719 TemplateURLPrepopulateData::kMaxPrepopulatedEngineID); | 720 TemplateURLPrepopulateData::kMaxPrepopulatedEngineID); |
720 } | 721 } |
721 | 722 |
722 // Get the current text before we call RevertAll() which will clear it. | 723 // Get the current text before we call RevertAll() which will clear it. |
723 string16 current_text = GetViewText(); | 724 string16 current_text = GetViewText(); |
724 | 725 |
725 if (disposition != NEW_BACKGROUND_TAB) { | 726 if (disposition != NEW_BACKGROUND_TAB) { |
726 base::AutoReset<bool> tmp(&in_revert_, true); | 727 base::AutoReset<bool> tmp(&in_revert_, true); |
727 view_->RevertAll(); // Revert the box to its unedited state | 728 view_->RevertAll(); // Revert the box to its unedited state. |
728 } | 729 } |
729 | 730 |
730 if (match.type == AutocompleteMatchType::EXTENSION_APP) { | 731 if (match.type == AutocompleteMatchType::EXTENSION_APP) { |
731 ExtensionAppProvider::LaunchAppFromOmnibox(match, profile_, disposition); | 732 ExtensionAppProvider::LaunchAppFromOmnibox(match, profile_, disposition); |
732 } else { | 733 } else { |
733 base::TimeDelta query_formulation_time = | 734 base::TimeDelta query_formulation_time = |
734 base::TimeTicks::Now() - time_user_first_modified_omnibox_; | 735 base::TimeTicks::Now() - time_user_first_modified_omnibox_; |
735 const GURL destination_url = autocomplete_controller()-> | 736 const GURL destination_url = autocomplete_controller()-> |
736 GetDestinationURL(match, query_formulation_time); | 737 GetDestinationURL(match, query_formulation_time); |
737 | 738 |
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1348 instant->OmniboxFocusChanged(state, reason, NULL); | 1349 instant->OmniboxFocusChanged(state, reason, NULL); |
1349 | 1350 |
1350 // Update state and notify view if the omnibox has focus and the caret | 1351 // Update state and notify view if the omnibox has focus and the caret |
1351 // visibility changed. | 1352 // visibility changed. |
1352 const bool was_caret_visible = is_caret_visible(); | 1353 const bool was_caret_visible = is_caret_visible(); |
1353 focus_state_ = state; | 1354 focus_state_ = state; |
1354 if (focus_state_ != OMNIBOX_FOCUS_NONE && | 1355 if (focus_state_ != OMNIBOX_FOCUS_NONE && |
1355 is_caret_visible() != was_caret_visible) | 1356 is_caret_visible() != was_caret_visible) |
1356 view_->ApplyCaretVisibility(); | 1357 view_->ApplyCaretVisibility(); |
1357 } | 1358 } |
OLD | NEW |