Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2969)

Unified Diff: chrome/browser/devtools/devtools_network_transaction.cc

Issue 342473004: DevTools: make network conditions emulation scoped (browser) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed nits Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/devtools/devtools_network_transaction.cc
diff --git a/chrome/browser/devtools/devtools_network_transaction.cc b/chrome/browser/devtools/devtools_network_transaction.cc
index 8a72e01d15db5caeedeebb1a8dcfd86ff06455b5..198e29d32c197ec1023f55d4f7abcc88ddbd9edb 100644
--- a/chrome/browser/devtools/devtools_network_transaction.cc
+++ b/chrome/browser/devtools/devtools_network_transaction.cc
@@ -10,6 +10,14 @@
#include "net/http/http_network_transaction.h"
#include "net/http/http_request_info.h"
+namespace {
+
+const char kDevToolsRequestInitiator[] = "X-DevTools-Request-Initiator";
+const char kDevToolsEmulateNetworkConditionsClientId[] =
+ "X-DevTools-Emulate-Network-Conditions-Client-Id";
+
+} // namespace
+
DevToolsNetworkTransaction::DevToolsNetworkTransaction(
DevToolsNetworkController* controller,
scoped_ptr<net::HttpTransaction> network_transaction)
@@ -45,7 +53,7 @@ void DevToolsNetworkTransaction::OnCallback(int rv) {
return;
DCHECK(!callback_.is_null());
if (callback_type_ == START || callback_type_ == READ) {
- if (controller_->ShouldThrottle(request_)) {
+ if (controller_->ShouldThrottle(this)) {
Throttle(rv);
return;
}
@@ -68,7 +76,7 @@ int DevToolsNetworkTransaction::SetupCallback(
return result;
}
- if (!controller_->ShouldThrottle(request_))
+ if (!controller_->ShouldThrottle(this))
return result;
// Only START and READ operation throttling is supported.
@@ -109,17 +117,45 @@ int DevToolsNetworkTransaction::Start(
const net::BoundNetLog& net_log) {
DCHECK(request);
request_ = request;
+ ProcessRequest();
- if (controller_->ShouldFail(request_)) {
+ if (controller_->ShouldFail(this)) {
failed_ = true;
network_transaction_->SetBeforeNetworkStartCallback(
BeforeNetworkStartCallback());
return net::ERR_INTERNET_DISCONNECTED;
}
- int rv = network_transaction_->Start(request, proxy_callback_, net_log);
+ int rv = network_transaction_->Start(request_, proxy_callback_, net_log);
return SetupCallback(callback, rv, START);
}
+void DevToolsNetworkTransaction::ProcessRequest() {
+ DCHECK(request_);
+ bool hasDevToolsClientId = request_->extra_headers.HasHeader(
+ kDevToolsEmulateNetworkConditionsClientId);
+ bool hasDevToolsRequestInitiator = request_->extra_headers.HasHeader(
+ kDevToolsRequestInitiator);
+ if (!hasDevToolsClientId && !hasDevToolsRequestInitiator)
+ return;
+
+ custom_request_.reset(new net::HttpRequestInfo(*request_));
+
+ if (hasDevToolsClientId) {
+ custom_request_->extra_headers.GetHeader(
+ kDevToolsEmulateNetworkConditionsClientId, &client_id_);
+ custom_request_->extra_headers.RemoveHeader(
+ kDevToolsEmulateNetworkConditionsClientId);
+ }
+
+ if (hasDevToolsRequestInitiator) {
+ custom_request_->extra_headers.GetHeader(
+ kDevToolsRequestInitiator, &request_initiator_);
+ custom_request_->extra_headers.RemoveHeader(kDevToolsRequestInitiator);
+ }
+
+ request_ = custom_request_.get();
+}
+
int DevToolsNetworkTransaction::RestartIgnoringLastError(
const net::CompletionCallback& callback) {
if (failed_)

Powered by Google App Engine
This is Rietveld 408576698