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

Unified Diff: content/browser/devtools/devtools_browser_target.cc

Issue 12218134: Introduce intercepting and handling devtools messages in the renderer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 10 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: content/browser/devtools/devtools_browser_target.cc
diff --git a/content/browser/devtools/devtools_browser_target.cc b/content/browser/devtools/devtools_browser_target.cc
index ee108612b72ab52563f7c25f354509bd562f3d94..afad06f58d8e15af316a4504572a0c3791366fb4 100644
--- a/content/browser/devtools/devtools_browser_target.cc
+++ b/content/browser/devtools/devtools_browser_target.cc
@@ -10,7 +10,6 @@
#include "base/memory/scoped_ptr.h"
#include "base/message_loop_proxy.h"
#include "base/values.h"
-#include "content/browser/devtools/devtools_protocol.h"
#include "net/server/http_server.h"
namespace content {
@@ -18,30 +17,21 @@ namespace content {
DevToolsBrowserTarget::DomainHandler::~DomainHandler() {
}
-void DevToolsBrowserTarget::DomainHandler::RegisterCommandHandler(
- const std::string& command,
- CommandHandler handler) {
- command_handlers_[command] = handler;
-}
-
-DevToolsBrowserTarget::DomainHandler::DomainHandler(const std::string& domain)
- : domain_(domain) {
+DevToolsBrowserTarget::DomainHandler::DomainHandler(
+ const DevToolsProtocol::Notifier& notifier,
+ const std::string& domain)
+ : DevToolsProtocol::Handler(notifier),
+ domain_(domain) {
}
scoped_ptr<DevToolsProtocol::Response>
DevToolsBrowserTarget::DomainHandler::HandleCommand(
DevToolsProtocol::Command* command) {
- CommandHandlers::iterator it = command_handlers_.find(command->method());
- if (it == command_handlers_.end()) {
+ scoped_ptr<DevToolsProtocol::Response> response(
+ Handler::HandleCommand(command));
+ if (!response)
return command->NoSuchMethodErrorResponse();
pfeldman 2013/02/13 17:38:24 What if you put this logic into DevToolsBrowserTa
kkania 2013/02/13 19:17:19 Whoops, good idea.
- }
- return (it->second).Run(command);
-}
-
-void DevToolsBrowserTarget::DomainHandler::SendNotification(
- const std::string& method,
- base::DictionaryValue* params) {
- notifier_.Run(method, params);
+ return response.Pass();
}
DevToolsBrowserTarget::DevToolsBrowserTarget(
@@ -51,21 +41,17 @@ DevToolsBrowserTarget::DevToolsBrowserTarget(
: message_loop_proxy_(message_loop_proxy),
http_server_(http_server),
connection_id_(connection_id),
+ handlers_deleter_(&handlers_),
pfeldman 2013/02/13 17:38:24 Thanks!
kkania 2013/02/13 19:17:19 Done.
ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
}
DevToolsBrowserTarget::~DevToolsBrowserTarget() {
- for (DomainHandlerMap::iterator i = handlers_.begin(); i != handlers_.end();
- ++i)
- delete i->second;
}
void DevToolsBrowserTarget::RegisterDomainHandler(DomainHandler* handler) {
std::string domain = handler->domain();
DCHECK(handlers_.find(domain) == handlers_.end());
handlers_[domain] = handler;
- handler->set_notifier(Bind(&DevToolsBrowserTarget::SendNotification,
- weak_factory_.GetWeakPtr()));
}
std::string DevToolsBrowserTarget::HandleMessage(const std::string& data) {
@@ -87,15 +73,18 @@ std::string DevToolsBrowserTarget::HandleMessage(const std::string& data) {
return response->Serialize();
}
-void DevToolsBrowserTarget::SendNotification(const std::string& method,
- DictionaryValue* params) {
- DevToolsProtocol::Notification notification(method, params);
+DevToolsProtocol::Notifier DevToolsBrowserTarget::GetNotifier() {
+ return base::Bind(&DevToolsBrowserTarget::OnNotification,
+ weak_factory_.GetWeakPtr());
+}
+
+void DevToolsBrowserTarget::OnNotification(const std::string& message) {
message_loop_proxy_->PostTask(
FROM_HERE,
base::Bind(&net::HttpServer::SendOverWebSocket,
http_server_,
connection_id_,
- notification.Serialize()));
+ message));
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698