Chromium Code Reviews| 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; |
|
gavinp
2014/01/30 19:58:49
Our declaration order rule doesn't indicate where
davidben
2014/01/30 21:01:51
Done.
|
| + scoped_ptr<PendingPrerenderManager> pending_prerender_manager_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(PrerenderLinkManager); |
| }; |