diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-22 22:00:20 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-22 22:01:45 +0000 |
commit | 0b2f33f4a88efbd203b0623324ad4114e3bb9d23 (patch) | |
tree | 351b90382f82c9b895edfa4b9fc03724a1b9c0c5 /content/browser/devtools/devtools_http_handler_impl.cc | |
parent | 5bd4f0cd8fed1b3d15aba82e85ae5b57cda390c0 (diff) | |
download | chromium_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.cc | 82 |
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( |