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 54f27f664854b9b867b8065be1bdf0dc34fa9b83..c5dc9a22692b058050ac26408fdf0341fd785307 100644 |
--- a/chrome/browser/ui/search/instant_controller.cc |
+++ b/chrome/browser/ui/search/instant_controller.cc |
@@ -825,7 +825,11 @@ bool InstantController::CommitIfPossible(InstantCommitType type) { |
overlay_->Submit(last_omnibox_text_); |
} |
+ // Make sure the overlay WebContents is in a valid state (i.e., has a last |
+ // committed entry, no transient entry, and no existing pending entry). |
scoped_ptr<content::WebContents> overlay = overlay_->ReleaseContents(); |
+ if (!overlay || !overlay->GetController().CanPruneAllButVisible()) |
+ return false; |
// If the overlay page has navigated since the last Update(), we need to add |
// the navigation to history ourselves. Else, the page will navigate after |
@@ -865,12 +869,12 @@ bool InstantController::CommitIfPossible(InstantCommitType type) { |
} |
if (type == INSTANT_COMMIT_PRESSED_ALT_ENTER) { |
- overlay->GetController().PruneAllButActive(); |
+ CHECK(overlay->GetController().PruneAllButVisible()); |
} else { |
content::WebContents* active_tab = browser_->GetActiveWebContents(); |
AddSessionStorageHistogram(extended_enabled_, active_tab, overlay.get()); |
- overlay->GetController().CopyStateFromAndPrune( |
- &active_tab->GetController()); |
+ CHECK(overlay->GetController().CopyStateFromAndPrune( |
+ &active_tab->GetController())); |
} |
if (extended_enabled_) { |