| Index: chrome/browser/net/connect_interceptor.h
 | 
| ===================================================================
 | 
| --- chrome/browser/net/connect_interceptor.h	(revision 100345)
 | 
| +++ 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);
 | 
|  };
 | 
| 
 |