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

Unified Diff: sky/services/inspector/inspector_frontend_impl.cc

Issue 710043004: Make it possible to have multiple InspectorBackends (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Actually works Created 6 years, 1 month 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: sky/services/inspector/inspector_frontend_impl.cc
diff --git a/sky/services/inspector/inspector_frontend_impl.cc b/sky/services/inspector/inspector_frontend_impl.cc
index d88abd12dfab449a0f0a4e7b593c7ca8f9ebd115..3eeb653c5a5ad16bf05e9a1fd708cef8fa5c58da 100644
--- a/sky/services/inspector/inspector_frontend_impl.cc
+++ b/sky/services/inspector/inspector_frontend_impl.cc
@@ -4,93 +4,24 @@
#include "sky/services/inspector/inspector_frontend_impl.h"
-#include "base/lazy_instance.h"
-#include "net/server/http_server.h"
-#include "net/socket/tcp_server_socket.h"
-
namespace sky {
namespace inspector {
-namespace {
-const int kNotConnected = -1;
-static base::LazyInstance<std::map<int, InspectorFrontendImpl*>> g_servers =
- LAZY_INSTANCE_INITIALIZER;
-}
-InspectorFrontendImpl::InspectorFrontendImpl()
- : connection_id_(kNotConnected) {
+InspectorFrontendImpl::InspectorFrontendImpl(Delegate* delegate)
+ : delegate_(delegate) {
+ delegate_->Register(this);
}
InspectorFrontendImpl::~InspectorFrontendImpl() {
- StopListening();
-}
-
-void InspectorFrontendImpl::OnConnect(int connection_id) {
-}
-
-void InspectorFrontendImpl::OnHttpRequest(
- int connection_id, const net::HttpServerRequestInfo& info) {
- web_server_->Send500(connection_id, "websockets protocol only");
-}
-
-void InspectorFrontendImpl::OnWebSocketRequest(
- int connection_id, const net::HttpServerRequestInfo& info) {
- if (connection_id_ != kNotConnected) {
- web_server_->Close(connection_id);
- return;
- }
- web_server_->AcceptWebSocket(connection_id, info);
- connection_id_ = connection_id;
- client()->OnConnect();
-}
-
-void InspectorFrontendImpl::OnWebSocketMessage(
- int connection_id, const std::string& data) {
- DCHECK_EQ(connection_id, connection_id_);
- client()->OnMessage(data);
-}
-
-void InspectorFrontendImpl::OnClose(int connection_id) {
- if (connection_id != connection_id_)
- return;
- connection_id_ = kNotConnected;
- client()->OnDisconnect();
+ delegate_->Unregister(this);
}
void InspectorFrontendImpl::Listen(int32_t port) {
- Register(port);
- scoped_ptr<net::ServerSocket> server_socket(
- new net::TCPServerSocket(NULL, net::NetLog::Source()));
- server_socket->ListenWithAddressAndPort("0.0.0.0", port, 1);
- web_server_.reset(new net::HttpServer(server_socket.Pass(), this));
-}
-
-void InspectorFrontendImpl::StopListening() {
- if (!web_server_)
- return;
- web_server_.reset();
- Unregister();
-}
-
-void InspectorFrontendImpl::Register(int port) {
- auto& servers = g_servers.Get();
- auto iter = servers.find(port);
- if (iter != servers.end())
- iter->second->StopListening();
- DCHECK(servers.find(port) == servers.end());
- servers[port] = this;
- port_ = port;
-}
-
-void InspectorFrontendImpl::Unregister() {
- DCHECK(g_servers.Get().find(port_)->second == this);
- g_servers.Get().erase(port_);
- port_ = kNotConnected;
+ delegate_->Listen(port);
}
void InspectorFrontendImpl::SendMessage(const mojo::String& message) {
- if (connection_id_ == kNotConnected)
- return;
- web_server_->SendOverWebSocket(connection_id_, message);
+ delegate_->SendMessage(message);
}
} // namespace inspector

Powered by Google App Engine
This is Rietveld 408576698