From fcf04377d7e69877db4f6fca3d2e7b35e4241074 Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Thu, 14 Apr 2016 08:27:27 +0530 Subject: [PATCH] set network emulation client id in request headers --- atom/browser/api/atom_api_session.cc | 10 ++++++++++ atom/browser/net/atom_network_delegate.cc | 8 ++++++++ atom/common/options_switches.cc | 4 ++++ atom/common/options_switches.h | 2 ++ 4 files changed, 24 insertions(+) diff --git a/atom/browser/api/atom_api_session.cc b/atom/browser/api/atom_api_session.cc index 2b352e52f7..c6ef661903 100644 --- a/atom/browser/api/atom_api_session.cc +++ b/atom/browser/api/atom_api_session.cc @@ -22,6 +22,8 @@ #include "atom/common/native_mate_converters/file_path_converter.h" #include "atom/common/native_mate_converters/net_converter.h" #include "atom/common/node_includes.h" +#include "atom/common/options_switches.h" +#include "base/command_line.h" #include "base/files/file_path.h" #include "base/guid.h" #include "base/prefs/pref_service.h" @@ -286,6 +288,12 @@ void ClearHostResolverCacheInIO( } } +void SetDevToolsNetworkEmulationClientId(const std::string& id) { + auto cmd_line = base::CommandLine::ForCurrentProcess(); + cmd_line->AppendSwitchASCII( + switches::kDevToolsEmulateNetworkConditionsClientId, id); +} + } // namespace Session::Session(AtomBrowserContext* browser_context) @@ -386,12 +394,14 @@ void Session::EnableNetworkEmulation(const mate::Dictionary& options) { browser_context_->network_controller_handle()->SetNetworkState( devtools_network_emulation_client_id_, std::move(conditions)); + SetDevToolsNetworkEmulationClientId(devtools_network_emulation_client_id_); } void Session::DisableNetworkEmulation() { scoped_ptr conditions; browser_context_->network_controller_handle()->SetNetworkState( devtools_network_emulation_client_id_, std::move(conditions)); + SetDevToolsNetworkEmulationClientId(std::string()); } void Session::SetCertVerifyProc(v8::Local val, diff --git a/atom/browser/net/atom_network_delegate.cc b/atom/browser/net/atom_network_delegate.cc index 86bfe12079..cb602c4b36 100644 --- a/atom/browser/net/atom_network_delegate.cc +++ b/atom/browser/net/atom_network_delegate.cc @@ -8,6 +8,8 @@ #include #include "atom/common/native_mate_converters/net_converter.h" +#include "atom/common/options_switches.h" +#include "base/command_line.h" #include "base/stl_util.h" #include "base/strings/string_util.h" #include "content/public/browser/browser_thread.h" @@ -241,6 +243,12 @@ int AtomNetworkDelegate::OnBeforeSendHeaders( net::URLRequest* request, const net::CompletionCallback& callback, net::HttpRequestHeaders* headers) { + auto cmd_line = base::CommandLine::ForCurrentProcess(); + auto client_id = cmd_line->GetSwitchValueASCII( + switches::kDevToolsEmulateNetworkConditionsClientId); + if (!client_id.empty()) + headers->SetHeader( + switches::kDevToolsEmulateNetworkConditionsClientId, client_id); if (!ContainsKey(response_listeners_, kOnBeforeSendHeaders)) return brightray::NetworkDelegate::OnBeforeSendHeaders( request, callback, headers); diff --git a/atom/common/options_switches.cc b/atom/common/options_switches.cc index ce28cc98fa..b4c5c4ef83 100644 --- a/atom/common/options_switches.cc +++ b/atom/common/options_switches.cc @@ -156,6 +156,10 @@ const char kWidevineCdmPath[] = "widevine-cdm-path"; // Widevine CDM version. const char kWidevineCdmVersion[] = "widevine-cdm-version"; +// Client id for devtools network emulation. +const char kDevToolsEmulateNetworkConditionsClientId[] = + "X-DevTools-Emulate-Network-Conditions-Client-Id"; + } // namespace switches } // namespace atom diff --git a/atom/common/options_switches.h b/atom/common/options_switches.h index 52d64c00d5..e05be3b435 100644 --- a/atom/common/options_switches.h +++ b/atom/common/options_switches.h @@ -87,6 +87,8 @@ extern const char kOpenerID[]; extern const char kWidevineCdmPath[]; extern const char kWidevineCdmVersion[]; +extern const char kDevToolsEmulateNetworkConditionsClientId[]; + } // namespace switches } // namespace atom