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

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

Issue 296053012: Replace StreamListenSocket with StreamSocket in HttpServer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use base::StringPiece in some places not to copy data. Created 6 years, 7 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_http_handler_impl.cc
diff --git a/content/browser/devtools/devtools_http_handler_impl.cc b/content/browser/devtools/devtools_http_handler_impl.cc
index 8678848564d2be587c1467ce22bd21e4201c2a0f..b7686c49490d0ea2bb1fcbccc6bd931e44c7e149 100644
--- a/content/browser/devtools/devtools_http_handler_impl.cc
+++ b/content/browser/devtools/devtools_http_handler_impl.cc
@@ -39,6 +39,7 @@
#include "net/base/ip_endpoint.h"
#include "net/server/http_server_request_info.h"
#include "net/server/http_server_response_info.h"
+#include "net/socket/server_socket.h"
#if defined(OS_ANDROID)
#include "base/android/build_info.h"
@@ -63,12 +64,15 @@ const char kTargetFaviconUrlField[] = "faviconUrl";
const char kTargetWebSocketDebuggerUrlField[] = "webSocketDebuggerUrl";
const char kTargetDevtoolsFrontendUrlField[] = "devtoolsFrontendUrl";
+// Maximum write buffer size of devtools websocket.
+const int32 kSendBufferSizeForDevToolsWebSocket = 100 * 1024 * 1024; // 100Mb
+
// An internal implementation of DevToolsClientHost that delegates
// messages sent for DevToolsClient to a DebuggerShell instance.
class DevToolsClientHostImpl : public DevToolsClientHost {
public:
DevToolsClientHostImpl(base::MessageLoop* message_loop,
- net::HttpServer* server,
+ base::WeakPtr<net::HttpServer> server,
int connection_id)
: message_loop_(message_loop),
server_(server),
@@ -117,7 +121,7 @@ class DevToolsClientHostImpl : public DevToolsClientHost {
private:
base::MessageLoop* message_loop_;
- net::HttpServer* server_;
+ base::WeakPtr<net::HttpServer> server_;
int connection_id_;
bool is_closed_;
std::string detach_reason_;
@@ -147,11 +151,11 @@ int DevToolsHttpHandler::GetFrontendResourceId(const std::string& name) {
// static
DevToolsHttpHandler* DevToolsHttpHandler::Start(
- const net::StreamListenSocketFactory* socket_factory,
+ scoped_ptr<net::ServerSocketFactory> server_socket_factory,
const std::string& frontend_url,
DevToolsHttpHandlerDelegate* delegate) {
DevToolsHttpHandlerImpl* http_handler =
- new DevToolsHttpHandlerImpl(socket_factory,
+ new DevToolsHttpHandlerImpl(server_socket_factory.Pass(),
frontend_url,
delegate);
http_handler->Start();
@@ -324,7 +328,8 @@ void DevToolsHttpHandlerImpl::OnWebSocketRequest(
server_->Send500(connection_id, "Another client already attached");
return;
}
- browser_target_ = new DevToolsBrowserTarget(server_.get(), connection_id);
+ browser_target_ = new DevToolsBrowserTarget(server_->GetWeakPtr(),
+ connection_id);
browser_target_->RegisterDomainHandler(
devtools::Tracing::kName,
new DevToolsTracingHandler(DevToolsTracingHandler::Browser),
@@ -605,7 +610,7 @@ void DevToolsHttpHandlerImpl::OnWebSocketRequestUI(
}
DevToolsClientHostImpl* client_host = new DevToolsClientHostImpl(
- thread_->message_loop(), server_.get(), connection_id);
+ thread_->message_loop(), server_->GetWeakPtr(), connection_id);
connection_to_client_host_ui_[connection_id] = client_host;
DevToolsManager::GetInstance()->
@@ -639,11 +644,11 @@ void DevToolsHttpHandlerImpl::OnCloseUI(int connection_id) {
}
DevToolsHttpHandlerImpl::DevToolsHttpHandlerImpl(
- const net::StreamListenSocketFactory* socket_factory,
+ scoped_ptr<net::ServerSocketFactory> server_socket_factory,
const std::string& frontend_url,
DevToolsHttpHandlerDelegate* delegate)
: frontend_url_(frontend_url),
- socket_factory_(socket_factory),
+ server_socket_factory_(server_socket_factory.Pass()),
delegate_(delegate) {
if (frontend_url_.empty())
frontend_url_ = "/devtools/devtools.html";
@@ -654,12 +659,13 @@ DevToolsHttpHandlerImpl::DevToolsHttpHandlerImpl(
// Runs on the handler thread
void DevToolsHttpHandlerImpl::Init() {
- server_ = new net::HttpServer(*socket_factory_.get(), this);
+ server_.reset(new net::HttpServer(server_socket_factory_->CreateAndListen(),
+ this));
}
// Runs on the handler thread
void DevToolsHttpHandlerImpl::Teardown() {
- server_ = NULL;
+ server_.reset(NULL);
}
// Runs on FILE thread to make sure that it is serialized against
@@ -698,7 +704,7 @@ void DevToolsHttpHandlerImpl::SendJson(int connection_id,
thread_->message_loop()->PostTask(
FROM_HERE,
base::Bind(&net::HttpServer::SendResponse,
- server_.get(),
+ server_->GetWeakPtr(),
connection_id,
response));
}
@@ -711,7 +717,7 @@ void DevToolsHttpHandlerImpl::Send200(int connection_id,
thread_->message_loop()->PostTask(
FROM_HERE,
base::Bind(&net::HttpServer::Send200,
- server_.get(),
+ server_->GetWeakPtr(),
connection_id,
data,
mime_type));
@@ -722,7 +728,9 @@ void DevToolsHttpHandlerImpl::Send404(int connection_id) {
return;
thread_->message_loop()->PostTask(
FROM_HERE,
- base::Bind(&net::HttpServer::Send404, server_.get(), connection_id));
+ base::Bind(&net::HttpServer::Send404,
+ server_->GetWeakPtr(),
+ connection_id));
}
void DevToolsHttpHandlerImpl::Send500(int connection_id,
@@ -731,7 +739,9 @@ void DevToolsHttpHandlerImpl::Send500(int connection_id,
return;
thread_->message_loop()->PostTask(
FROM_HERE,
- base::Bind(&net::HttpServer::Send500, server_.get(), connection_id,
+ base::Bind(&net::HttpServer::Send500,
+ server_->GetWeakPtr(),
+ connection_id,
message));
}
@@ -742,8 +752,16 @@ void DevToolsHttpHandlerImpl::AcceptWebSocket(
return;
thread_->message_loop()->PostTask(
FROM_HERE,
- base::Bind(&net::HttpServer::AcceptWebSocket, server_.get(),
- connection_id, request));
+ base::Bind(&net::HttpServer::SetSendBufferSize,
+ server_->GetWeakPtr(),
+ connection_id,
+ kSendBufferSizeForDevToolsWebSocket));
+ thread_->message_loop()->PostTask(
+ FROM_HERE,
+ base::Bind(&net::HttpServer::AcceptWebSocket,
+ server_->GetWeakPtr(),
+ connection_id,
+ request));
}
base::DictionaryValue* DevToolsHttpHandlerImpl::SerializeTarget(

Powered by Google App Engine
This is Rietveld 408576698