| // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_NET_CONNECT_INTERCEPTOR_H_ |
| #define CHROME_BROWSER_NET_CONNECT_INTERCEPTOR_H_ |
| #pragma once |
| |
| #include "net/url_request/url_request.h" |
| |
| namespace chrome_browser_net { |
| |
| //------------------------------------------------------------------------------ |
| // An interceptor to monitor URLRequests so that we can do speculative DNS |
| // resolution and/or speculative TCP preconnections. |
| class ConnectInterceptor : public URLRequest::Interceptor { |
| public: |
| // Construction includes registration as an URL. |
| ConnectInterceptor(); |
| // Destruction includes unregistering. |
| virtual ~ConnectInterceptor(); |
| |
| protected: |
| // URLRequest::Interceptor overrides |
| // 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); |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(ConnectInterceptor); |
| }; |
| |
| } // namespace chrome_browser_net |
| |
| #endif // CHROME_BROWSER_NET_CONNECT_INTERCEPTOR_H_ |