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); |
}; |