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..bff630c6b0a988380143239dc45faba19e0503fd 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,10 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> { |
bool AddPreload(const GURL& url, const std::vector<GURL>& alias_urls, |
const GURL& referrer); |
+ void AddPendingPreload(int child_id, int route_id, 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 |
@@ -136,6 +141,10 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> { |
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 +156,20 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> { |
// Set of TabContents which are currently displaying a prerendered page. |
base::hash_set<TabContents*> prerendered_tc_set_; |
+ struct PendingContentsData { |
+ PendingContentsData(const GURL& url, const std::vector<GURL>& alias_urls, |
+ const GURL& referrer) |
+ : url_(url), alias_urls_(alias_urls), referrer_(referrer) { } |
+ ~PendingContentsData() {} |
+ GURL url_; |
+ std::vector<GURL> alias_urls_; |
+ GURL referrer_; |
+ }; |
+ |
+ 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; |