OLD | NEW |
1 // Copyright 2014 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 #include "chrome/browser/devtools/devtools_network_transaction.h" | 5 #include "chrome/browser/devtools/devtools_network_transaction.h" |
6 | 6 |
7 #include "chrome/browser/devtools/devtools_network_controller.h" | 7 #include "chrome/browser/devtools/devtools_network_controller.h" |
8 #include "chrome/browser/devtools/devtools_network_interceptor.h" | 8 #include "chrome/browser/devtools/devtools_network_interceptor.h" |
9 #include "net/base/load_timing_info.h" | 9 #include "net/base/load_timing_info.h" |
10 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 interceptor_ = controller_->GetInterceptor(client_id); | 143 interceptor_ = controller_->GetInterceptor(client_id); |
144 | 144 |
145 if (interceptor_ && interceptor_->ShouldFail()) { | 145 if (interceptor_ && interceptor_->ShouldFail()) { |
146 failed_ = true; | 146 failed_ = true; |
147 network_transaction_->SetBeforeNetworkStartCallback( | 147 network_transaction_->SetBeforeNetworkStartCallback( |
148 BeforeNetworkStartCallback()); | 148 BeforeNetworkStartCallback()); |
149 interceptor_.reset(); | 149 interceptor_.reset(); |
150 return net::ERR_INTERNET_DISCONNECTED; | 150 return net::ERR_INTERNET_DISCONNECTED; |
151 } | 151 } |
152 | 152 |
153 if (interceptor_) | 153 if (!interceptor_) |
154 interceptor_->AddThrottable(this); | 154 return network_transaction_->Start(request_, callback, net_log); |
| 155 |
| 156 interceptor_->AddThrottable(this); |
155 int rv = network_transaction_->Start(request_, proxy_callback_, net_log); | 157 int rv = network_transaction_->Start(request_, proxy_callback_, net_log); |
156 return SetupCallback(callback, rv, START); | 158 return SetupCallback(callback, rv, START); |
157 } | 159 } |
158 | 160 |
159 void DevToolsNetworkTransaction::ProcessRequest(std::string* client_id) { | 161 void DevToolsNetworkTransaction::ProcessRequest(std::string* client_id) { |
160 DCHECK(request_); | 162 DCHECK(request_); |
161 bool has_devtools_client_id = request_->extra_headers.HasHeader( | 163 bool has_devtools_client_id = request_->extra_headers.HasHeader( |
162 kDevToolsEmulateNetworkConditionsClientId); | 164 kDevToolsEmulateNetworkConditionsClientId); |
163 if (!has_devtools_client_id) | 165 if (!has_devtools_client_id) |
164 return; | 166 return; |
165 | 167 |
166 custom_request_.reset(new net::HttpRequestInfo(*request_)); | 168 custom_request_.reset(new net::HttpRequestInfo(*request_)); |
167 custom_request_->extra_headers.GetHeader( | 169 custom_request_->extra_headers.GetHeader( |
168 kDevToolsEmulateNetworkConditionsClientId, client_id); | 170 kDevToolsEmulateNetworkConditionsClientId, client_id); |
169 custom_request_->extra_headers.RemoveHeader( | 171 custom_request_->extra_headers.RemoveHeader( |
170 kDevToolsEmulateNetworkConditionsClientId); | 172 kDevToolsEmulateNetworkConditionsClientId); |
171 request_ = custom_request_.get(); | 173 request_ = custom_request_.get(); |
172 } | 174 } |
173 | 175 |
174 int DevToolsNetworkTransaction::RestartIgnoringLastError( | 176 int DevToolsNetworkTransaction::RestartIgnoringLastError( |
175 const net::CompletionCallback& callback) { | 177 const net::CompletionCallback& callback) { |
176 if (failed_) | 178 if (failed_) |
177 return net::ERR_INTERNET_DISCONNECTED; | 179 return net::ERR_INTERNET_DISCONNECTED; |
| 180 if (!interceptor_) |
| 181 return network_transaction_->RestartIgnoringLastError(callback); |
178 int rv = network_transaction_->RestartIgnoringLastError(proxy_callback_); | 182 int rv = network_transaction_->RestartIgnoringLastError(proxy_callback_); |
179 return SetupCallback(callback, rv, RESTART_IGNORING_LAST_ERROR); | 183 return SetupCallback(callback, rv, RESTART_IGNORING_LAST_ERROR); |
180 } | 184 } |
181 | 185 |
182 int DevToolsNetworkTransaction::RestartWithCertificate( | 186 int DevToolsNetworkTransaction::RestartWithCertificate( |
183 net::X509Certificate* client_cert, | 187 net::X509Certificate* client_cert, |
184 net::SSLPrivateKey* client_private_key, | 188 net::SSLPrivateKey* client_private_key, |
185 const net::CompletionCallback& callback) { | 189 const net::CompletionCallback& callback) { |
186 if (failed_) | 190 if (failed_) |
187 return net::ERR_INTERNET_DISCONNECTED; | 191 return net::ERR_INTERNET_DISCONNECTED; |
| 192 if (!interceptor_) { |
| 193 return network_transaction_->RestartWithCertificate( |
| 194 client_cert, client_private_key, callback); |
| 195 } |
188 int rv = network_transaction_->RestartWithCertificate( | 196 int rv = network_transaction_->RestartWithCertificate( |
189 client_cert, client_private_key, proxy_callback_); | 197 client_cert, client_private_key, proxy_callback_); |
190 return SetupCallback(callback, rv, RESTART_WITH_CERTIFICATE); | 198 return SetupCallback(callback, rv, RESTART_WITH_CERTIFICATE); |
191 } | 199 } |
192 | 200 |
193 int DevToolsNetworkTransaction::RestartWithAuth( | 201 int DevToolsNetworkTransaction::RestartWithAuth( |
194 const net::AuthCredentials& credentials, | 202 const net::AuthCredentials& credentials, |
195 const net::CompletionCallback& callback) { | 203 const net::CompletionCallback& callback) { |
196 if (failed_) | 204 if (failed_) |
197 return net::ERR_INTERNET_DISCONNECTED; | 205 return net::ERR_INTERNET_DISCONNECTED; |
| 206 if (!interceptor_) |
| 207 return network_transaction_->RestartWithAuth(credentials, callback); |
198 int rv = network_transaction_->RestartWithAuth(credentials, proxy_callback_); | 208 int rv = network_transaction_->RestartWithAuth(credentials, proxy_callback_); |
199 return SetupCallback(callback, rv, RESTART_WITH_AUTH); | 209 return SetupCallback(callback, rv, RESTART_WITH_AUTH); |
200 } | 210 } |
201 | 211 |
202 bool DevToolsNetworkTransaction::IsReadyToRestartForAuth() { | 212 bool DevToolsNetworkTransaction::IsReadyToRestartForAuth() { |
203 return network_transaction_->IsReadyToRestartForAuth(); | 213 return network_transaction_->IsReadyToRestartForAuth(); |
204 } | 214 } |
205 | 215 |
206 int DevToolsNetworkTransaction::Read( | 216 int DevToolsNetworkTransaction::Read( |
207 net::IOBuffer* buf, | 217 net::IOBuffer* buf, |
208 int buf_len, | 218 int buf_len, |
209 const net::CompletionCallback& callback) { | 219 const net::CompletionCallback& callback) { |
210 if (failed_) | 220 if (failed_) |
211 return net::ERR_INTERNET_DISCONNECTED; | 221 return net::ERR_INTERNET_DISCONNECTED; |
| 222 if (!interceptor_) |
| 223 return network_transaction_->Read(buf, buf_len, callback); |
212 int rv = network_transaction_->Read(buf, buf_len, proxy_callback_); | 224 int rv = network_transaction_->Read(buf, buf_len, proxy_callback_); |
213 return SetupCallback(callback, rv, READ); | 225 return SetupCallback(callback, rv, READ); |
214 } | 226 } |
215 | 227 |
216 void DevToolsNetworkTransaction::StopCaching() { | 228 void DevToolsNetworkTransaction::StopCaching() { |
217 network_transaction_->StopCaching(); | 229 network_transaction_->StopCaching(); |
218 } | 230 } |
219 | 231 |
220 bool DevToolsNetworkTransaction::GetFullRequestHeaders( | 232 bool DevToolsNetworkTransaction::GetFullRequestHeaders( |
221 net::HttpRequestHeaders* headers) const { | 233 net::HttpRequestHeaders* headers) const { |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 } | 289 } |
278 | 290 |
279 void DevToolsNetworkTransaction::SetBeforeProxyHeadersSentCallback( | 291 void DevToolsNetworkTransaction::SetBeforeProxyHeadersSentCallback( |
280 const BeforeProxyHeadersSentCallback& callback) { | 292 const BeforeProxyHeadersSentCallback& callback) { |
281 network_transaction_->SetBeforeProxyHeadersSentCallback(callback); | 293 network_transaction_->SetBeforeProxyHeadersSentCallback(callback); |
282 } | 294 } |
283 | 295 |
284 int DevToolsNetworkTransaction::ResumeNetworkStart() { | 296 int DevToolsNetworkTransaction::ResumeNetworkStart() { |
285 if (failed_) | 297 if (failed_) |
286 return net::ERR_INTERNET_DISCONNECTED; | 298 return net::ERR_INTERNET_DISCONNECTED; |
| 299 if (!interceptor_) |
| 300 return network_transaction_->ResumeNetworkStart(); |
287 return network_transaction_->ResumeNetworkStart(); | 301 return network_transaction_->ResumeNetworkStart(); |
288 } | 302 } |
289 | 303 |
290 void | 304 void |
291 DevToolsNetworkTransaction::GetConnectionAttempts(net::ConnectionAttempts* out) | 305 DevToolsNetworkTransaction::GetConnectionAttempts(net::ConnectionAttempts* out) |
292 const { | 306 const { |
293 network_transaction_->GetConnectionAttempts(out); | 307 network_transaction_->GetConnectionAttempts(out); |
294 } | 308 } |
295 | 309 |
296 void DevToolsNetworkTransaction::ThrottleFinished() { | 310 void DevToolsNetworkTransaction::ThrottleFinished() { |
297 DCHECK(!callback_.is_null()); | 311 DCHECK(!callback_.is_null()); |
298 DCHECK(callback_type_ == READ || callback_type_ == START); | 312 DCHECK(callback_type_ == READ || callback_type_ == START); |
299 net::CompletionCallback callback = callback_; | 313 net::CompletionCallback callback = callback_; |
300 callback_.Reset(); | 314 callback_.Reset(); |
301 callback_type_ = NONE; | 315 callback_type_ = NONE; |
302 callback.Run(throttled_result_); | 316 callback.Run(throttled_result_); |
303 } | 317 } |
OLD | NEW |