Index: chrome/browser/prerender/prerender_tracker.h |
=================================================================== |
--- chrome/browser/prerender/prerender_tracker.h (revision 269781) |
+++ chrome/browser/prerender/prerender_tracker.h (working copy) |
@@ -6,16 +6,26 @@ |
#define CHROME_BROWSER_PRERENDER_PRERENDER_TRACKER_H_ |
#include <map> |
+#include <set> |
#include <utility> |
+#include "base/containers/hash_tables.h" |
+#include "base/memory/ref_counted.h" |
#include "base/memory/weak_ptr.h" |
+#include "base/synchronization/lock.h" |
+#include "chrome/browser/prerender/prerender_cookie_store.h" |
+#include "content/public/browser/render_process_host_observer.h" |
#include "url/gurl.h" |
+namespace net { |
+class URLRequestContextGetter; |
+} |
+ |
namespace prerender { |
class PrerenderPendingSwapThrottle; |
-// Global object for maintaining prerender state on the IO thread. |
+// Global object for maintaining various prerender state on the IO thread. |
class PrerenderTracker { |
public: |
typedef std::pair<int, int> ChildRouteIdPair; |
@@ -46,6 +56,25 @@ |
const ChildRouteIdPair& render_frame_route_id_pair, |
bool swap_successful); |
+ // Gets the Prerender Cookie Store for a specific render process, if it |
+ // is a prerender. Only to be called from the IO thread. |
+ scoped_refptr<PrerenderCookieStore> GetPrerenderCookieStoreForRenderProcess( |
+ int process_id); |
+ |
+ // Called when a given render process has changed a cookie for |url|, |
+ // in |cookie_monster|. |
+ // Only to be called from the IO thread. |
+ void OnCookieChangedForURL(int process_id, |
+ net::CookieMonster* cookie_monster, |
+ const GURL& url); |
+ |
+ void AddPrerenderCookieStoreOnIOThread( |
+ int process_id, |
+ scoped_refptr<net::URLRequestContextGetter> request_context, |
+ const base::Closure& cookie_conflict_cb); |
+ |
+ void RemovePrerenderCookieStoreOnIOThread(int process_id, bool was_swapped); |
+ |
private: |
// Add/remove prerenders pending swap on the IO Thread. |
void AddPrerenderPendingSwapOnIOThread( |
@@ -68,6 +97,12 @@ |
PendingSwapThrottleMap; |
PendingSwapThrottleMap pending_swap_throttle_map_; |
+ // Map of prerendering render process ids to PrerenderCookieStore used for |
+ // the prerender. Only to be used on the IO thread. |
+ typedef base::hash_map<int, scoped_refptr<PrerenderCookieStore> > |
+ PrerenderCookieStoreMap; |
+ PrerenderCookieStoreMap prerender_cookie_store_map_; |
+ |
DISALLOW_COPY_AND_ASSIGN(PrerenderTracker); |
}; |