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

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

Issue 233353003: Only commit cookie changes in prerenders after a prerender is shown (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync @269781 + 'autlock'->'autolock' from erik's comment that was not included before Created 6 years, 7 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_manager.cc ('k') | chrome/browser/prerender/prerender_tracker.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
};
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | chrome/browser/prerender/prerender_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698