Chromium Code Reviews| Index: chrome/browser/net/connect_interceptor.h |
| =================================================================== |
| --- chrome/browser/net/connect_interceptor.h (revision 96009) |
| +++ chrome/browser/net/connect_interceptor.h (working copy) |
| @@ -6,30 +6,35 @@ |
| #define CHROME_BROWSER_NET_CONNECT_INTERCEPTOR_H_ |
| #pragma once |
| -#include "net/url_request/url_request.h" |
| +#include "net/url_request/url_request_job_factory.h" |
| #include "base/gtest_prod_util.h" |
| #include "base/memory/mru_cache.h" |
| +#include "base/time.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 +53,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; |
|
jar (doing other things)
2011/08/16 01:19:09
Surprising to see const on a method that says it i
rpetterson
2011/08/16 03:52:12
Yes, the new pattern is to sublass off of the UrlR
|
| // 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 +74,7 @@ |
| DISALLOW_COPY_AND_ASSIGN(TimedCache); |
| }; |
| TimedCache timed_cache_; |
| + Predictor* predictor_; |
| DISALLOW_COPY_AND_ASSIGN(ConnectInterceptor); |
| }; |