Index: chrome/browser/prerender/prerender_manager.h |
diff --git a/chrome/browser/prerender/prerender_manager.h b/chrome/browser/prerender/prerender_manager.h |
index 22675dc154b3a1cefc19160f6bd2fb7bc86c8c37..d135cfd439c8baf85b90ecc8fabeb6f621f197ab 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 |
@@ -107,6 +113,9 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> { |
void SetPrerenderContentsFactory( |
PrerenderContents::Factory* prerender_contents_factory); |
+ struct PendingContentsData; |
cbentzel
2011/03/21 19:46:04
the struct declaration should go at top of protect
dominich
2011/03/21 20:25:51
Done.
|
+ PendingContentsData* FindPendingEntry(const GURL& url); |
+ |
private: |
// Test that needs needs access to internal functions. |
friend class PrerenderBrowserTest; |
@@ -140,6 +149,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_; |
@@ -155,6 +168,11 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> { |
// (for the control group). |
base::hash_set<TabContents*> would_be_prerendered_tc_set_; |
+ // Map of child/route id pairs to pending prerender data. |
+ 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; |