OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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_HTTP_HTTP_NETWORK_TRANSACTION_H_ | 5 #ifndef NET_HTTP_HTTP_NETWORK_TRANSACTION_H_ |
6 #define NET_HTTP_HTTP_NETWORK_TRANSACTION_H_ | 6 #define NET_HTTP_HTTP_NETWORK_TRANSACTION_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/ref_counted.h" | 10 #include "base/ref_counted.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 } | 48 } |
49 | 49 |
50 virtual int Read(IOBuffer* buf, int buf_len, CompletionCallback* callback); | 50 virtual int Read(IOBuffer* buf, int buf_len, CompletionCallback* callback); |
51 virtual const HttpResponseInfo* GetResponseInfo() const; | 51 virtual const HttpResponseInfo* GetResponseInfo() const; |
52 virtual LoadState GetLoadState() const; | 52 virtual LoadState GetLoadState() const; |
53 virtual uint64 GetUploadProgress() const; | 53 virtual uint64 GetUploadProgress() const; |
54 | 54 |
55 private: | 55 private: |
56 FRIEND_TEST(HttpNetworkTransactionTest, ResetStateForRestart); | 56 FRIEND_TEST(HttpNetworkTransactionTest, ResetStateForRestart); |
57 | 57 |
58 void BuildRequestHeaders(); | |
59 void BuildTunnelRequest(); | |
60 void DoCallback(int result); | 58 void DoCallback(int result); |
61 void OnIOComplete(int result); | 59 void OnIOComplete(int result); |
62 | 60 |
63 // Runs the state transition loop. | 61 // Runs the state transition loop. |
64 int DoLoop(int result); | 62 int DoLoop(int result); |
65 | 63 |
66 // Each of these methods corresponds to a State value. Those with an input | 64 // Each of these methods corresponds to a State value. Those with an input |
67 // argument receive the result from the previous state. If a method returns | 65 // argument receive the result from the previous state. If a method returns |
68 // ERR_IO_PENDING, then the result from OnIOComplete will be passed to the | 66 // ERR_IO_PENDING, then the result from OnIOComplete will be passed to the |
69 // next state method as the result arg. | 67 // next state method as the result arg. |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 // Called to possibly recover from an SSL handshake error. Sets next_state_ | 110 // Called to possibly recover from an SSL handshake error. Sets next_state_ |
113 // and returns OK if recovering from the error. Otherwise, the same error | 111 // and returns OK if recovering from the error. Otherwise, the same error |
114 // code is returned. | 112 // code is returned. |
115 int HandleSSLHandshakeError(int error); | 113 int HandleSSLHandshakeError(int error); |
116 | 114 |
117 // Called to possibly recover from the given error. Sets next_state_ and | 115 // Called to possibly recover from the given error. Sets next_state_ and |
118 // returns OK if recovering from the error. Otherwise, the same error code | 116 // returns OK if recovering from the error. Otherwise, the same error code |
119 // is returned. | 117 // is returned. |
120 int HandleIOError(int error); | 118 int HandleIOError(int error); |
121 | 119 |
122 // Called when we reached EOF or got an error. If we should resend the | 120 // Called when we reached EOF or got an error. Returns true if we should |
123 // request, sets next_state_ and returns true. Otherwise, does nothing and | 121 // resend the request. |
124 // returns false. | 122 bool ShouldResendRequest() const; |
125 bool ShouldResendRequest(); | 123 |
| 124 // Resets the connection and the request headers for resend. Called when |
| 125 // ShouldResendRequest() is true. |
| 126 void ResetConnectionAndRequestForResend(); |
126 | 127 |
127 // Called when we encounter a network error that could be resolved by trying | 128 // Called when we encounter a network error that could be resolved by trying |
128 // a new proxy configuration. If there is another proxy configuration to try | 129 // a new proxy configuration. If there is another proxy configuration to try |
129 // then this method sets next_state_ appropriately and returns either OK or | 130 // then this method sets next_state_ appropriately and returns either OK or |
130 // ERR_IO_PENDING depending on whether or not the new proxy configuration is | 131 // ERR_IO_PENDING depending on whether or not the new proxy configuration is |
131 // available synchronously or asynchronously. Otherwise, the given error | 132 // available synchronously or asynchronously. Otherwise, the given error |
132 // code is simply returned. | 133 // code is simply returned. |
133 int ReconsiderProxyAfterError(int error); | 134 int ReconsiderProxyAfterError(int error); |
134 | 135 |
135 // Decides the policy when the connection is closed before the end of headers | 136 // Decides the policy when the connection is closed before the end of headers |
(...skipping 12 matching lines...) Expand all Loading... |
148 void PrepareForAuthRestart(HttpAuth::Target target); | 149 void PrepareForAuthRestart(HttpAuth::Target target); |
149 | 150 |
150 // Called when we don't need to drain the response body or have drained it. | 151 // Called when we don't need to drain the response body or have drained it. |
151 // Resets |connection_| unless |keep_alive| is true, then calls | 152 // Resets |connection_| unless |keep_alive| is true, then calls |
152 // ResetStateForRestart. Sets |next_state_| appropriately. | 153 // ResetStateForRestart. Sets |next_state_| appropriately. |
153 void DidDrainBodyForAuthRestart(bool keep_alive); | 154 void DidDrainBodyForAuthRestart(bool keep_alive); |
154 | 155 |
155 // Resets the members of the transaction so it can be restarted. | 156 // Resets the members of the transaction so it can be restarted. |
156 void ResetStateForRestart(); | 157 void ResetStateForRestart(); |
157 | 158 |
158 // Attach any credentials needed for the proxy server or origin server. | 159 // Returns true if we should try to add a Proxy-Authorization header |
159 void ApplyAuth(); | 160 bool ShouldApplyProxyAuth() const; |
160 | 161 |
161 // Helper used by ApplyAuth(). Adds either the proxy auth header, or the | 162 // Returns true if we should try to add an Authorization header. |
162 // origin server auth header, as specified by |target| | 163 bool ShouldApplyServerAuth() const; |
163 void AddAuthorizationHeader(HttpAuth::Target target); | 164 |
| 165 // Builds either the proxy auth header, or the origin server auth header, |
| 166 // as specified by |target|. |
| 167 std::string BuildAuthorizationHeader(HttpAuth::Target target) const; |
164 | 168 |
165 // Returns a log message for all the response headers related to the auth | 169 // Returns a log message for all the response headers related to the auth |
166 // challenge. | 170 // challenge. |
167 std::string AuthChallengeLogMessage() const; | 171 std::string AuthChallengeLogMessage() const; |
168 | 172 |
169 // Handles HTTP status code 401 or 407. | 173 // Handles HTTP status code 401 or 407. |
170 // HandleAuthChallenge() returns a network error code, or OK on success. | 174 // HandleAuthChallenge() returns a network error code, or OK on success. |
171 // May update |pending_auth_target_| or |response_.auth_challenge|. | 175 // May update |pending_auth_target_| or |response_.auth_challenge|. |
172 int HandleAuthChallenge(); | 176 int HandleAuthChallenge(); |
173 | 177 |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 STATE_DRAIN_BODY_FOR_AUTH_RESTART, | 349 STATE_DRAIN_BODY_FOR_AUTH_RESTART, |
346 STATE_DRAIN_BODY_FOR_AUTH_RESTART_COMPLETE, | 350 STATE_DRAIN_BODY_FOR_AUTH_RESTART_COMPLETE, |
347 STATE_NONE | 351 STATE_NONE |
348 }; | 352 }; |
349 State next_state_; | 353 State next_state_; |
350 }; | 354 }; |
351 | 355 |
352 } // namespace net | 356 } // namespace net |
353 | 357 |
354 #endif // NET_HTTP_HTTP_NETWORK_TRANSACTION_H_ | 358 #endif // NET_HTTP_HTTP_NETWORK_TRANSACTION_H_ |
OLD | NEW |