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

Unified Diff: chrome/browser/instant/instant_controller.cc

Issue 11415292: [Search] No longer reverting omnibox text on instant search (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: indent Created 8 years 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/instant/instant_controller.cc
diff --git a/chrome/browser/instant/instant_controller.cc b/chrome/browser/instant/instant_controller.cc
index f0241917dd04ac53212ea1a86d935a033c692cb8..765f2112b27eff7dbe4c53a268333d7bd2f9d67b 100644
--- a/chrome/browser/instant/instant_controller.cc
+++ b/chrome/browser/instant/instant_controller.cc
@@ -425,6 +425,10 @@ bool InstantController::IsPreviewingSearchResults() const {
IsFullHeight(model_);
}
+bool InstantController::IsInstantExtendedSearch() const {
+ return extended_enabled_ && instant_enabled_ && last_match_was_search_;
+}
+
bool InstantController::CommitIfPossible(InstantCommitType type) {
if (!extended_enabled_ && !instant_enabled_)
return false;
@@ -455,29 +459,17 @@ bool InstantController::CommitIfPossible(InstantCommitType type) {
content::WebContents* preview = loader_->ReleaseContents();
if (extended_enabled_) {
- // Consider what's happening:
- // 1. The user has typed a query in the omnibox and committed it (either
- // by pressing Enter or clicking on the preview).
- // 2. We commit the preview to the tab strip, and tell the page.
- // 3. The page will update the URL hash fragment with the query terms.
- // After steps 1 and 3, the omnibox will show the query terms. However, if
- // the URL we are committing at step 2 doesn't already have query terms, it
- // will flash for a brief moment as a plain URL. So, avoid that flicker by
- // pretending that the plain URL is actually the typed query terms.
- // TODO(samarth,beaudoin): Instead of this hack, we should add a new field
- // to NavigationEntry to keep track of what the correct query, if any, is.
- content::NavigationEntry* entry =
- preview->GetController().GetVisibleEntry();
- std::string url = entry->GetVirtualURL().spec();
- if (!google_util::IsInstantExtendedAPIGoogleSearchUrl(url) &&
- google_util::IsGoogleDomainUrl(url, google_util::ALLOW_SUBDOMAIN,
- google_util::ALLOW_NON_STANDARD_PORTS)) {
- entry->SetVirtualURL(GURL(
- url + "#q=" +
- net::EscapeQueryParamValue(UTF16ToUTF8(last_omnibox_text_), true)));
- chrome::search::SearchTabHelper::FromWebContents(preview)->
- NavigationEntryUpdated();
+ string16 search_terms = last_omnibox_text_;
+ if (type == INSTANT_COMMIT_FOCUS_LOST &&
+ last_suggestion_.behavior == INSTANT_COMPLETE_NEVER) {
+ // User clicked on the preview, which makes a search based on the input +
+ // gray text (i.e. |last_suggestion_.text|). Make sure the search terms
+ // reflect this search.
+ search_terms += last_suggestion_.text;
}
+ preview->GetController().GetActiveEntry()->SetSearchTerms(search_terms);
+ chrome::search::SearchTabHelper::FromWebContents(preview)->
+ NavigationEntryUpdated();
}
// If the preview page has navigated since the last Update(), we need to add

Powered by Google App Engine
This is Rietveld 408576698