| 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 20 matching lines...) Expand all Loading... |
| 31 proxy_callback_(base::Bind(&DevToolsNetworkTransaction::OnCallback, | 31 proxy_callback_(base::Bind(&DevToolsNetworkTransaction::OnCallback, |
| 32 base::Unretained(this))) { | 32 base::Unretained(this))) { |
| 33 DCHECK(controller); | 33 DCHECK(controller); |
| 34 } | 34 } |
| 35 | 35 |
| 36 DevToolsNetworkTransaction::~DevToolsNetworkTransaction() { | 36 DevToolsNetworkTransaction::~DevToolsNetworkTransaction() { |
| 37 if (interceptor_) | 37 if (interceptor_) |
| 38 interceptor_->RemoveThrottable(this); | 38 interceptor_->RemoveThrottable(this); |
| 39 } | 39 } |
| 40 | 40 |
| 41 bool DevToolsNetworkTransaction::HasStarted() { | |
| 42 return !!request_; | |
| 43 } | |
| 44 | |
| 45 bool DevToolsNetworkTransaction::HasFailed() { | |
| 46 return failed_; | |
| 47 } | |
| 48 | |
| 49 int64_t DevToolsNetworkTransaction::ThrottledByteCount() { | 41 int64_t DevToolsNetworkTransaction::ThrottledByteCount() { |
| 50 return throttled_byte_count_; | 42 return throttled_byte_count_; |
| 51 } | 43 } |
| 52 | 44 |
| 53 void DevToolsNetworkTransaction::Throttled(int64_t count) { | 45 void DevToolsNetworkTransaction::Throttled(int64_t count) { |
| 54 throttled_byte_count_ -= count; | 46 throttled_byte_count_ -= count; |
| 55 } | 47 } |
| 56 | 48 |
| 57 void DevToolsNetworkTransaction::GetSendEndTiming(base::TimeTicks* send_end) { | 49 void DevToolsNetworkTransaction::GetSendEndTiming(base::TimeTicks* send_end) { |
| 58 net::LoadTimingInfo load_timing_info; | 50 net::LoadTimingInfo load_timing_info; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 Throttle(result); | 112 Throttle(result); |
| 121 return net::ERR_IO_PENDING; | 113 return net::ERR_IO_PENDING; |
| 122 } | 114 } |
| 123 | 115 |
| 124 void DevToolsNetworkTransaction::Fail() { | 116 void DevToolsNetworkTransaction::Fail() { |
| 125 DCHECK(request_); | 117 DCHECK(request_); |
| 126 DCHECK(!failed_); | 118 DCHECK(!failed_); |
| 127 failed_ = true; | 119 failed_ = true; |
| 128 network_transaction_->SetBeforeNetworkStartCallback( | 120 network_transaction_->SetBeforeNetworkStartCallback( |
| 129 BeforeNetworkStartCallback()); | 121 BeforeNetworkStartCallback()); |
| 122 if (interceptor_) { |
| 123 interceptor_->RemoveThrottable(this); |
| 124 interceptor_.reset(); |
| 125 } |
| 130 if (callback_.is_null()) | 126 if (callback_.is_null()) |
| 131 return; | 127 return; |
| 132 net::CompletionCallback callback = callback_; | 128 net::CompletionCallback callback = callback_; |
| 133 callback_.Reset(); | 129 callback_.Reset(); |
| 134 callback_type_ = NONE; | 130 callback_type_ = NONE; |
| 135 callback.Run(net::ERR_INTERNET_DISCONNECTED); | 131 callback.Run(net::ERR_INTERNET_DISCONNECTED); |
| 136 } | 132 } |
| 137 | 133 |
| 138 int DevToolsNetworkTransaction::Start( | 134 int DevToolsNetworkTransaction::Start( |
| 139 const net::HttpRequestInfo* request, | 135 const net::HttpRequestInfo* request, |
| 140 const net::CompletionCallback& callback, | 136 const net::CompletionCallback& callback, |
| 141 const net::BoundNetLog& net_log) { | 137 const net::BoundNetLog& net_log) { |
| 142 DCHECK(request); | 138 DCHECK(request); |
| 143 request_ = request; | 139 request_ = request; |
| 144 | 140 |
| 145 std::string client_id; | 141 std::string client_id; |
| 146 ProcessRequest(&client_id); | 142 ProcessRequest(&client_id); |
| 147 interceptor_ = controller_->GetInterceptor(client_id); | 143 interceptor_ = controller_->GetInterceptor(client_id); |
| 148 if (interceptor_) | |
| 149 interceptor_->AddThrottable(this); | |
| 150 | 144 |
| 151 if (interceptor_ && interceptor_->ShouldFail()) { | 145 if (interceptor_ && interceptor_->ShouldFail()) { |
| 152 failed_ = true; | 146 failed_ = true; |
| 153 network_transaction_->SetBeforeNetworkStartCallback( | 147 network_transaction_->SetBeforeNetworkStartCallback( |
| 154 BeforeNetworkStartCallback()); | 148 BeforeNetworkStartCallback()); |
| 149 interceptor_.reset(); |
| 155 return net::ERR_INTERNET_DISCONNECTED; | 150 return net::ERR_INTERNET_DISCONNECTED; |
| 156 } | 151 } |
| 152 |
| 153 if (interceptor_) |
| 154 interceptor_->AddThrottable(this); |
| 157 int rv = network_transaction_->Start(request_, proxy_callback_, net_log); | 155 int rv = network_transaction_->Start(request_, proxy_callback_, net_log); |
| 158 return SetupCallback(callback, rv, START); | 156 return SetupCallback(callback, rv, START); |
| 159 } | 157 } |
| 160 | 158 |
| 161 void DevToolsNetworkTransaction::ProcessRequest(std::string* client_id) { | 159 void DevToolsNetworkTransaction::ProcessRequest(std::string* client_id) { |
| 162 DCHECK(request_); | 160 DCHECK(request_); |
| 163 bool has_devtools_client_id = request_->extra_headers.HasHeader( | 161 bool has_devtools_client_id = request_->extra_headers.HasHeader( |
| 164 kDevToolsEmulateNetworkConditionsClientId); | 162 kDevToolsEmulateNetworkConditionsClientId); |
| 165 if (!has_devtools_client_id) | 163 if (!has_devtools_client_id) |
| 166 return; | 164 return; |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 } | 293 } |
| 296 | 294 |
| 297 void DevToolsNetworkTransaction::ThrottleFinished() { | 295 void DevToolsNetworkTransaction::ThrottleFinished() { |
| 298 DCHECK(!callback_.is_null()); | 296 DCHECK(!callback_.is_null()); |
| 299 DCHECK(callback_type_ == READ || callback_type_ == START); | 297 DCHECK(callback_type_ == READ || callback_type_ == START); |
| 300 net::CompletionCallback callback = callback_; | 298 net::CompletionCallback callback = callback_; |
| 301 callback_.Reset(); | 299 callback_.Reset(); |
| 302 callback_type_ = NONE; | 300 callback_type_ = NONE; |
| 303 callback.Run(throttled_result_); | 301 callback.Run(throttled_result_); |
| 304 } | 302 } |
| OLD | NEW |