summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authordgozman <dgozman@chromium.org>2014-09-15 03:29:26 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-15 10:30:41 +0000
commit0bd04aebcbb49766fd04dc393f4c86747de754a8 (patch)
tree99c5c263a75db871e8d455d34b7a363fbc40a574 /chrome
parente7202dac6b1fac6a3e980f2dee73a0f42d4d12ab (diff)
downloadchromium_src-0bd04aebcbb49766fd04dc393f4c86747de754a8.zip
chromium_src-0bd04aebcbb49766fd04dc393f4c86747de754a8.tar.gz
chromium_src-0bd04aebcbb49766fd04dc393f4c86747de754a8.tar.bz2
[DevTools] Split network handling off ChromeDevToolsManagerDelegate to be reused on Android.
BUG=none Review URL: https://codereview.chromium.org/563923006 Cr-Commit-Position: refs/heads/master@{#294798}
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/devtools/BUILD.gn2
-rw-r--r--chrome/browser/devtools/chrome_devtools_manager_delegate.cc100
-rw-r--r--chrome/browser/devtools/chrome_devtools_manager_delegate.h15
-rw-r--r--chrome/browser/devtools/devtools_network_protocol_handler.cc115
-rw-r--r--chrome/browser/devtools/devtools_network_protocol_handler.h49
-rw-r--r--chrome/chrome_debugger.gypi2
6 files changed, 174 insertions, 109 deletions
diff --git a/chrome/browser/devtools/BUILD.gn b/chrome/browser/devtools/BUILD.gn
index dce1eaa..d1def53 100644
--- a/chrome/browser/devtools/BUILD.gn
+++ b/chrome/browser/devtools/BUILD.gn
@@ -31,6 +31,8 @@ static_library("devtools") {
"devtools_network_controller.h",
"devtools_network_interceptor.cc",
"devtools_network_interceptor.h",
+ "devtools_network_protocol_handler.cc",
+ "devtools_network_protocol_handler.h",
"devtools_network_transaction.cc",
"devtools_network_transaction.h",
"devtools_network_transaction_factory.cc",
diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
index a7cd2f6..fd9cfed 100644
--- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
+++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc
@@ -5,20 +5,12 @@
#include "chrome/browser/devtools/chrome_devtools_manager_delegate.h"
#include "base/values.h"
-#include "chrome/browser/devtools/devtools_network_conditions.h"
-#include "chrome/browser/devtools/devtools_network_controller.h"
-#include "chrome/browser/devtools/devtools_protocol.h"
-#include "chrome/browser/devtools/devtools_protocol_constants.h"
#include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/profiles/profile.h"
-#include "content/public/browser/browser_thread.h"
#include "content/public/browser/devtools_agent_host.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/site_instance.h"
-#include "content/public/browser/web_contents.h"
-ChromeDevToolsManagerDelegate::ChromeDevToolsManagerDelegate() {
+ChromeDevToolsManagerDelegate::ChromeDevToolsManagerDelegate()
+ : network_protocol_handler_(new DevToolsNetworkProtocolHandler()) {
}
ChromeDevToolsManagerDelegate::~ChromeDevToolsManagerDelegate() {
@@ -40,95 +32,11 @@ void ChromeDevToolsManagerDelegate::Inspect(
base::DictionaryValue* ChromeDevToolsManagerDelegate::HandleCommand(
content::DevToolsAgentHost* agent_host,
base::DictionaryValue* command_dict) {
- scoped_ptr<DevToolsProtocol::Command> command(
- DevToolsProtocol::ParseCommand(command_dict));
- if (!command)
- return NULL;
-
- namespace network = ::chrome::devtools::Network;
- const std::string method = command->method();
- scoped_ptr<DevToolsProtocol::Response> response;
-
- if (method == network::emulateNetworkConditions::kName) {
- response = EmulateNetworkConditions(agent_host, command.get());
- } else if (method == network::canEmulateNetworkConditions::kName) {
- response = CanEmulateNetworkConditions(agent_host, command.get());
- }
-
- if (response)
- return response->Serialize();
- return NULL;
-}
-
-Profile* ChromeDevToolsManagerDelegate::GetProfile(
- content::DevToolsAgentHost* agent_host) {
- content::WebContents* web_contents = agent_host->GetWebContents();
- if (!web_contents)
- return NULL;
- return Profile::FromBrowserContext(web_contents->GetBrowserContext());
-}
-
-scoped_ptr<DevToolsProtocol::Response>
-ChromeDevToolsManagerDelegate::CanEmulateNetworkConditions(
- content::DevToolsAgentHost* agent_host,
- DevToolsProtocol::Command* command) {
- base::DictionaryValue* result = new base::DictionaryValue();
- result->SetBoolean(chrome::devtools::kResult, true);
- return command->SuccessResponse(result);
-}
-
-scoped_ptr<DevToolsProtocol::Response>
-ChromeDevToolsManagerDelegate::EmulateNetworkConditions(
- content::DevToolsAgentHost* agent_host,
- DevToolsProtocol::Command* command) {
- base::DictionaryValue* params = command->params();
- namespace names = ::chrome::devtools::Network::emulateNetworkConditions;
-
- bool offline = false;
- if (!params || !params->GetBoolean(names::kParamOffline, &offline))
- return command->InvalidParamResponse(names::kParamOffline);
-
- double latency = 0.0;
- if (!params->GetDouble(names::kParamLatency, &latency))
- return command->InvalidParamResponse(names::kParamLatency);
- if (latency < 0.0)
- latency = 0.0;
-
- double download_throughput = 0.0;
- if (!params->GetDouble(names::kParamDownloadThroughput, &download_throughput))
- return command->InvalidParamResponse(names::kParamDownloadThroughput);
- if (download_throughput < 0.0)
- download_throughput = 0.0;
-
- double upload_throughput = 0.0;
- if (!params->GetDouble(names::kParamUploadThroughput, &upload_throughput))
- return command->InvalidParamResponse(names::kParamUploadThroughput);
- if (upload_throughput < 0.0)
- upload_throughput = 0.0;
-
- scoped_ptr<DevToolsNetworkConditions> conditions(
- new DevToolsNetworkConditions(
- offline, latency, download_throughput, upload_throughput));
-
- UpdateNetworkState(agent_host, conditions.Pass());
- return command->SuccessResponse(NULL);
-}
-
-void ChromeDevToolsManagerDelegate::UpdateNetworkState(
- content::DevToolsAgentHost* agent_host,
- scoped_ptr<DevToolsNetworkConditions> conditions) {
- Profile* profile = GetProfile(agent_host);
- if (!profile)
- return;
- profile->GetDevToolsNetworkController()->SetNetworkState(
- agent_host->GetId(), conditions.Pass());
+ return network_protocol_handler_->HandleCommand(agent_host, command_dict);
}
void ChromeDevToolsManagerDelegate::DevToolsAgentStateChanged(
content::DevToolsAgentHost* agent_host,
bool attached) {
- scoped_ptr<DevToolsNetworkConditions> conditions;
- if (attached)
- conditions.reset(new DevToolsNetworkConditions());
- UpdateNetworkState(agent_host, conditions.Pass());
+ network_protocol_handler_->DevToolsAgentStateChanged(agent_host, attached);
}
diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.h b/chrome/browser/devtools/chrome_devtools_manager_delegate.h
index 98d4649..3885e48 100644
--- a/chrome/browser/devtools/chrome_devtools_manager_delegate.h
+++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.h
@@ -8,6 +8,7 @@
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/devtools/devtools_network_protocol_handler.h"
#include "chrome/browser/devtools/devtools_protocol.h"
#include "content/public/browser/devtools_manager_delegate.h"
@@ -29,19 +30,7 @@ class ChromeDevToolsManagerDelegate : public content::DevToolsManagerDelegate {
base::DictionaryValue* command_dict) OVERRIDE;
private:
- Profile* GetProfile(content::DevToolsAgentHost* agent_host);
-
- scoped_ptr<DevToolsProtocol::Response> CanEmulateNetworkConditions(
- content::DevToolsAgentHost* agent_host,
- DevToolsProtocol::Command* command);
-
- scoped_ptr<DevToolsProtocol::Response> EmulateNetworkConditions(
- content::DevToolsAgentHost* agent_host,
- DevToolsProtocol::Command* command);
-
- void UpdateNetworkState(
- content::DevToolsAgentHost* agent_host,
- scoped_ptr<DevToolsNetworkConditions> conditions);
+ scoped_ptr<DevToolsNetworkProtocolHandler> network_protocol_handler_;
DISALLOW_COPY_AND_ASSIGN(ChromeDevToolsManagerDelegate);
};
diff --git a/chrome/browser/devtools/devtools_network_protocol_handler.cc b/chrome/browser/devtools/devtools_network_protocol_handler.cc
new file mode 100644
index 0000000..d1151d2
--- /dev/null
+++ b/chrome/browser/devtools/devtools_network_protocol_handler.cc
@@ -0,0 +1,115 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/devtools/devtools_network_protocol_handler.h"
+
+#include "base/values.h"
+#include "chrome/browser/devtools/devtools_network_conditions.h"
+#include "chrome/browser/devtools/devtools_network_controller.h"
+#include "chrome/browser/devtools/devtools_protocol_constants.h"
+#include "chrome/browser/profiles/profile.h"
+#include "content/public/browser/devtools_agent_host.h"
+#include "content/public/browser/web_contents.h"
+
+DevToolsNetworkProtocolHandler::DevToolsNetworkProtocolHandler() {
+}
+
+DevToolsNetworkProtocolHandler::~DevToolsNetworkProtocolHandler() {
+}
+
+base::DictionaryValue* DevToolsNetworkProtocolHandler::HandleCommand(
+ content::DevToolsAgentHost* agent_host,
+ base::DictionaryValue* command_dict) {
+ scoped_ptr<DevToolsProtocol::Command> command(
+ DevToolsProtocol::ParseCommand(command_dict));
+ if (!command)
+ return NULL;
+
+ namespace network = ::chrome::devtools::Network;
+ const std::string method = command->method();
+ scoped_ptr<DevToolsProtocol::Response> response;
+
+ if (method == network::emulateNetworkConditions::kName) {
+ response = EmulateNetworkConditions(agent_host, command.get());
+ } else if (method == network::canEmulateNetworkConditions::kName) {
+ response = CanEmulateNetworkConditions(agent_host, command.get());
+ }
+
+ if (response)
+ return response->Serialize();
+ return NULL;
+}
+
+Profile* DevToolsNetworkProtocolHandler::GetProfile(
+ content::DevToolsAgentHost* agent_host) {
+ content::WebContents* web_contents = agent_host->GetWebContents();
+ if (!web_contents)
+ return NULL;
+ return Profile::FromBrowserContext(web_contents->GetBrowserContext());
+}
+
+scoped_ptr<DevToolsProtocol::Response>
+DevToolsNetworkProtocolHandler::CanEmulateNetworkConditions(
+ content::DevToolsAgentHost* agent_host,
+ DevToolsProtocol::Command* command) {
+ base::DictionaryValue* result = new base::DictionaryValue();
+ result->SetBoolean(chrome::devtools::kResult, true);
+ return command->SuccessResponse(result);
+}
+
+scoped_ptr<DevToolsProtocol::Response>
+DevToolsNetworkProtocolHandler::EmulateNetworkConditions(
+ content::DevToolsAgentHost* agent_host,
+ DevToolsProtocol::Command* command) {
+ base::DictionaryValue* params = command->params();
+ namespace names = ::chrome::devtools::Network::emulateNetworkConditions;
+
+ bool offline = false;
+ if (!params || !params->GetBoolean(names::kParamOffline, &offline))
+ return command->InvalidParamResponse(names::kParamOffline);
+
+ double latency = 0.0;
+ if (!params->GetDouble(names::kParamLatency, &latency))
+ return command->InvalidParamResponse(names::kParamLatency);
+ if (latency < 0.0)
+ latency = 0.0;
+
+ double download_throughput = 0.0;
+ if (!params->GetDouble(names::kParamDownloadThroughput, &download_throughput))
+ return command->InvalidParamResponse(names::kParamDownloadThroughput);
+ if (download_throughput < 0.0)
+ download_throughput = 0.0;
+
+ double upload_throughput = 0.0;
+ if (!params->GetDouble(names::kParamUploadThroughput, &upload_throughput))
+ return command->InvalidParamResponse(names::kParamUploadThroughput);
+ if (upload_throughput < 0.0)
+ upload_throughput = 0.0;
+
+ scoped_ptr<DevToolsNetworkConditions> conditions(
+ new DevToolsNetworkConditions(
+ offline, latency, download_throughput, upload_throughput));
+
+ UpdateNetworkState(agent_host, conditions.Pass());
+ return command->SuccessResponse(NULL);
+}
+
+void DevToolsNetworkProtocolHandler::UpdateNetworkState(
+ content::DevToolsAgentHost* agent_host,
+ scoped_ptr<DevToolsNetworkConditions> conditions) {
+ Profile* profile = GetProfile(agent_host);
+ if (!profile)
+ return;
+ profile->GetDevToolsNetworkController()->SetNetworkState(
+ agent_host->GetId(), conditions.Pass());
+}
+
+void DevToolsNetworkProtocolHandler::DevToolsAgentStateChanged(
+ content::DevToolsAgentHost* agent_host,
+ bool attached) {
+ scoped_ptr<DevToolsNetworkConditions> conditions;
+ if (attached)
+ conditions.reset(new DevToolsNetworkConditions());
+ UpdateNetworkState(agent_host, conditions.Pass());
+}
diff --git a/chrome/browser/devtools/devtools_network_protocol_handler.h b/chrome/browser/devtools/devtools_network_protocol_handler.h
new file mode 100644
index 0000000..7dae622
--- /dev/null
+++ b/chrome/browser/devtools/devtools_network_protocol_handler.h
@@ -0,0 +1,49 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_PROTOCOL_HANDLER_H_
+#define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_PROTOCOL_HANDLER_H_
+
+#include "base/compiler_specific.h"
+#include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/devtools/devtools_protocol.h"
+
+namespace content {
+class DevToolsAgentHost;
+}
+
+class DevToolsNetworkConditions;
+class Profile;
+
+class DevToolsNetworkProtocolHandler {
+ public:
+ DevToolsNetworkProtocolHandler();
+ ~DevToolsNetworkProtocolHandler();
+
+ void DevToolsAgentStateChanged(content::DevToolsAgentHost* agent_host,
+ bool attached);
+ base::DictionaryValue* HandleCommand(
+ content::DevToolsAgentHost* agent_host,
+ base::DictionaryValue* command_dict);
+
+ private:
+ Profile* GetProfile(content::DevToolsAgentHost* agent_host);
+
+ scoped_ptr<DevToolsProtocol::Response> CanEmulateNetworkConditions(
+ content::DevToolsAgentHost* agent_host,
+ DevToolsProtocol::Command* command);
+
+ scoped_ptr<DevToolsProtocol::Response> EmulateNetworkConditions(
+ content::DevToolsAgentHost* agent_host,
+ DevToolsProtocol::Command* command);
+
+ void UpdateNetworkState(
+ content::DevToolsAgentHost* agent_host,
+ scoped_ptr<DevToolsNetworkConditions> conditions);
+
+ DISALLOW_COPY_AND_ASSIGN(DevToolsNetworkProtocolHandler);
+};
+
+#endif // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_PROTOCOL_HANDLER_H_
diff --git a/chrome/chrome_debugger.gypi b/chrome/chrome_debugger.gypi
index 4c6a56f..817496f 100644
--- a/chrome/chrome_debugger.gypi
+++ b/chrome/chrome_debugger.gypi
@@ -27,6 +27,8 @@
'browser/devtools/devtools_network_controller.h',
'browser/devtools/devtools_network_interceptor.cc',
'browser/devtools/devtools_network_interceptor.h',
+ 'browser/devtools/devtools_network_protocol_handler.cc',
+ 'browser/devtools/devtools_network_protocol_handler.h',
'browser/devtools/devtools_network_transaction.cc',
'browser/devtools/devtools_network_transaction.h',
'browser/devtools/devtools_network_transaction_factory.cc',