summaryrefslogtreecommitdiffstats
path: root/content/browser/devtools/devtools_http_handler_impl.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-22 22:00:20 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-22 22:01:45 +0000
commit0b2f33f4a88efbd203b0623324ad4114e3bb9d23 (patch)
tree351b90382f82c9b895edfa4b9fc03724a1b9c0c5 /content/browser/devtools/devtools_http_handler_impl.cc
parent5bd4f0cd8fed1b3d15aba82e85ae5b57cda390c0 (diff)
downloadchromium_src-0b2f33f4a88efbd203b0623324ad4114e3bb9d23.zip
chromium_src-0b2f33f4a88efbd203b0623324ad4114e3bb9d23.tar.gz
chromium_src-0b2f33f4a88efbd203b0623324ad4114e3bb9d23.tar.bz2
Revert of Replace StreamListenSocket with StreamSocket in HttpServer. (patchset #29 of https://codereview.chromium.org/296053012/)
Reason for revert: looks like it caused net_unittests failures: http://build.chromium.org/p/chromium.win/builders/Vista%20Tests%20(2)/builds/44610/steps/net_unittests/logs/MultipleRequestsOnSameConnection Original issue's description: > Replace StreamListenSocket with StreamSocket in HttpServer. > > 1) HttpServer gets ServerSocket instead of StreamListenSocket. > 2) HttpConnection is just a container for socket, websocket, and pending read/write buffers. > 3) HttpServer handles data buffering and asynchronous read/write. > 4) HttpConnection has limit in data buffering, up to 1Mbytes by default. > 5) For devtools, send buffer limit is 100Mbytes. > 6) Unittests for buffer handling in HttpConnection. > > BUG=371906 > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=291447 NOTREECHECKS=true NOTRY=true TBR=rsleevi@chromium.org Review URL: https://codereview.chromium.org/497223003 Cr-Commit-Position: refs/heads/master@{#291521} git-svn-id: svn://svn.chromium.org/chrome/trunk/src@291521 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/devtools/devtools_http_handler_impl.cc')
-rw-r--r--content/browser/devtools/devtools_http_handler_impl.cc82
1 files changed, 19 insertions, 63 deletions
diff --git a/content/browser/devtools/devtools_http_handler_impl.cc b/content/browser/devtools/devtools_http_handler_impl.cc
index 18d30e3..72fe254 100644
--- a/content/browser/devtools/devtools_http_handler_impl.cc
+++ b/content/browser/devtools/devtools_http_handler_impl.cc
@@ -39,7 +39,6 @@
#include "net/base/net_errors.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"
@@ -68,9 +67,6 @@ const char kTargetFaviconUrlField[] = "faviconUrl";
const char kTargetWebSocketDebuggerUrlField[] = "webSocketDebuggerUrl";
const char kTargetDevtoolsFrontendUrlField[] = "devtoolsFrontendUrl";
-// Maximum write buffer size of devtools http/websocket connectinos.
-const int32 kSendBufferSizeForDevTools = 100 * 1024 * 1024; // 100Mb
-
// An internal implementation of DevToolsAgentHostClient that delegates
// messages sent to a DebuggerShell instance.
class DevToolsAgentHostClientImpl : public DevToolsAgentHostClient {
@@ -108,15 +104,13 @@ class DevToolsAgentHostClientImpl : public DevToolsAgentHostClient {
message_loop_->PostTask(
FROM_HERE,
base::Bind(&net::HttpServer::SendOverWebSocket,
- base::Unretained(server_),
+ server_,
connection_id_,
response));
message_loop_->PostTask(
FROM_HERE,
- base::Bind(&net::HttpServer::Close,
- base::Unretained(server_),
- connection_id_));
+ base::Bind(&net::HttpServer::Close, server_, connection_id_));
}
virtual void DispatchProtocolMessage(
@@ -125,7 +119,7 @@ class DevToolsAgentHostClientImpl : public DevToolsAgentHostClient {
message_loop_->PostTask(
FROM_HERE,
base::Bind(&net::HttpServer::SendOverWebSocket,
- base::Unretained(server_),
+ server_,
connection_id_,
message));
}
@@ -136,9 +130,9 @@ class DevToolsAgentHostClientImpl : public DevToolsAgentHostClient {
}
private:
- base::MessageLoop* const message_loop_;
- net::HttpServer* const server_;
- const int connection_id_;
+ base::MessageLoop* message_loop_;
+ net::HttpServer* server_;
+ int connection_id_;
scoped_refptr<DevToolsAgentHost> agent_host_;
};
@@ -166,12 +160,12 @@ int DevToolsHttpHandler::GetFrontendResourceId(const std::string& name) {
// static
DevToolsHttpHandler* DevToolsHttpHandler::Start(
- scoped_ptr<ServerSocketFactory> server_socket_factory,
+ const net::StreamListenSocketFactory* socket_factory,
const std::string& frontend_url,
DevToolsHttpHandlerDelegate* delegate,
const base::FilePath& active_port_output_directory) {
DevToolsHttpHandlerImpl* http_handler =
- new DevToolsHttpHandlerImpl(server_socket_factory.Pass(),
+ new DevToolsHttpHandlerImpl(socket_factory,
frontend_url,
delegate,
active_port_output_directory);
@@ -179,28 +173,6 @@ DevToolsHttpHandler* DevToolsHttpHandler::Start(
return http_handler;
}
-DevToolsHttpHandler::ServerSocketFactory::ServerSocketFactory(
- const std::string& address,
- int port,
- int backlog)
- : address_(address),
- port_(port),
- backlog_(backlog) {
-}
-
-DevToolsHttpHandler::ServerSocketFactory::~ServerSocketFactory() {
-}
-
-scoped_ptr<net::ServerSocket>
-DevToolsHttpHandler::ServerSocketFactory::CreateAndListen() const {
- scoped_ptr<net::ServerSocket> socket = Create();
- if (socket &&
- socket->ListenWithAddressAndPort(address_, port_, backlog_) == net::OK) {
- return socket.Pass();
- }
- return scoped_ptr<net::ServerSocket>();
-}
-
DevToolsHttpHandlerImpl::~DevToolsHttpHandlerImpl() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// Stop() must be called prior to destruction.
@@ -290,8 +262,6 @@ static std::string GetMimeType(const std::string& filename) {
void DevToolsHttpHandlerImpl::OnHttpRequest(
int connection_id,
const net::HttpServerRequestInfo& info) {
- server_->SetSendBufferSize(connection_id, kSendBufferSizeForDevTools);
-
if (info.path.find("/json") == 0) {
BrowserThread::PostTask(
BrowserThread::UI,
@@ -381,7 +351,6 @@ void DevToolsHttpHandlerImpl::OnWebSocketRequest(
true /* handle on UI thread */);
browser_targets_[connection_id] = browser_target;
- server_->SetSendBufferSize(connection_id, kSendBufferSizeForDevTools);
server_->AcceptWebSocket(connection_id, request);
return;
}
@@ -682,16 +651,16 @@ void DevToolsHttpHandlerImpl::OnCloseUI(int connection_id) {
}
DevToolsHttpHandlerImpl::DevToolsHttpHandlerImpl(
- scoped_ptr<ServerSocketFactory> server_socket_factory,
+ const net::StreamListenSocketFactory* socket_factory,
const std::string& frontend_url,
DevToolsHttpHandlerDelegate* delegate,
const base::FilePath& active_port_output_directory)
: frontend_url_(frontend_url),
- server_socket_factory_(server_socket_factory.Pass()),
+ socket_factory_(socket_factory),
delegate_(delegate),
active_port_output_directory_(active_port_output_directory) {
if (frontend_url_.empty())
- frontend_url_ = "/devtools/devtools.html";
+ frontend_url_ = "/devtools/devtools.html";
// Balanced in ResetHandlerThreadAndRelease().
AddRef();
@@ -699,15 +668,14 @@ DevToolsHttpHandlerImpl::DevToolsHttpHandlerImpl(
// Runs on the handler thread
void DevToolsHttpHandlerImpl::Init() {
- server_.reset(new net::HttpServer(server_socket_factory_->CreateAndListen(),
- this));
+ server_ = new net::HttpServer(*socket_factory_.get(), this);
if (!active_port_output_directory_.empty())
WriteActivePortToUserProfile();
}
// Runs on the handler thread
void DevToolsHttpHandlerImpl::Teardown() {
- server_.reset(NULL);
+ server_ = NULL;
}
// Runs on FILE thread to make sure that it is serialized against
@@ -765,7 +733,7 @@ void DevToolsHttpHandlerImpl::SendJson(int connection_id,
thread_->message_loop()->PostTask(
FROM_HERE,
base::Bind(&net::HttpServer::SendResponse,
- base::Unretained(server_.get()),
+ server_.get(),
connection_id,
response));
}
@@ -778,7 +746,7 @@ void DevToolsHttpHandlerImpl::Send200(int connection_id,
thread_->message_loop()->PostTask(
FROM_HERE,
base::Bind(&net::HttpServer::Send200,
- base::Unretained(server_.get()),
+ server_.get(),
connection_id,
data,
mime_type));
@@ -789,9 +757,7 @@ void DevToolsHttpHandlerImpl::Send404(int connection_id) {
return;
thread_->message_loop()->PostTask(
FROM_HERE,
- base::Bind(&net::HttpServer::Send404,
- base::Unretained(server_.get()),
- connection_id));
+ base::Bind(&net::HttpServer::Send404, server_.get(), connection_id));
}
void DevToolsHttpHandlerImpl::Send500(int connection_id,
@@ -800,9 +766,7 @@ void DevToolsHttpHandlerImpl::Send500(int connection_id,
return;
thread_->message_loop()->PostTask(
FROM_HERE,
- base::Bind(&net::HttpServer::Send500,
- base::Unretained(server_.get()),
- connection_id,
+ base::Bind(&net::HttpServer::Send500, server_.get(), connection_id,
message));
}
@@ -813,16 +777,8 @@ void DevToolsHttpHandlerImpl::AcceptWebSocket(
return;
thread_->message_loop()->PostTask(
FROM_HERE,
- base::Bind(&net::HttpServer::SetSendBufferSize,
- base::Unretained(server_.get()),
- connection_id,
- kSendBufferSizeForDevTools));
- thread_->message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&net::HttpServer::AcceptWebSocket,
- base::Unretained(server_.get()),
- connection_id,
- request));
+ base::Bind(&net::HttpServer::AcceptWebSocket, server_.get(),
+ connection_id, request));
}
base::DictionaryValue* DevToolsHttpHandlerImpl::SerializeTarget(