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

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

Issue 18223002: InstantExtended: Remove overlay control code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Call renamed method. Created 7 years, 6 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
« no previous file with comments | « chrome/browser/ui/omnibox/omnibox_edit_model.h ('k') | chrome/browser/ui/search/instant_commit_type.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 642ad0ce7d8da23af076a81c69ba03e154343a84..405e407a1c3b13b1e2822780a520d18516aab3ca 100644
--- a/chrome/browser/ui/omnibox/omnibox_edit_model.cc
+++ b/chrome/browser/ui/omnibox/omnibox_edit_model.cc
@@ -127,15 +127,11 @@ OmniboxEditModel::OmniboxEditModel(OmniboxView* view,
user_input_in_progress_(false),
just_deleted_text_(false),
has_temporary_text_(false),
- is_temporary_text_set_by_instant_(false),
- selected_instant_autocomplete_match_index_(OmniboxPopupModel::kNoMatch),
- is_instant_temporary_text_a_search_query_(false),
paste_state_(NONE),
control_key_state_(UP),
is_keyword_hint_(false),
profile_(profile),
in_revert_(false),
- in_escape_handler_(false),
allow_exact_keyword_match_(false) {
omnibox_controller_.reset(new OmniboxController(this, profile));
delegate_.reset(new OmniboxCurrentPageDelegateImpl(controller, profile));
@@ -232,17 +228,10 @@ void OmniboxEditModel::SetUserText(const string16& text) {
omnibox_controller_->InvalidateCurrentMatch();
paste_state_ = NONE;
has_temporary_text_ = false;
- is_temporary_text_set_by_instant_ = false;
- selected_instant_autocomplete_match_index_ = OmniboxPopupModel::kNoMatch;
- is_instant_temporary_text_a_search_query_ = false;
}
void OmniboxEditModel::SetInstantSuggestion(
const InstantSuggestion& suggestion) {
-// Should only get called for the HTML popup.
-#if defined(HTML_INSTANT_EXTENDED_POPUP)
- omnibox_controller_->SetInstantSuggestion(suggestion);
-#endif
}
bool OmniboxEditModel::CommitSuggestedText() {
@@ -287,24 +276,8 @@ void OmniboxEditModel::OnChanged() {
recommended_action,
AutocompleteActionPredictor::LAST_PREDICT_ACTION);
- // Do not perform instant if we're currently reverting or the change is the
- // result of an INSTANT_COMPLETE_REPLACE instant suggestion.
- bool performed_instant = false;
- if (!in_revert_ && !is_temporary_text_set_by_instant_) {
- size_t start, end;
- view_->GetSelectionBounds(&start, &end);
- string16 user_text = DisplayTextFromUserText(user_text_);
- performed_instant = omnibox_controller_->DoInstant(
- current_match, user_text, view_->GetText(), start, end,
- user_input_in_progress_, in_escape_handler_,
- view_->DeleteAtEndPressed() || just_deleted_text_,
- KeywordIsSelected());
- }
-
- if (!performed_instant) {
- // Hide any suggestions we might be showing.
- view_->SetInstantSuggestion(string16());
- }
+ // Hide any suggestions we might be showing.
+ view_->SetInstantSuggestion(string16());
switch (recommended_action) {
case AutocompleteActionPredictor::ACTION_PRERENDER:
@@ -429,9 +402,6 @@ void OmniboxEditModel::Revert() {
keyword_.clear();
is_keyword_hint_ = false;
has_temporary_text_ = false;
- is_temporary_text_set_by_instant_ = false;
- selected_instant_autocomplete_match_index_ = OmniboxPopupModel::kNoMatch;
- is_instant_temporary_text_a_search_query_ = false;
view_->SetWindowTextAndCaretPos(permanent_text_,
has_focus() ? permanent_text_.length() : 0,
false, true);
@@ -605,7 +575,6 @@ void OmniboxEditModel::OpenMatch(const AutocompleteMatch& match,
elapsed_time_since_last_change_to_default_match =
base::TimeDelta::FromMilliseconds(-1);
}
- // TODO(sreeram): Handle is_temporary_text_set_by_instant_ correctly.
OmniboxLog log(
autocomplete_controller()->input().text(),
just_deleted_text_,
@@ -711,20 +680,6 @@ void OmniboxEditModel::OpenMatch(const AutocompleteMatch& match,
content::RecordAction(UserMetricsAction(
"OmniboxDestinationURLMatchesDefaultSearchProvider"));
-#if defined(HTML_INSTANT_EXTENDED_POPUP)
- // If running with instant, notify the instant controller that a navigation
- // is about to take place if we are navigating to a URL. This can be
- // determined by inspecting the transition type. To ensure that this is only
- // done on Enter key press, check that the disposition is CURRENT_TAB. This
- // is the same heuristic used by BrowserInstantController::OpenInstant
- if (match.transition == content::PAGE_TRANSITION_TYPED &&
- disposition == CURRENT_TAB) {
- InstantController* instant = GetInstantController();
- if (instant)
- instant->OmniboxNavigateToURL();
- }
-#endif
-
// This calls RevertAll again.
base::AutoReset<bool> tmp(&in_revert_, true);
controller_->OnAutocompleteAccept(destination_url, disposition,
@@ -751,9 +706,6 @@ bool OmniboxEditModel::AcceptKeyword(EnteredKeywordModeMethod entered_method) {
// the current state properly.
bool save_original_selection = !has_temporary_text_;
has_temporary_text_ = true;
- is_temporary_text_set_by_instant_ = false;
- selected_instant_autocomplete_match_index_ = OmniboxPopupModel::kNoMatch;
- is_instant_temporary_text_a_search_query_ = false;
view_->OnTemporaryTextMaybeChanged(
DisplayTextFromUserText(CurrentMatch(NULL).fill_into_edit),
save_original_selection, true);
@@ -768,10 +720,6 @@ bool OmniboxEditModel::AcceptKeyword(EnteredKeywordModeMethod entered_method) {
void OmniboxEditModel::AcceptTemporaryTextAsUserText() {
InternalSetUserText(UserTextFromDisplayText(view_->GetText()));
has_temporary_text_ = false;
- is_temporary_text_set_by_instant_ = false;
- selected_instant_autocomplete_match_index_ = OmniboxPopupModel::kNoMatch;
- is_instant_temporary_text_a_search_query_ = false;
- OnPopupBoundsChanged(gfx::Rect());
delegate_->NotifySearchTabHelper(user_input_in_progress_, !in_revert_,
popup_model()->IsOpen(), user_text_.empty());
}
@@ -877,14 +825,12 @@ bool OmniboxEditModel::OnEscapeKeyPressed() {
if (!user_input_in_progress_ && view_->IsSelectAll())
return false;
- in_escape_handler_ = true;
if (!user_text_.empty()) {
UMA_HISTOGRAM_ENUMERATION(kOmniboxUserTextClearedHistogram,
OMNIBOX_USER_TEXT_CLEARED_WITH_ESCAPE,
OMNIBOX_USER_TEXT_CLEARED_NUM_OF_ITEMS);
}
view_->RevertAll();
- in_escape_handler_ = false;
view_->SelectAll(true);
return true;
}
@@ -897,18 +843,6 @@ void OmniboxEditModel::OnControlKeyChanged(bool pressed) {
void OmniboxEditModel::OnUpOrDownKeyPressed(int count) {
// NOTE: This purposefully doesn't trigger any code that resets paste_state_.
if (popup_model()->IsOpen()) {
-#if defined(HTML_INSTANT_EXTENDED_POPUP)
- InstantController* instant = GetInstantController();
- if (instant && instant->OnUpOrDownKeyPressed(count)) {
- // If Instant handles the key press, it's showing a list of suggestions
- // that it's stepping through. In that case, our popup model is
- // irrelevant, so don't process the key press ourselves. However, do stop
- // the autocomplete system from changing the results.
- autocomplete_controller()->Stop(false);
- return;
- }
-#endif
-
// The popup is open, so the user should be able to interact with it
// normally.
popup_model()->Move(count);
@@ -959,9 +893,6 @@ void OmniboxEditModel::OnPopupDataChanged(
if (save_original_selection) {
// Save the original selection and URL so it can be reverted later.
has_temporary_text_ = true;
- is_temporary_text_set_by_instant_ = false;
- selected_instant_autocomplete_match_index_ = OmniboxPopupModel::kNoMatch;
- is_instant_temporary_text_a_search_query_ = false;
original_url_ = *destination_for_temporary_text_change;
inline_autocomplete_text_.clear();
}
@@ -1067,9 +998,6 @@ bool OmniboxEditModel::OnAfterPossibleChange(const string16& old_text,
if (user_text_changed) {
InternalSetUserText(UserTextFromDisplayText(new_text));
has_temporary_text_ = false;
- is_temporary_text_set_by_instant_ = false;
- selected_instant_autocomplete_match_index_ = OmniboxPopupModel::kNoMatch;
- is_instant_temporary_text_a_search_query_ = false;
// Track when the user has deleted text so we won't allow inline
// autocomplete.
@@ -1121,38 +1049,27 @@ bool OmniboxEditModel::OnAfterPossibleChange(const string16& old_text,
MaybeAcceptKeywordBySpace(user_text_));
}
-void OmniboxEditModel::OnCurrentMatchChanged(bool is_temporary_set_by_instant) {
- has_temporary_text_ = is_temporary_set_by_instant;
- is_temporary_text_set_by_instant_ = is_temporary_set_by_instant;
+void OmniboxEditModel::OnCurrentMatchChanged() {
+ has_temporary_text_ = false;
const AutocompleteMatch& match = omnibox_controller_->current_match();
- if (is_temporary_set_by_instant) {
- view_->OnTemporaryTextMaybeChanged(
- DisplayTextFromUserText(match.fill_into_edit), !has_temporary_text_,
- false);
- } else {
- // We store |keyword| and |is_keyword_hint| in temporary variables since
- // OnPopupDataChanged use their previous state to detect changes.
- string16 keyword;
- bool is_keyword_hint;
- match.GetKeywordUIState(profile_, &keyword, &is_keyword_hint);
- string16 inline_autocomplete_text;
- if (match.inline_autocomplete_offset < match.fill_into_edit.length()) {
- // We have blue text, go through OnPopupDataChanged.
- // TODO(beaudoin): Merge OnPopupDataChanged with this method once the
- // popup handling has completely migrated to omnibox_controller.
- inline_autocomplete_text =
- match.fill_into_edit.substr(match.inline_autocomplete_offset);
- }
- popup_model()->OnResultChanged();
- OnPopupDataChanged(inline_autocomplete_text, NULL, keyword,
- is_keyword_hint);
+ // We store |keyword| and |is_keyword_hint| in temporary variables since
+ // OnPopupDataChanged use their previous state to detect changes.
+ string16 keyword;
+ bool is_keyword_hint;
+ match.GetKeywordUIState(profile_, &keyword, &is_keyword_hint);
+ string16 inline_autocomplete_text;
+ if (match.inline_autocomplete_offset < match.fill_into_edit.length()) {
+ // We have blue text, go through OnPopupDataChanged.
+ // TODO(beaudoin): Merge OnPopupDataChanged with this method once the
+ // popup handling has completely migrated to omnibox_controller.
+ inline_autocomplete_text =
+ match.fill_into_edit.substr(match.inline_autocomplete_offset);
}
-}
-
-void OmniboxEditModel::OnGrayTextChanged() {
- view_->SetInstantSuggestion(omnibox_controller_->gray_suggestion());
+ popup_model()->OnResultChanged();
+ OnPopupDataChanged(inline_autocomplete_text, NULL, keyword,
+ is_keyword_hint);
}
string16 OmniboxEditModel::GetViewText() const {
@@ -1210,56 +1127,6 @@ void OmniboxEditModel::GetInfoForCurrentText(AutocompleteMatch* match,
match->destination_url =
delegate_->GetNavigationController().GetVisibleEntry()->GetURL();
match->transition = content::PAGE_TRANSITION_RELOAD;
-#if defined(HTML_INSTANT_EXTENDED_POPUP)
- } else if (is_temporary_text_set_by_instant_) {
- // If there's temporary text and it has been set by Instant, we won't find
- // it in the popup model, so create the match based on the type Instant told
- // us (SWYT for queries and UWYT for URLs). We do this instead of
- // classifying the text ourselves because the text may look like a URL, but
- // Instant may expect it to be a search (e.g.: a query for "amazon.com").
- if (selected_instant_autocomplete_match_index_ !=
- OmniboxPopupModel::kNoMatch) {
- // Great, we know the exact match struct. Just use that.
- const AutocompleteResult& result = this->result();
- *match = result.match_at(selected_instant_autocomplete_match_index_);
- } else {
- const string16& text = view_->GetText();
- AutocompleteInput input(text, string16::npos, string16(), GURL(), false,
- false, false, AutocompleteInput::BEST_MATCH);
- // Only the destination_url and the transition of the match will be be
- // used (to either navigate to the URL or let Instant commit its preview).
- // The match won't be used for logging, displaying in the dropdown, etc.
- // So, it's okay to pass in mostly bogus params (such as relevance = 0).
- // TODO(sreeram): Always using NO_SUGGESTIONS_AVAILABLE is wrong when
- // Instant is using the local fallback overlay. Fix.
- if (is_instant_temporary_text_a_search_query_) {
- const TemplateURL* default_provider =
- TemplateURLServiceFactory::GetForProfile(profile_)->
- GetDefaultSearchProvider();
- if (default_provider && default_provider->SupportsReplacement()) {
- *match = SearchProvider::CreateSearchSuggestion(
- autocomplete_controller()->search_provider(), 0,
- AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED, default_provider,
- text, text, input, false,
- TemplateURLRef::NO_SUGGESTIONS_AVAILABLE,
- controller_->GetOmniboxBounds().x(), true);
- } else {
- // Can't create a new search match. Leave |match| as is, with an
- // invalid destination_url. This shouldn't ever happen. For example,
- // even if a group policy update in the midst of interacting with
- // Instant leaves us without a valid search provider, Instant
- // should've observed the update and reset
- // |is_temporary_text_set_by_instant_|, so we still shouldn't get
- // here. However, as protection against the unknowns and Instant
- // regressions, we simply return an invalid match instead of crashing
- // (hence no DCHECK).
- }
- } else {
- *match = HistoryURLProvider::SuggestExactInput(
- autocomplete_controller()->history_url_provider(), input, false);
- }
- }
-#endif
} else if (popup_model()->IsOpen() || query_in_progress()) {
if (query_in_progress()) {
// It's technically possible for |result| to be empty if no provider
@@ -1290,36 +1157,9 @@ void OmniboxEditModel::RevertTemporaryText(bool revert_popup) {
// The user typed something, then selected a different item. Restore the
// text they typed and change back to the default item.
// NOTE: This purposefully does not reset paste_state_.
-#if defined(HTML_INSTANT_EXTENDED_POPUP)
- bool notify_instant = is_temporary_text_set_by_instant_;
-#endif
just_deleted_text_ = false;
has_temporary_text_ = false;
- is_temporary_text_set_by_instant_ = false;
- selected_instant_autocomplete_match_index_ = OmniboxPopupModel::kNoMatch;
- is_instant_temporary_text_a_search_query_ = false;
-#if defined(HTML_INSTANT_EXTENDED_POPUP)
- InstantController* instant = GetInstantController();
- if (instant && notify_instant) {
- // Normally, popup_model()->ResetToDefaultMatch() will cause the view text
- // to be updated. In Instant Extended mode however, the popup_model() is
- // not used, so it won't do anything. So, update the view ourselves. Even
- // if Instant is not in extended mode (i.e., it's enabled in non-extended
- // mode, or disabled altogether), this is okay to do, since the call to
- // popup_model()->ResetToDefaultMatch() will just override whatever we do
- // here.
- //
- // The two "false" arguments make sure that our shenanigans don't cause any
- // previously saved selection to be erased nor OnChanged() to be called.
- view_->OnTemporaryTextMaybeChanged(user_text_ + inline_autocomplete_text_,
- false, false);
- AutocompleteResult::const_iterator match(result().default_match());
- instant->OnCancel(match != result().end() ? *match : AutocompleteMatch(),
- user_text_,
- user_text_ + inline_autocomplete_text_);
- }
-#endif
if (revert_popup)
popup_model()->ResetToDefaultMatch();
view_->OnRevertTemporaryText();
« no previous file with comments | « chrome/browser/ui/omnibox/omnibox_edit_model.h ('k') | chrome/browser/ui/search/instant_commit_type.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698