| Index: chrome/browser/instant/instant_controller.cc
|
| diff --git a/chrome/browser/instant/instant_controller.cc b/chrome/browser/instant/instant_controller.cc
|
| index 531e9a2a64f07f3916dfb4421f16253dd3af2d8b..e6841310aa75100099d68a190a9f71bf672696c4 100644
|
| --- a/chrome/browser/instant/instant_controller.cc
|
| +++ b/chrome/browser/instant/instant_controller.cc
|
| @@ -152,7 +152,7 @@ InstantController::InstantController(chrome::BrowserInstantController* browser,
|
| last_verbatim_(false),
|
| last_transition_type_(content::PAGE_TRANSITION_LINK),
|
| last_match_was_search_(false),
|
| - is_omnibox_focused_(false) {
|
| + omnibox_focus_state_(NONE) {
|
| }
|
|
|
| InstantController::~InstantController() {
|
| @@ -476,7 +476,8 @@ bool InstantController::CommitIfCurrent(InstantCommitType type) {
|
|
|
| void InstantController::OmniboxLostFocus(gfx::NativeView view_gaining_focus) {
|
| DVLOG(1) << "OmniboxLostFocus";
|
| - is_omnibox_focused_ = false;
|
| + omnibox_focus_state_ = NONE;
|
| + SendKeyCaptureModeToPage();
|
|
|
| if (!extended_enabled_ && !instant_enabled_)
|
| return;
|
| @@ -501,9 +502,10 @@ void InstantController::OmniboxLostFocus(gfx::NativeView view_gaining_focus) {
|
| #endif
|
| }
|
|
|
| -void InstantController::OmniboxGotFocus() {
|
| +void InstantController::OmniboxGotFocus(bool focus_is_visible) {
|
| DVLOG(1) << "OmniboxGotFocus";
|
| - is_omnibox_focused_ = true;
|
| + omnibox_focus_state_ = focus_is_visible ? VISIBLE : INVISIBLE;
|
| + SendKeyCaptureModeToPage();
|
|
|
| if (!extended_enabled_ && !instant_enabled_)
|
| return;
|
| @@ -707,10 +709,11 @@ bool InstantController::ResetLoader(const TemplateURL* template_url,
|
| loader_.reset(new InstantLoader(this, instant_url, active_tab));
|
| loader_->Init();
|
|
|
| - // Ensure the searchbox API has the correct theme-related info and context.
|
| + // Ensure the searchbox API has correct state.
|
| if (extended_enabled_) {
|
| browser_->UpdateThemeInfoForPreview();
|
| loader_->SearchModeChanged(search_mode_);
|
| + SendKeyCaptureModeToPage();
|
| }
|
|
|
| // Reset the loader timer.
|
| @@ -740,7 +743,7 @@ void InstantController::OnStaleLoader() {
|
| // If the preview is showing or the omnibox has focus, don't delete the
|
| // loader. It will get refreshed the next time the preview is hidden or the
|
| // omnibox loses focus.
|
| - if (!stale_loader_timer_.IsRunning() && !is_omnibox_focused_ &&
|
| + if (!stale_loader_timer_.IsRunning() && omnibox_focus_state_ == NONE &&
|
| model_.mode().is_default()) {
|
| DeleteLoader();
|
| CreateDefaultLoader();
|
| @@ -862,6 +865,11 @@ void InstantController::SendBoundsToPage() {
|
| loader_->SetOmniboxBounds(intersection);
|
| }
|
|
|
| +void InstantController::SendKeyCaptureModeToPage() {
|
| + if (extended_enabled_ && GetPreviewContents())
|
| + loader_->OnKeyCaptureChange(omnibox_focus_state_ == INVISIBLE);
|
| +}
|
| +
|
| bool InstantController::GetInstantURL(const TemplateURL* template_url,
|
| std::string* instant_url) const {
|
| CommandLine* command_line = CommandLine::ForCurrentProcess();
|
|
|