| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_H_ |
| 6 #define NET_BASE_NETWORK_DELEGATE_H_ | 6 #define NET_BASE_NETWORK_DELEGATE_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include "base/string16.h" | 9 #include "base/string16.h" |
| 10 #include "base/threading/non_thread_safe.h" | 10 #include "base/threading/non_thread_safe.h" |
| 11 #include "net/base/completion_callback.h" | 11 #include "net/base/completion_callback.h" |
| 12 | 12 |
| 13 class GURL; | 13 class GURL; |
| 14 | 14 |
| 15 namespace net { | 15 namespace net { |
| 16 | 16 |
| 17 // NOTE: Layering violations! | 17 // NOTE: Layering violations! |
| 18 // We decided to accept these violations (depending | 18 // We decided to accept these violations (depending |
| 19 // on other net/ submodules from net/base/), because otherwise NetworkDelegate | 19 // on other net/ submodules from net/base/), because otherwise NetworkDelegate |
| 20 // would have to be broken up into too many smaller interfaces targeted to each | 20 // would have to be broken up into too many smaller interfaces targeted to each |
| 21 // submodule. Also, since the lower levels in net/ may callback into higher | 21 // submodule. Also, since the lower levels in net/ may callback into higher |
| 22 // levels, we may encounter dangerous casting issues. | 22 // levels, we may encounter dangerous casting issues. |
| 23 // | 23 // |
| 24 // NOTE: It is not okay to add any compile-time dependencies on symbols outside | 24 // NOTE: It is not okay to add any compile-time dependencies on symbols outside |
| 25 // of net/base here, because we have a net_base library. Forward declarations | 25 // of net/base here, because we have a net_base library. Forward declarations |
| 26 // are ok. | 26 // are ok. |
| 27 class AuthChallengeInfo; | 27 class AuthChallengeInfo; |
| 28 class AuthCredentials; |
| 28 class HostPortPair; | 29 class HostPortPair; |
| 29 class HttpRequestHeaders; | 30 class HttpRequestHeaders; |
| 30 class URLRequest; | 31 class URLRequest; |
| 31 class URLRequestJob; | 32 class URLRequestJob; |
| 32 | 33 |
| 33 class NetworkDelegate : public base::NonThreadSafe { | 34 class NetworkDelegate : public base::NonThreadSafe { |
| 34 public: | 35 public: |
| 35 virtual ~NetworkDelegate() {} | 36 virtual ~NetworkDelegate() {} |
| 36 | 37 |
| 37 // Notification interface called by the network stack. Note that these | 38 // Notification interface called by the network stack. Note that these |
| 38 // functions mostly forward to the private virtuals. They also add some sanity | 39 // functions mostly forward to the private virtuals. They also add some sanity |
| 39 // checking on parameters. See the corresponding virtuals for explanations of | 40 // checking on parameters. See the corresponding virtuals for explanations of |
| 40 // the methods and their arguments. | 41 // the methods and their arguments. |
| 41 int NotifyBeforeURLRequest(URLRequest* request, | 42 int NotifyBeforeURLRequest(URLRequest* request, |
| 42 CompletionCallback* callback, | 43 CompletionCallback* callback, |
| 43 GURL* new_url); | 44 GURL* new_url); |
| 44 int NotifyBeforeSendHeaders(URLRequest* request, | 45 int NotifyBeforeSendHeaders(URLRequest* request, |
| 45 CompletionCallback* callback, | 46 CompletionCallback* callback, |
| 46 HttpRequestHeaders* headers); | 47 HttpRequestHeaders* headers); |
| 47 void NotifySendHeaders(URLRequest* request, | 48 void NotifySendHeaders(URLRequest* request, |
| 48 const HttpRequestHeaders& headers); | 49 const HttpRequestHeaders& headers); |
| 49 void NotifyBeforeRedirect(URLRequest* request, | 50 void NotifyBeforeRedirect(URLRequest* request, |
| 50 const GURL& new_location); | 51 const GURL& new_location); |
| 51 void NotifyResponseStarted(URLRequest* request); | 52 void NotifyResponseStarted(URLRequest* request); |
| 52 void NotifyRawBytesRead(const URLRequest& request, int bytes_read); | 53 void NotifyRawBytesRead(const URLRequest& request, int bytes_read); |
| 53 void NotifyCompleted(URLRequest* request); | 54 void NotifyCompleted(URLRequest* request); |
| 54 void NotifyURLRequestDestroyed(URLRequest* request); | 55 void NotifyURLRequestDestroyed(URLRequest* request); |
| 55 void NotifyPACScriptError(int line_number, const string16& error); | 56 void NotifyPACScriptError(int line_number, const string16& error); |
| 56 void NotifyAuthRequired(URLRequest* request, | 57 int NotifyAuthRequired(URLRequest* request, |
| 57 const AuthChallengeInfo& auth_info); | 58 const AuthChallengeInfo& auth_info, |
| 59 CompletionCallback* callback, |
| 60 AuthCredentials* credentials); |
| 58 | 61 |
| 59 private: | 62 private: |
| 60 // This is the interface for subclasses of NetworkDelegate to implement. This | 63 // This is the interface for subclasses of NetworkDelegate to implement. This |
| 61 // member functions will be called by the respective public notification | 64 // member functions will be called by the respective public notification |
| 62 // member function, which will perform basic sanity checking. | 65 // member function, which will perform basic sanity checking. |
| 63 | 66 |
| 64 // Called before a request is sent. Allows the delegate to rewrite the URL | 67 // Called before a request is sent. Allows the delegate to rewrite the URL |
| 65 // being fetched by modifying |new_url|. |callback| and |new_url| are valid | 68 // being fetched by modifying |new_url|. |callback| and |new_url| are valid |
| 66 // only until OnURLRequestDestroyed is called for this request. Returns a net | 69 // only until OnURLRequestDestroyed is called for this request. Returns a net |
| 67 // status code, generally either OK to continue with the request or | 70 // status code, generally either OK to continue with the request or |
| (...skipping 29 matching lines...) Expand all Loading... |
| 97 | 100 |
| 98 // Called when an URLRequest is being destroyed. Note that the request is | 101 // Called when an URLRequest is being destroyed. Note that the request is |
| 99 // being deleted, so it's not safe to call any methods that may result in | 102 // being deleted, so it's not safe to call any methods that may result in |
| 100 // a virtual method call. | 103 // a virtual method call. |
| 101 virtual void OnURLRequestDestroyed(URLRequest* request) = 0; | 104 virtual void OnURLRequestDestroyed(URLRequest* request) = 0; |
| 102 | 105 |
| 103 // Corresponds to ProxyResolverJSBindings::OnError. | 106 // Corresponds to ProxyResolverJSBindings::OnError. |
| 104 virtual void OnPACScriptError(int line_number, const string16& error) = 0; | 107 virtual void OnPACScriptError(int line_number, const string16& error) = 0; |
| 105 | 108 |
| 106 // Corresponds to URLRequest::Delegate::OnAuthRequired. | 109 // Corresponds to URLRequest::Delegate::OnAuthRequired. |
| 107 virtual void OnAuthRequired(URLRequest* reqest, | 110 virtual int OnAuthRequired(URLRequest* reqest, |
| 108 const AuthChallengeInfo& auth_info) = 0; | 111 const AuthChallengeInfo& auth_info, |
| 112 CompletionCallback* callback, |
| 113 AuthCredentials* credentials) = 0; |
| 109 }; | 114 }; |
| 110 | 115 |
| 111 } // namespace net | 116 } // namespace net |
| 112 | 117 |
| 113 #endif // NET_BASE_NETWORK_DELEGATE_H_ | 118 #endif // NET_BASE_NETWORK_DELEGATE_H_ |
| OLD | NEW |