Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Unified Diff: chrome/browser/ui/omnibox/omnibox_edit_model.cc

Issue 232023004: Ensures the autocomplete_controller input is saved and restored when changing tabs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed broken browser test. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 a34048f170de4481246cf850983e7e9d77bb8296..d5029b571c5abce2dcdaab99d027ee8b7634fa76 100644
--- a/chrome/browser/ui/omnibox/omnibox_edit_model.cc
+++ b/chrome/browser/ui/omnibox/omnibox_edit_model.cc
@@ -17,7 +17,6 @@
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/autocomplete/autocomplete_classifier.h"
#include "chrome/browser/autocomplete/autocomplete_classifier_factory.h"
-#include "chrome/browser/autocomplete/autocomplete_input.h"
#include "chrome/browser/autocomplete/autocomplete_provider.h"
#include "chrome/browser/autocomplete/extension_app_provider.h"
#include "chrome/browser/autocomplete/history_url_provider.h"
@@ -175,7 +174,8 @@ OmniboxEditModel::State::State(bool user_input_in_progress,
bool is_keyword_hint,
bool url_replacement_enabled,
OmniboxFocusState focus_state,
- FocusSource focus_source)
+ FocusSource focus_source,
+ const AutocompleteInput& autocomplete_input)
: user_input_in_progress(user_input_in_progress),
user_text(user_text),
gray_text(gray_text),
@@ -183,7 +183,8 @@ OmniboxEditModel::State::State(bool user_input_in_progress,
is_keyword_hint(is_keyword_hint),
url_replacement_enabled(url_replacement_enabled),
focus_state(focus_state),
- focus_source(focus_source) {
+ focus_source(focus_source),
+ autocomplete_input(autocomplete_input) {
}
OmniboxEditModel::State::~State() {
@@ -240,7 +241,7 @@ const OmniboxEditModel::State OmniboxEditModel::GetStateForTabSwitch() {
user_input_in_progress_, user_text_, view_->GetGrayTextAutocompletion(),
keyword_, is_keyword_hint_,
controller_->GetToolbarModel()->url_replacement_enabled(),
- focus_state_, focus_source_);
+ focus_state_, focus_source_, input_);
}
void OmniboxEditModel::RestoreState(const State* state) {
@@ -252,6 +253,9 @@ void OmniboxEditModel::RestoreState(const State* state) {
// Don't muck with the search term replacement state, as we've just set it
// correctly.
view_->RevertWithoutResettingSearchTermReplacement();
+ // Restore the autocomplete controller's input, or clear it if this is a new
+ // tab.
+ input_ = state ? state->autocomplete_input : AutocompleteInput();
if (!state)
return;
@@ -278,7 +282,7 @@ AutocompleteMatch OmniboxEditModel::CurrentMatch(
GetInfoForCurrentText(&match, alternate_nav_url);
} else if (alternate_nav_url) {
*alternate_nav_url = AutocompleteResult::ComputeAlternateNavUrl(
- autocomplete_controller()->input(), match);
+ input_, match);
}
return match;
}
@@ -537,7 +541,7 @@ void OmniboxEditModel::Revert() {
void OmniboxEditModel::StartAutocomplete(
bool has_selected_text,
- bool prevent_inline_autocomplete) const {
+ bool prevent_inline_autocomplete) {
size_t cursor_position;
if (inline_autocomplete_text_.empty()) {
// Cursor position is equivalent to the current selection's end.
@@ -567,16 +571,20 @@ void OmniboxEditModel::StartAutocomplete(
(delegate_->CurrentPageExists() && view_->IsIndicatingQueryRefinement()) ?
delegate_->GetURL() : GURL();
bool keyword_is_selected = KeywordIsSelected();
- omnibox_controller_->StartAutocomplete(
+ input_ = AutocompleteInput(
user_text_,
cursor_position,
+ base::string16(),
current_url,
ClassifyPage(),
prevent_inline_autocomplete || just_deleted_text_ ||
(has_selected_text && inline_autocomplete_text_.empty()) ||
(paste_state_ != NONE),
keyword_is_selected,
- keyword_is_selected || allow_exact_keyword_match_);
+ keyword_is_selected || allow_exact_keyword_match_,
+ true);
+
+ omnibox_controller_->StartAutocomplete(input_);
}
void OmniboxEditModel::StopAutocomplete() {
@@ -630,18 +638,18 @@ void OmniboxEditModel::AcceptInput(WindowOpenDisposition disposition,
// to "foodnetwork.com", ctrl-enter will navigate to "foo.com", not
// "foodnetwork.com". At the time of writing, this behavior matches
// Internet Explorer, but not Firefox.
- const AutocompleteInput& old_input = autocomplete_controller()->input();
- AutocompleteInput input(
+ input_ = AutocompleteInput(
has_temporary_text_ ?
- UserTextFromDisplayText(view_->GetText()) : old_input.text(),
- old_input.cursor_position(), base::ASCIIToUTF16("com"),
- GURL(), old_input.current_page_classification(),
- old_input.prevent_inline_autocomplete(), old_input.prefer_keyword(),
- old_input.allow_exact_keyword_match(),
- old_input.want_asynchronous_matches());
+ UserTextFromDisplayText(view_->GetText()) : input_.text(),
+ input_.cursor_position(), base::ASCIIToUTF16("com"),
+ GURL(), input_.current_page_classification(),
+ input_.prevent_inline_autocomplete(), input_.prefer_keyword(),
+ input_.allow_exact_keyword_match(),
+ input_.want_asynchronous_matches());
AutocompleteMatch url_match(
autocomplete_controller()->history_url_provider()->SuggestExactInput(
- input.text(), input.canonicalized_url(), false));
+ input_.text(), input_.canonicalized_url(), false));
+
if (url_match.destination_url.is_valid()) {
// We have a valid URL, we use this newly generated AutocompleteMatch.
@@ -723,7 +731,7 @@ void OmniboxEditModel::OpenMatch(AutocompleteMatch match,
OmniboxLog log(
input_text,
just_deleted_text_,
- autocomplete_controller()->input().type(),
+ input_.type(),
index,
-1, // don't yet know tab ID; set later if appropriate
ClassifyPage(),
« no previous file with comments | « chrome/browser/ui/omnibox/omnibox_edit_model.h ('k') | chrome/browser/ui/omnibox/omnibox_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698