| OLD | NEW | 
|    1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |    1 // Copyright 2014 The Chromium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #ifndef NET_BASE_NETWORK_DELEGATE_H_ |    5 #ifndef NET_BASE_NETWORK_DELEGATE_IMPL_H_ | 
|    6 #define NET_BASE_NETWORK_DELEGATE_H_ |    6 #define NET_BASE_NETWORK_DELEGATE_IMPL_H_ | 
|    7  |    7  | 
|    8 #include <string> |  | 
|    9  |  | 
|   10 #include "base/callback.h" |  | 
|   11 #include "base/strings/string16.h" |    8 #include "base/strings/string16.h" | 
|   12 #include "base/threading/non_thread_safe.h" |  | 
|   13 #include "net/base/auth.h" |  | 
|   14 #include "net/base/completion_callback.h" |    9 #include "net/base/completion_callback.h" | 
 |   10 #include "net/base/network_delegate.h" | 
|   15 #include "net/cookies/canonical_cookie.h" |   11 #include "net/cookies/canonical_cookie.h" | 
|   16  |   12  | 
|   17 class GURL; |   13 class GURL; | 
|   18  |   14  | 
|   19 namespace base { |   15 namespace base { | 
|   20 class FilePath; |   16 class FilePath; | 
|   21 } |   17 } | 
|   22  |   18  | 
|   23 namespace net { |   19 namespace net { | 
|   24  |   20  | 
|   25 // NOTE: Layering violations! |  | 
|   26 // We decided to accept these violations (depending |  | 
|   27 // on other net/ submodules from net/base/), because otherwise NetworkDelegate |  | 
|   28 // would have to be broken up into too many smaller interfaces targeted to each |  | 
|   29 // submodule. Also, since the lower levels in net/ may callback into higher |  | 
|   30 // levels, we may encounter dangerous casting issues. |  | 
|   31 // |  | 
|   32 // NOTE: It is not okay to add any compile-time dependencies on symbols outside |  | 
|   33 // of net/base here, because we have a net_base library. Forward declarations |  | 
|   34 // are ok. |  | 
|   35 class CookieOptions; |   21 class CookieOptions; | 
|   36 class HttpRequestHeaders; |   22 class HttpRequestHeaders; | 
|   37 class HttpResponseHeaders; |   23 class HttpResponseHeaders; | 
|   38 class ProxyInfo; |   24 class ProxyInfo; | 
|   39 class ProxyServer; |   25 class ProxyServer; | 
|   40 class ProxyService; |   26 class ProxyService; | 
|   41 class URLRequest; |   27 class URLRequest; | 
|   42  |   28  | 
|   43 class NET_EXPORT NetworkDelegate : public base::NonThreadSafe { |   29 class NET_EXPORT NetworkDelegateImpl : public NetworkDelegate { | 
|   44  public: |   30  public: | 
|   45   // AuthRequiredResponse indicates how a NetworkDelegate handles an |   31   virtual ~NetworkDelegateImpl() {} | 
|   46   // OnAuthRequired call. It's placed in this file to prevent url_request.h |  | 
|   47   // from having to include network_delegate.h. |  | 
|   48   enum AuthRequiredResponse { |  | 
|   49     AUTH_REQUIRED_RESPONSE_NO_ACTION, |  | 
|   50     AUTH_REQUIRED_RESPONSE_SET_AUTH, |  | 
|   51     AUTH_REQUIRED_RESPONSE_CANCEL_AUTH, |  | 
|   52     AUTH_REQUIRED_RESPONSE_IO_PENDING, |  | 
|   53   }; |  | 
|   54   typedef base::Callback<void(AuthRequiredResponse)> AuthCallback; |  | 
|   55  |  | 
|   56   virtual ~NetworkDelegate() {} |  | 
|   57  |  | 
|   58   // Notification interface called by the network stack. Note that these |  | 
|   59   // functions mostly forward to the private virtuals. They also add some sanity |  | 
|   60   // checking on parameters. See the corresponding virtuals for explanations of |  | 
|   61   // the methods and their arguments. |  | 
|   62   int NotifyBeforeURLRequest(URLRequest* request, |  | 
|   63                              const CompletionCallback& callback, |  | 
|   64                              GURL* new_url); |  | 
|   65   void NotifyResolveProxy(const GURL& url, |  | 
|   66                           int load_flags, |  | 
|   67                           const ProxyService& proxy_service, |  | 
|   68                           ProxyInfo* result); |  | 
|   69   void NotifyProxyFallback(const ProxyServer& bad_proxy, |  | 
|   70                            int net_error); |  | 
|   71   int NotifyBeforeSendHeaders(URLRequest* request, |  | 
|   72                               const CompletionCallback& callback, |  | 
|   73                               HttpRequestHeaders* headers); |  | 
|   74   void NotifyBeforeSendProxyHeaders(URLRequest* request, |  | 
|   75                                     const ProxyInfo& proxy_info, |  | 
|   76                                     HttpRequestHeaders* headers); |  | 
|   77   void NotifySendHeaders(URLRequest* request, |  | 
|   78                          const HttpRequestHeaders& headers); |  | 
|   79   int NotifyHeadersReceived( |  | 
|   80       URLRequest* request, |  | 
|   81       const CompletionCallback& callback, |  | 
|   82       const HttpResponseHeaders* original_response_headers, |  | 
|   83       scoped_refptr<HttpResponseHeaders>* override_response_headers, |  | 
|   84       GURL* allowed_unsafe_redirect_url); |  | 
|   85   void NotifyBeforeRedirect(URLRequest* request, |  | 
|   86                             const GURL& new_location); |  | 
|   87   void NotifyResponseStarted(URLRequest* request); |  | 
|   88   void NotifyRawBytesRead(const URLRequest& request, int bytes_read); |  | 
|   89   void NotifyCompleted(URLRequest* request, bool started); |  | 
|   90   void NotifyURLRequestDestroyed(URLRequest* request); |  | 
|   91   void NotifyPACScriptError(int line_number, const base::string16& error); |  | 
|   92   AuthRequiredResponse NotifyAuthRequired(URLRequest* request, |  | 
|   93                                           const AuthChallengeInfo& auth_info, |  | 
|   94                                           const AuthCallback& callback, |  | 
|   95                                           AuthCredentials* credentials); |  | 
|   96   bool CanGetCookies(const URLRequest& request, |  | 
|   97                      const CookieList& cookie_list); |  | 
|   98   bool CanSetCookie(const URLRequest& request, |  | 
|   99                     const std::string& cookie_line, |  | 
|  100                     CookieOptions* options); |  | 
|  101   bool CanAccessFile(const URLRequest& request, |  | 
|  102                      const base::FilePath& path) const; |  | 
|  103   bool CanThrottleRequest(const URLRequest& request) const; |  | 
|  104   bool CanEnablePrivacyMode(const GURL& url, |  | 
|  105                             const GURL& first_party_for_cookies) const; |  | 
|  106  |  | 
|  107   bool CancelURLRequestWithPolicyViolatingReferrerHeader( |  | 
|  108       const URLRequest& request, |  | 
|  109       const GURL& target_url, |  | 
|  110       const GURL& referrer_url) const; |  | 
|  111  |   32  | 
|  112  private: |   33  private: | 
|  113   // This is the interface for subclasses of NetworkDelegate to implement. These |   34   // This is the interface for subclasses of NetworkDelegate to implement. These | 
|  114   // member functions will be called by the respective public notification |   35   // member functions will be called by the respective public notification | 
|  115   // member function, which will perform basic sanity checking. |   36   // member function, which will perform basic sanity checking. | 
|  116  |   37  | 
|  117   // Called before a request is sent. Allows the delegate to rewrite the URL |   38   // Called before a request is sent. Allows the delegate to rewrite the URL | 
|  118   // being fetched by modifying |new_url|. If set, the URL must be valid. The |   39   // being fetched by modifying |new_url|. If set, the URL must be valid. The | 
|  119   // reference fragment from the original URL is not automatically appended to |   40   // reference fragment from the original URL is not automatically appended to | 
|  120   // |new_url|; callers are responsible for copying the reference fragment if |   41   // |new_url|; callers are responsible for copying the reference fragment if | 
|  121   // desired. |   42   // desired. | 
|  122   // |callback| and |new_url| are valid only until OnURLRequestDestroyed is |   43   // |callback| and |new_url| are valid only until OnURLRequestDestroyed is | 
|  123   // called for this request. Returns a net status code, generally either OK to |   44   // called for this request. Returns a net status code, generally either OK to | 
|  124   // continue with the request or ERR_IO_PENDING if the result is not ready yet. |   45   // continue with the request or ERR_IO_PENDING if the result is not ready yet. | 
|  125   // A status code other than OK and ERR_IO_PENDING will cancel the request and |   46   // A status code other than OK and ERR_IO_PENDING will cancel the request and | 
|  126   // report the status code as the reason. |   47   // report the status code as the reason. | 
|  127   // |   48   // | 
|  128   // The default implementation returns OK (continue with request). |   49   // The default implementation returns OK (continue with request). | 
|  129   virtual int OnBeforeURLRequest(URLRequest* request, |   50   int OnBeforeURLRequest(URLRequest* request, | 
|  130                                  const CompletionCallback& callback, |   51                          const CompletionCallback& callback, | 
|  131                                  GURL* new_url); |   52                          GURL* new_url) override; | 
|  132  |   53  | 
|  133   // Called as the proxy is being resolved for |url|. Allows the delegate to |   54   // Called as the proxy is being resolved for |url|. Allows the delegate to | 
|  134   // override the proxy resolution decision made by ProxyService. The delegate |   55   // override the proxy resolution decision made by ProxyService. The delegate | 
|  135   // may override the decision by modifying the ProxyInfo |result|. |   56   // may override the decision by modifying the ProxyInfo |result|. | 
|  136   virtual void OnResolveProxy(const GURL& url, |   57   void OnResolveProxy(const GURL& url, | 
|  137                               int load_flags, |   58                       int load_flags, | 
|  138                               const ProxyService& proxy_service, |   59                       const ProxyService& proxy_service, | 
|  139                               ProxyInfo* result); |   60                       ProxyInfo* result) override; | 
|  140  |   61  | 
|  141   // Called when use of |bad_proxy| fails due to |net_error|. |net_error| is |   62   // Called when use of |bad_proxy| fails due to |net_error|. |net_error| is | 
|  142   // the network error encountered, if any, and OK if the fallback was |   63   // the network error encountered, if any, and OK if the fallback was | 
|  143   // for a reason other than a network error (e.g. the proxy service was |   64   // for a reason other than a network error (e.g. the proxy service was | 
|  144   // explicitly directed to skip a proxy). |   65   // explicitly directed to skip a proxy). | 
|  145   virtual void OnProxyFallback(const ProxyServer& bad_proxy, |   66   void OnProxyFallback(const ProxyServer& bad_proxy, int net_error) override; | 
|  146                                int net_error); |  | 
|  147  |   67  | 
|  148   // Called right before the HTTP headers are sent. Allows the delegate to |   68   // Called right before the HTTP headers are sent. Allows the delegate to | 
|  149   // read/write |headers| before they get sent out. |callback| and |headers| are |   69   // read/write |headers| before they get sent out. |callback| and |headers| are | 
|  150   // valid only until OnCompleted or OnURLRequestDestroyed is called for this |   70   // valid only until OnCompleted or OnURLRequestDestroyed is called for this | 
|  151   // request. |   71   // request. | 
|  152   // See OnBeforeURLRequest for return value description. Returns OK by default. |   72   // See OnBeforeURLRequest for return value description. Returns OK by default. | 
|  153   virtual int OnBeforeSendHeaders(URLRequest* request, |   73   int OnBeforeSendHeaders(URLRequest* request, | 
|  154                                   const CompletionCallback& callback, |   74                           const CompletionCallback& callback, | 
|  155                                   HttpRequestHeaders* headers); |   75                           HttpRequestHeaders* headers) override; | 
|  156  |   76  | 
|  157   // Called after a proxy connection. Allows the delegate to read/write |   77   // Called after a proxy connection. Allows the delegate to read/write | 
|  158   // |headers| before they get sent out. |headers| is valid only until |   78   // |headers| before they get sent out. |headers| is valid only until | 
|  159   // OnCompleted or OnURLRequestDestroyed is called for this request. |   79   // OnCompleted or OnURLRequestDestroyed is called for this request. | 
|  160   virtual void OnBeforeSendProxyHeaders(URLRequest* request, |   80   void OnBeforeSendProxyHeaders(URLRequest* request, | 
|  161                                         const ProxyInfo& proxy_info, |   81                                 const ProxyInfo& proxy_info, | 
|  162                                         HttpRequestHeaders* headers); |   82                                 HttpRequestHeaders* headers) override; | 
|  163  |   83  | 
|  164   // Called right before the HTTP request(s) are being sent to the network. |   84   // Called right before the HTTP request(s) are being sent to the network. | 
|  165   // |headers| is only valid until OnCompleted or OnURLRequestDestroyed is |   85   // |headers| is only valid until OnCompleted or OnURLRequestDestroyed is | 
|  166   // called for this request. |   86   // called for this request. | 
|  167   virtual void OnSendHeaders(URLRequest* request, |   87   void OnSendHeaders(URLRequest* request, | 
|  168                              const HttpRequestHeaders& headers); |   88                      const HttpRequestHeaders& headers) override; | 
|  169  |   89  | 
|  170   // Called for HTTP requests when the headers have been received. |   90   // Called for HTTP requests when the headers have been received. | 
|  171   // |original_response_headers| contains the headers as received over the |   91   // |original_response_headers| contains the headers as received over the | 
|  172   // network, these must not be modified. |override_response_headers| can be set |   92   // network, these must not be modified. |override_response_headers| can be set | 
|  173   // to new values, that should be considered as overriding |   93   // to new values, that should be considered as overriding | 
|  174   // |original_response_headers|. |   94   // |original_response_headers|. | 
|  175   // If the response is a redirect, and the Location response header value is |   95   // If the response is a redirect, and the Location response header value is | 
|  176   // identical to |allowed_unsafe_redirect_url|, then the redirect is never |   96   // identical to |allowed_unsafe_redirect_url|, then the redirect is never | 
|  177   // blocked and the reference fragment is not copied from the original URL |   97   // blocked and the reference fragment is not copied from the original URL | 
|  178   // to the redirection target. |   98   // to the redirection target. | 
|  179   // |   99   // | 
|  180   // |callback|, |original_response_headers|, and |override_response_headers| |  100   // |callback|, |original_response_headers|, and |override_response_headers| | 
|  181   // are only valid until OnURLRequestDestroyed is called for this request. |  101   // are only valid until OnURLRequestDestroyed is called for this request. | 
|  182   // See OnBeforeURLRequest for return value description. Returns OK by default. |  102   // See OnBeforeURLRequest for return value description. Returns OK by default. | 
|  183   virtual int OnHeadersReceived( |  103   int OnHeadersReceived( | 
|  184       URLRequest* request, |  104       URLRequest* request, | 
|  185       const CompletionCallback& callback, |  105       const CompletionCallback& callback, | 
|  186       const HttpResponseHeaders* original_response_headers, |  106       const HttpResponseHeaders* original_response_headers, | 
|  187       scoped_refptr<HttpResponseHeaders>* override_response_headers, |  107       scoped_refptr<HttpResponseHeaders>* override_response_headers, | 
|  188       GURL* allowed_unsafe_redirect_url); |  108       GURL* allowed_unsafe_redirect_url) override; | 
|  189  |  109  | 
|  190   // Called right after a redirect response code was received. |  110   // Called right after a redirect response code was received. | 
|  191   // |new_location| is only valid until OnURLRequestDestroyed is called for this |  111   // |new_location| is only valid until OnURLRequestDestroyed is called for this | 
|  192   // request. |  112   // request. | 
|  193   virtual void OnBeforeRedirect(URLRequest* request, |  113   void OnBeforeRedirect(URLRequest* request, | 
|  194                                 const GURL& new_location); |  114                         const GURL& new_location) override; | 
|  195  |  115  | 
|  196   // This corresponds to URLRequestDelegate::OnResponseStarted. |  116   // This corresponds to URLRequestDelegate::OnResponseStarted. | 
|  197   virtual void OnResponseStarted(URLRequest* request); |  117   void OnResponseStarted(URLRequest* request) override; | 
|  198  |  118  | 
|  199   // Called every time we read raw bytes. |  119   // Called every time we read raw bytes. | 
|  200   virtual void OnRawBytesRead(const URLRequest& request, int bytes_read); |  120   void OnRawBytesRead(const URLRequest& request, int bytes_read) override; | 
|  201  |  121  | 
|  202   // Indicates that the URL request has been completed or failed. |  122   // Indicates that the URL request has been completed or failed. | 
|  203   // |started| indicates whether the request has been started. If false, |  123   // |started| indicates whether the request has been started. If false, | 
|  204   // some information like the socket address is not available. |  124   // some information like the socket address is not available. | 
|  205   virtual void OnCompleted(URLRequest* request, bool started); |  125   void OnCompleted(URLRequest* request, bool started) override; | 
|  206  |  126  | 
|  207   // Called when an URLRequest is being destroyed. Note that the request is |  127   // Called when an URLRequest is being destroyed. Note that the request is | 
|  208   // being deleted, so it's not safe to call any methods that may result in |  128   // being deleted, so it's not safe to call any methods that may result in | 
|  209   // a virtual method call. |  129   // a virtual method call. | 
|  210   virtual void OnURLRequestDestroyed(URLRequest* request); |  130   void OnURLRequestDestroyed(URLRequest* request) override; | 
|  211  |  131  | 
|  212   // Corresponds to ProxyResolverJSBindings::OnError. |  132   // Corresponds to ProxyResolverJSBindings::OnError. | 
|  213   virtual void OnPACScriptError(int line_number, |  133   void OnPACScriptError(int line_number, | 
|  214                                 const base::string16& error); |  134                         const base::string16& error) override; | 
|  215  |  135  | 
|  216   // Called when a request receives an authentication challenge |  136   // Called when a request receives an authentication challenge | 
|  217   // specified by |auth_info|, and is unable to respond using cached |  137   // specified by |auth_info|, and is unable to respond using cached | 
|  218   // credentials. |callback| and |credentials| must be non-NULL, and must |  138   // credentials. |callback| and |credentials| must be non-NULL, and must | 
|  219   // be valid until OnURLRequestDestroyed is called for |request|. |  139   // be valid until OnURLRequestDestroyed is called for |request|. | 
|  220   // |  140   // | 
|  221   // The following return values are allowed: |  141   // The following return values are allowed: | 
|  222   //  - AUTH_REQUIRED_RESPONSE_NO_ACTION: |auth_info| is observed, but |  142   //  - AUTH_REQUIRED_RESPONSE_NO_ACTION: |auth_info| is observed, but | 
|  223   //    no action is being taken on it. |  143   //    no action is being taken on it. | 
|  224   //  - AUTH_REQUIRED_RESPONSE_SET_AUTH: |credentials| is filled in with |  144   //  - AUTH_REQUIRED_RESPONSE_SET_AUTH: |credentials| is filled in with | 
|  225   //    a username and password, which should be used in a response to |  145   //    a username and password, which should be used in a response to | 
|  226   //    |auth_info|. |  146   //    |auth_info|. | 
|  227   //  - AUTH_REQUIRED_RESPONSE_CANCEL_AUTH: The authentication challenge |  147   //  - AUTH_REQUIRED_RESPONSE_CANCEL_AUTH: The authentication challenge | 
|  228   //    should not be attempted. |  148   //    should not be attempted. | 
|  229   //  - AUTH_REQUIRED_RESPONSE_IO_PENDING: The action will be decided |  149   //  - AUTH_REQUIRED_RESPONSE_IO_PENDING: The action will be decided | 
|  230   //    asynchronously. |callback| will be invoked when the decision is made, |  150   //    asynchronously. |callback| will be invoked when the decision is made, | 
|  231   //    and one of the other AuthRequiredResponse values will be passed in with |  151   //    and one of the other AuthRequiredResponse values will be passed in with | 
|  232   //    the same semantics as described above. |  152   //    the same semantics as described above. | 
|  233   virtual AuthRequiredResponse OnAuthRequired( |  153   AuthRequiredResponse OnAuthRequired(URLRequest* request, | 
|  234       URLRequest* request, |  154                                       const AuthChallengeInfo& auth_info, | 
|  235       const AuthChallengeInfo& auth_info, |  155                                       const AuthCallback& callback, | 
|  236       const AuthCallback& callback, |  156                                       AuthCredentials* credentials) override; | 
|  237       AuthCredentials* credentials); |  | 
|  238  |  157  | 
|  239   // Called when reading cookies to allow the network delegate to block access |  158   // Called when reading cookies to allow the network delegate to block access | 
|  240   // to the cookie. This method will never be invoked when |  159   // to the cookie. This method will never be invoked when | 
|  241   // LOAD_DO_NOT_SEND_COOKIES is specified. |  160   // LOAD_DO_NOT_SEND_COOKIES is specified. | 
|  242   virtual bool OnCanGetCookies(const URLRequest& request, |  161   bool OnCanGetCookies(const URLRequest& request, | 
|  243                                const CookieList& cookie_list); |  162                        const CookieList& cookie_list) override; | 
|  244  |  163  | 
|  245   // Called when a cookie is set to allow the network delegate to block access |  164   // Called when a cookie is set to allow the network delegate to block access | 
|  246   // to the cookie. This method will never be invoked when |  165   // to the cookie. This method will never be invoked when | 
|  247   // LOAD_DO_NOT_SAVE_COOKIES is specified. |  166   // LOAD_DO_NOT_SAVE_COOKIES is specified. | 
|  248   virtual bool OnCanSetCookie(const URLRequest& request, |  167   bool OnCanSetCookie(const URLRequest& request, | 
|  249                               const std::string& cookie_line, |  168                       const std::string& cookie_line, | 
|  250                               CookieOptions* options); |  169                       CookieOptions* options) override; | 
|  251  |  170  | 
|  252   // Called when a file access is attempted to allow the network delegate to |  171   // Called when a file access is attempted to allow the network delegate to | 
|  253   // allow or block access to the given file path.  Returns true if access is |  172   // allow or block access to the given file path.  Returns true if access is | 
|  254   // allowed. |  173   // allowed. | 
|  255   virtual bool OnCanAccessFile(const URLRequest& request, |  174   bool OnCanAccessFile(const URLRequest& request, | 
|  256                                const base::FilePath& path) const; |  175                        const base::FilePath& path) const override; | 
|  257  |  176  | 
|  258   // Returns true if the given request may be rejected when the |  177   // Returns true if the given request may be rejected when the | 
|  259   // URLRequestThrottlerManager believes the server servicing the |  178   // URLRequestThrottlerManager believes the server servicing the | 
|  260   // request is overloaded or down. |  179   // request is overloaded or down. | 
|  261   virtual bool OnCanThrottleRequest(const URLRequest& request) const; |  180   bool OnCanThrottleRequest(const URLRequest& request) const override; | 
|  262  |  181  | 
|  263   // Returns true if the given |url| has to be requested over connection that |  182   // Returns true if the given |url| has to be requested over connection that | 
|  264   // is not tracked by the server. Usually is false, unless user privacy |  183   // is not tracked by the server. Usually is false, unless user privacy | 
|  265   // settings block cookies from being get or set. |  184   // settings block cookies from being get or set. | 
|  266   virtual bool OnCanEnablePrivacyMode( |  185   bool OnCanEnablePrivacyMode( | 
|  267       const GURL& url, |  186       const GURL& url, | 
|  268       const GURL& first_party_for_cookies) const; |  187       const GURL& first_party_for_cookies) const override; | 
|  269  |  188  | 
|  270   // Called when the |referrer_url| for requesting |target_url| during handling |  189   // Called when the |referrer_url| for requesting |target_url| during handling | 
|  271   // of the |request| is does not comply with the referrer policy (e.g. a |  190   // of the |request| is does not comply with the referrer policy (e.g. a | 
|  272   // secure referrer for an insecure initial target). |  191   // secure referrer for an insecure initial target). | 
|  273   // Returns true if the request should be cancelled. Otherwise, the referrer |  192   // Returns true if the request should be cancelled. Otherwise, the referrer | 
|  274   // header is stripped from the request. |  193   // header is stripped from the request. | 
|  275   virtual bool OnCancelURLRequestWithPolicyViolatingReferrerHeader( |  194   bool OnCancelURLRequestWithPolicyViolatingReferrerHeader( | 
|  276       const URLRequest& request, |  195       const URLRequest& request, | 
|  277       const GURL& target_url, |  196       const GURL& target_url, | 
|  278       const GURL& referrer_url) const; |  197       const GURL& referrer_url) const override; | 
|  279 }; |  198 }; | 
|  280  |  199  | 
|  281 }  // namespace net |  200 }  // namespace net | 
|  282  |  201  | 
|  283 #endif  // NET_BASE_NETWORK_DELEGATE_H_ |  202 #endif  // NET_BASE_NETWORK_DELEGATE_IMPL_H_ | 
| OLD | NEW |