Index: trunk/src/chrome/browser/ui/search/instant_controller.cc |
=================================================================== |
--- trunk/src/chrome/browser/ui/search/instant_controller.cc (revision 207797) |
+++ trunk/src/chrome/browser/ui/search/instant_controller.cc (working copy) |
@@ -433,7 +433,7 @@ |
if (UseTabForSuggestions()) { |
// On a search results page, tell it to clear old results. |
instant_tab_->Update(string16(), 0, 0, true); |
- } else if (overlay_ && search_mode_.is_origin_ntp()) { |
+ } else if (search_mode_.is_origin_ntp()) { |
// On the NTP, tell the overlay to clear old results. Don't hide the |
// overlay so it can show a blank page or logo if it wants. |
overlay_->Update(string16(), 0, 0, true); |
@@ -461,7 +461,7 @@ |
last_suggestion_ = InstantSuggestion(); |
if (UseTabForSuggestions()) |
instant_tab_->Update(string16(), 0, 0, true); |
- else if (overlay_ && search_mode_.is_origin_ntp()) |
+ else if (search_mode_.is_origin_ntp()) |
overlay_->Update(string16(), 0, 0, true); |
else |
HideOverlay(); |
@@ -517,7 +517,7 @@ |
if (UseTabForSuggestions()) { |
instant_tab_->Update(user_text, selection_start, selection_end, verbatim); |
- } else if (overlay_) { |
+ } else { |
allow_overlay_to_show_search_suggestions_ = true; |
overlay_->Update(extended_enabled() ? user_text : full_text, |
@@ -671,7 +671,7 @@ |
if (UseTabForSuggestions()) |
instant_tab_->SendAutocompleteResults(results); |
- else if (overlay_) |
+ else |
overlay_->SendAutocompleteResults(results); |
content::NotificationService::current()->Notify( |
@@ -707,7 +707,7 @@ |
if (UseTabForSuggestions()) |
instant_tab_->UpOrDownKeyPressed(count); |
- else if (overlay_) |
+ else |
overlay_->UpOrDownKeyPressed(count); |
return true; |
@@ -737,7 +737,7 @@ |
if (UseTabForSuggestions()) { |
instant_tab_->CancelSelection(user_text, full_text.size(), user_text.size(), |
last_verbatim_); |
- } else if (overlay_) { |
+ } else { |
overlay_->CancelSelection(user_text, full_text.size(), user_text.size(), |
last_verbatim_); |
} |
@@ -850,9 +850,6 @@ |
return false; |
} |
- if (!overlay_) |
- return false; |
- |
// If the overlay is not showing at all, don't commit it. |
if (!model_.mode().is_search_suggestions()) |
return false; |
@@ -1126,7 +1123,7 @@ |
} |
void InstantController::OverlayLoadCompletedMainFrame() { |
- if (!overlay_ || overlay_->supports_instant()) |
+ if (overlay_->supports_instant()) |
return; |
InstantService* instant_service = |
InstantServiceFactory::GetForProfile(browser_->profile()); |
@@ -1635,7 +1632,16 @@ |
void InstantController::ResetOverlay(const std::string& instant_url) { |
HideInternal(); |
- overlay_.reset(); |
+ // If there's no active tab, the browser is opening or closing. |
+ const content::WebContents* active_tab = browser_->GetActiveWebContents(); |
+ if (!active_tab || instant_url.empty()) { |
+ overlay_.reset(); |
+ } else { |
+ overlay_.reset(new InstantOverlay(this, instant_url)); |
+ overlay_->InitContents(browser_->profile(), active_tab); |
+ } |
+ LOG_INSTANT_DEBUG_EVENT(this, base::StringPrintf( |
+ "ResetOverlay: instant_url='%s'", instant_url.c_str())); |
} |
InstantController::InstantFallbackReason |
@@ -1727,10 +1733,6 @@ |
} |
void InstantController::ShowOverlay(int height, InstantSizeUnits units) { |
- // Nothing to see here. |
- if (!overlay_) |
- return; |
- |
// If we are on a committed search results page, the |overlay_| is not in use. |
if (UseTabForSuggestions()) |
return; |