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

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: Clang fixes 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
Index: chrome/browser/prerender/prerender_manager.h
diff --git a/chrome/browser/prerender/prerender_manager.h b/chrome/browser/prerender/prerender_manager.h
index 64adb11ce0e8569e371e3ba572f58775666a6d79..22469987a14aeb9b538d6e623d62ddbfe0d1b1f5 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/ref_counted.h"
@@ -44,6 +45,10 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> {
bool AddPreload(const GURL& url, const std::vector<GURL>& alias_urls,
const GURL& referrer);
+ void AddPendingPreload(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
@@ -116,6 +121,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_;
@@ -124,6 +133,19 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> {
// List of prerendered elements.
std::list<PrerenderContentsData> prerender_list_;
+ struct PendingContentsData {
+ PendingContentsData(const GURL& url, const std::vector<GURL>& alias_urls,
+ const GURL& referrer)
+ : url_(url), alias_urls_(alias_urls), referrer_(referrer) {
+ }
+ ~PendingContentsData() {}
+ const GURL url_;
+ const std::vector<GURL> alias_urls_;
+ const GURL referrer_;
+ };
+
+ std::map<int, PendingContentsData> pending_prerender_map_;
+
// Default maximum permitted elements to prerender.
static const unsigned int kDefaultMaxPrerenderElements = 1;

Powered by Google App Engine
This is Rietveld 408576698