Index: chrome/browser/prerender/prerender_manager.h |
diff --git a/chrome/browser/prerender/prerender_manager.h b/chrome/browser/prerender/prerender_manager.h |
index fa53ae79abb3395633baf76926cf30513bda4845..ae331242dd2ef04b733dccb16281021ab484d223 100644 |
--- a/chrome/browser/prerender/prerender_manager.h |
+++ b/chrome/browser/prerender/prerender_manager.h |
@@ -7,6 +7,7 @@ |
#pragma once |
#include <list> |
+#include <map> |
#include <vector> |
#include "base/hash_tables.h" |
@@ -58,6 +59,11 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> { |
bool AddPreload(const GURL& url, const std::vector<GURL>& alias_urls, |
const GURL& referrer); |
+ void AddPendingPreload(const std::pair<int, int>& child_route_id_pair, |
+ const GURL& url, |
+ const std::vector<GURL>& alias_urls, |
+ const GURL& referrer); |
+ |
// For a given TabContents that wants to navigate to the URL supplied, |
// determines whether a preloaded version of the URL can be used, |
// and substitutes the prerendered RVH into the TabContents. Returns |
@@ -109,6 +115,7 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> { |
friend class base::RefCounted<PrerenderManager>; |
struct PrerenderContentsData; |
+ struct PendingContentsData; |
// Starts and stops scheduling periodic cleanups, respectively. |
void StartSchedulingPeriodicCleanups(); |
@@ -131,11 +138,16 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> { |
// Returns NULL otherwise. Unlike GetEntry, the PrerenderManager maintains |
// ownership of the PrerenderContents. |
PrerenderContents* FindEntry(const GURL& url); |
+ PendingContentsData* FindPendingEntry(const GURL& url); |
static bool ShouldRecordWindowedPPLT(); |
static void RecordPrefetchTagObservedOnUIThread(); |
+ // Called when removing a preload to ensure we clean up any pending preloads |
+ // that might remain in the map. |
+ void RemovePendingPreload(PrerenderContents* entry); |
+ |
Profile* profile_; |
base::TimeDelta max_prerender_age_; |
@@ -147,6 +159,10 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> { |
// Set of TabContents which are currently displaying a prerendered page. |
base::hash_set<TabContents*> prerendered_tc_set_; |
+ typedef std::map<std::pair<int, int>, std::vector<PendingContentsData> > |
+ PendingPrerenderList; |
+ PendingPrerenderList pending_prerender_list_; |
+ |
// Default maximum permitted elements to prerender. |
static const unsigned int kDefaultMaxPrerenderElements = 1; |