Index: chrome/browser/ui/browser_instant_controller.h |
diff --git a/chrome/browser/ui/browser_instant_controller.h b/chrome/browser/ui/browser_instant_controller.h |
index f154992bd2343718214995631babb4e24e882da3..f404274dab287a0d02f6a89156439ceeeee13e08 100644 |
--- a/chrome/browser/ui/browser_instant_controller.h |
+++ b/chrome/browser/ui/browser_instant_controller.h |
@@ -10,6 +10,7 @@ |
#include "base/prefs/public/pref_change_registrar.h" |
#include "chrome/browser/instant/instant_controller.h" |
#include "chrome/browser/instant/instant_unload_handler.h" |
+#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/search/search_model_observer.h" |
#include "content/public/browser/notification_observer.h" |
#include "content/public/browser/notification_registrar.h" |
@@ -43,17 +44,32 @@ class BrowserInstantController : public content::NotificationObserver, |
// Registers Instant related preferences. |
static void RegisterUserPrefs(PrefServiceSyncable* prefs); |
+ // If |url| is the new tab page URL, set |target_contents| to the preloaded |
+ // NTP contents from InstantController. If |source_contents| is not NULL, we |
+ // replace it with the new |target_contents| in the tabstrip and delete |
+ // |source_contents|. Otherwise, the caller owns |target_contents| and is |
+ // responsible for inserting it into the tabstrip. |
+ // |
+ // Returns true if and only if we update |target_contents|. |
+ bool MaybeSwapInInstantContents( |
+ const GURL& url, |
+ content::WebContents* source_contents, |
+ content::WebContents** target_contents); |
+ |
// Commits the current Instant, returning true on success. This is intended |
// for use from OpenCurrentURL. |
bool OpenInstant(WindowOpenDisposition disposition); |
+ // Returns the Profile associated with the Browser that owns this object. |
+ Profile* profile() const { return browser_->profile(); } |
+ |
// Returns the InstantController or NULL if there is no InstantController for |
// this BrowserInstantController. |
InstantController* instant() { return &instant_; } |
// Invoked by |instant_| to commit the |preview| by merging it into the active |
- // tab or adding it as a new tab. We take ownership of |preview|. |
- void CommitInstant(content::WebContents* preview, bool in_new_tab); |
+ // tab or adding it as a new tab. |
+ void CommitInstant(scoped_ptr<content::WebContents> preview, bool in_new_tab); |
// Invoked by |instant_| to autocomplete the |suggestion| into the omnibox. |
void SetInstantSuggestion(const InstantSuggestion& suggestion); |
@@ -113,6 +129,11 @@ class BrowserInstantController : public content::NotificationObserver, |
// Helper for handling theme area height change. |
void OnThemeAreaHeightChanged(int height); |
+ // Replaces the contents at tab |index| with |new_contents| and deletes the |
+ // existing contents. |
+ void ReplaceWebContentsAt(int index, |
+ scoped_ptr<content::WebContents> new_contents); |
+ |
Browser* const browser_; |
InstantController instant_; |