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

Unified Diff: chrome/browser/ui/search/instant_controller.cc

Issue 15001020: InstantExtended: disallow setValue() without omnibox focus. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 7 years, 7 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/search/instant_controller.cc
diff --git a/chrome/browser/ui/search/instant_controller.cc b/chrome/browser/ui/search/instant_controller.cc
index 106f474c4b88de454c189c22600685729be53317..58ebd398a06c7faffefe4aea5f895f709a26786d 100644
--- a/chrome/browser/ui/search/instant_controller.cc
+++ b/chrome/browser/ui/search/instant_controller.cc
@@ -1297,6 +1297,24 @@ void InstantController::SetSuggestions(
return;
if (suggestion.behavior == INSTANT_COMPLETE_REPLACE) {
+ if (omnibox_focus_state_ == OMNIBOX_FOCUS_NONE &&
+ !(last_suggestion_.behavior == INSTANT_COMPLETE_NEVER &&
+ !last_omnibox_text_has_inline_autocompletion_ &&
+ suggestion.text == last_omnibox_text_ + last_suggestion_.text)) {
sreeram 2013/05/28 22:45:02 Does this work in the following case? 1. In Tab A,
samarth 2013/05/29 19:03:46 I took out this check since we don't need to deal
+ // TODO(samarth,skanuj): setValue() needs to be handled differently when
+ // the omnibox doesn't have focus. Instead of setting temporary text, we
+ // should be setting search terms on the appopriate NavigationEntry.
+ // (Among other things, this ensures that URL-shaped values will get the
+ // additional security token.)
+ //
+ // However, today, we need to allow setValue() to happen in one particular
+ // case which is when a user clicks on the suggestion correponding to a
+ // gray-text completion. Otherwise, we can't distinguish between the user
+ // clicking on white space (where we don't accept the gray text) and the
+ // user clicking on the suggestion (when we do accept the gray text).
+ return;
+ }
+
// We don't get an Update() when changing the omnibox due to a REPLACE
// suggestion (so that we don't inadvertently cause the overlay to change
// what it's showing, as the user arrows up/down through the page-provided
@@ -1382,7 +1400,9 @@ void InstantController::FocusOmnibox(const content::WebContents* contents,
// doing nothing instead of crashing the browser process (intentional no-op).
switch (state) {
case OMNIBOX_FOCUS_VISIBLE:
- browser_->FocusOmnibox(true);
+ // TODO(samarth): re-enable this once setValue() correctly handles
+ // URL-shaped queries.
+ // browser_->FocusOmnibox(true);
break;
case OMNIBOX_FOCUS_INVISIBLE:
browser_->FocusOmnibox(false);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698