| Index: chrome/browser/prerender/prerender_link_manager.h
|
| diff --git a/chrome/browser/prerender/prerender_link_manager.h b/chrome/browser/prerender/prerender_link_manager.h
|
| index 0047a4d429c81fd7735f5f58995b515c07a18843..e61b40c549497e240753bcc7cfdbe90c4e7690ea 100644
|
| --- a/chrome/browser/prerender/prerender_link_manager.h
|
| +++ b/chrome/browser/prerender/prerender_link_manager.h
|
| @@ -28,7 +28,7 @@ FORWARD_DECLARE_TEST(WebViewTest, NoPrerenderer);
|
|
|
| namespace prerender {
|
|
|
| -class PrerenderHandle;
|
| +class PrerenderContents;
|
| class PrerenderManager;
|
|
|
| // PrerenderLinkManager implements the API on Link elements for all documents
|
| @@ -78,7 +78,8 @@ class PrerenderLinkManager : public BrowserContextKeyedService,
|
| const content::Referrer& referrer,
|
| const gfx::Size& size,
|
| int render_view_route_id,
|
| - base::TimeTicks creation_time);
|
| + base::TimeTicks creation_time,
|
| + PrerenderContents* deferred_launcher);
|
| ~LinkPrerender();
|
|
|
| // Parameters from PrerenderLinkManager::OnAddPrerender():
|
| @@ -92,6 +93,11 @@ class PrerenderLinkManager : public BrowserContextKeyedService,
|
| // The time at which this Prerender was added to PrerenderLinkManager.
|
| base::TimeTicks creation_time;
|
|
|
| + // If non-NULL, this link prerender was launched by an unswapped prerender,
|
| + // |deferred_launcher|. When |deferred_launcher| is swapped in, the field is
|
| + // set to NULL.
|
| + PrerenderContents* deferred_launcher;
|
| +
|
| // Initially NULL, |handle| is set once we start this prerender. It is owned
|
| // by this struct, and must be deleted before destructing this struct.
|
| PrerenderHandle* handle;
|
| @@ -126,6 +132,12 @@ class PrerenderLinkManager : public BrowserContextKeyedService,
|
| // manager.
|
| void CancelPrerender(LinkPrerender* prerender);
|
|
|
| + // Called when |launcher| is swapped in.
|
| + void StartPendingPrerendersForLauncher(PrerenderContents* launcher);
|
| +
|
| + // Called when |launcher| is aborted.
|
| + void CancelPendingPrerendersForLauncher(PrerenderContents* launcher);
|
| +
|
| // From BrowserContextKeyedService:
|
| virtual void Shutdown() OVERRIDE;
|
|
|
| @@ -146,6 +158,11 @@ class PrerenderLinkManager : public BrowserContextKeyedService,
|
| // at the back.
|
| std::list<LinkPrerender> prerenders_;
|
|
|
| + // Helper class to manage prerenders which are launched by other prerenders
|
| + // and must be deferred until the launcher is swapped in.
|
| + class PendingPrerenderManager;
|
| + scoped_ptr<PendingPrerenderManager> pending_prerender_manager_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(PrerenderLinkManager);
|
| };
|
|
|
|
|