Index: chrome/browser/net/connect_interceptor.h |
=================================================================== |
--- chrome/browser/net/connect_interceptor.h (revision 97465) |
+++ chrome/browser/net/connect_interceptor.h (working copy) |
@@ -6,30 +6,34 @@ |
#define CHROME_BROWSER_NET_CONNECT_INTERCEPTOR_H_ |
#pragma once |
-#include "net/url_request/url_request.h" |
- |
#include "base/gtest_prod_util.h" |
#include "base/memory/mru_cache.h" |
+#include "base/time.h" |
+#include "net/url_request/url_request_job_factory.h" |
namespace chrome_browser_net { |
+class Predictor; |
+ |
//------------------------------------------------------------------------------ |
// An interceptor to monitor URLRequests so that we can do speculative DNS |
// resolution and/or speculative TCP preconnections. |
-class ConnectInterceptor : public net::URLRequest::Interceptor { |
+class ConnectInterceptor : public net::URLRequestJobFactory::Interceptor { |
public: |
// Construction includes registration as an URL. |
- ConnectInterceptor(); |
+ explicit ConnectInterceptor(Predictor* predictor); |
// Destruction includes unregistering. |
virtual ~ConnectInterceptor(); |
protected: |
// Overridden from net::URLRequest::Interceptor: |
// Learn about referrers, and optionally preconnect based on history. |
- virtual net::URLRequestJob* MaybeIntercept(net::URLRequest* request); |
- virtual net::URLRequestJob* MaybeInterceptResponse(net::URLRequest* request); |
- virtual net::URLRequestJob* MaybeInterceptRedirect(net::URLRequest* request, |
- const GURL& location); |
+ virtual net::URLRequestJob* MaybeIntercept( |
+ net::URLRequest* request) const OVERRIDE; |
+ virtual net::URLRequestJob* MaybeInterceptResponse( |
+ net::URLRequest* request) const OVERRIDE; |
+ virtual net::URLRequestJob* MaybeInterceptRedirect( |
+ const GURL& location, net::URLRequest* request) const OVERRIDE; |
private: |
// Provide access to local class TimedCache for testing. |
@@ -48,17 +52,20 @@ |
// Evicts any entries that have been in the FIFO "too long," and then checks |
// to see if the given url is (still) in the FIFO cache. |
- bool WasRecentlySeen(const GURL& url); |
+ bool WasRecentlySeen(const GURL& url) const; |
// Adds the given url to the cache, where it will remain for max_duration_. |
- void SetRecentlySeen(const GURL& url); |
+ void SetRecentlySeen(const GURL& url) const; |
private: |
// Our cache will be keyed on a URL (actually, just a scheme/host/port). |
// We will always track the time it was last added to the FIFO cache by |
// remembering a TimeTicks value. |
typedef base::MRUCache<GURL, base::TimeTicks> UrlMruTimedCache; |
- UrlMruTimedCache mru_cache_; |
+ // mru_cache_ has to be mutable in order to be accessed from the overriden |
+ // URLRequestJob functions. It is mutable because it tracks the urls and |
+ // caches them. |
+ mutable UrlMruTimedCache mru_cache_; |
// The longest time an entry can persist in the cache, and still be found. |
const base::TimeDelta max_duration_; |
@@ -66,6 +73,7 @@ |
DISALLOW_COPY_AND_ASSIGN(TimedCache); |
}; |
TimedCache timed_cache_; |
+ Predictor* const predictor_; |
DISALLOW_COPY_AND_ASSIGN(ConnectInterceptor); |
}; |