Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2262)

Unified Diff: chrome/browser/prerender/prerender_manager.h

Issue 6625066: Add pending preloads indexed by routing id. Start preloading once we navigate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/prerender/prerender_final_status.h ('k') | chrome/browser/prerender/prerender_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_manager.h
diff --git a/chrome/browser/prerender/prerender_manager.h b/chrome/browser/prerender/prerender_manager.h
index f50951b7fc57c4166738d89dbbbb51dd6a831e10..32650521650d3d1f50f2279b6384ad9011047d0d 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
@@ -102,12 +108,16 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> {
bool WouldTabContentsBePrerendered(TabContents* tc) const;
protected:
+ struct PendingContentsData;
+
virtual ~PrerenderManager();
void SetPrerenderContentsFactory(
PrerenderContents::Factory* prerender_contents_factory);
bool rate_limit_enabled_;
+ PendingContentsData* FindPendingEntry(const GURL& url);
+
private:
// Test that needs needs access to internal functions.
friend class PrerenderBrowserTest;
@@ -142,6 +152,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);
+
bool DoesRateLimitAllowPrerender() const;
Profile* profile_;
@@ -159,6 +173,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;
« no previous file with comments | « chrome/browser/prerender/prerender_final_status.h ('k') | chrome/browser/prerender/prerender_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698