Index: content/browser/devtools/tethering_handler.cc |
diff --git a/content/browser/devtools/tethering_handler.cc b/content/browser/devtools/tethering_handler.cc |
index 4135c48ec0fed8a81a2a108bb6817f89c6cd146e..6672ea1fd2a1b8679e3cb3310babf78261f4d666 100644 |
--- a/content/browser/devtools/tethering_handler.cc |
+++ b/content/browser/devtools/tethering_handler.cc |
@@ -257,12 +257,13 @@ class TetheringHandler::TetheringImpl { |
DevToolsHttpHandlerDelegate* delegate); |
~TetheringImpl(); |
- void Bind(scoped_refptr<DevToolsProtocol::Command> command); |
- void Unbind(scoped_refptr<DevToolsProtocol::Command> command); |
+ void Bind(scoped_refptr<DevToolsProtocol::Command> command, int port); |
+ void Unbind(scoped_refptr<DevToolsProtocol::Command> command, int port); |
void Accepted(int port, const std::string& name); |
private: |
- void SendAsyncResponse(scoped_refptr<DevToolsProtocol::Response> response); |
+ void SendInternalError(scoped_refptr<DevToolsProtocol::Command> command, |
+ const std::string& message); |
base::WeakPtr<TetheringHandler> handler_; |
DevToolsHttpHandlerDelegate* delegate_; |
@@ -284,16 +285,10 @@ TetheringHandler::TetheringImpl::~TetheringImpl() { |
} |
void TetheringHandler::TetheringImpl::Bind( |
- scoped_refptr<DevToolsProtocol::Command> command) { |
- const std::string& portParamName = devtools::Tethering::bind::kParamPort; |
- int port = GetPort(command, portParamName); |
- if (port == 0) { |
- SendAsyncResponse(command->InvalidParamResponse(portParamName)); |
- return; |
- } |
- |
+ scoped_refptr<DevToolsProtocol::Command> command, |
+ int port) { |
dgozman
2014/10/17 13:34:24
|port| should fit previous line.
vkuzkokov
2014/10/17 13:43:37
Done.
|
if (bound_sockets_.find(port) != bound_sockets_.end()) { |
- SendAsyncResponse(command->InternalErrorResponse("Port already bound")); |
+ SendInternalError(command, "Port already bound"); |
return; |
} |
@@ -301,32 +296,33 @@ void TetheringHandler::TetheringImpl::Bind( |
&TetheringHandler::TetheringImpl::Accepted, base::Unretained(this)); |
scoped_ptr<BoundSocket> bound_socket(new BoundSocket(callback, delegate_)); |
if (!bound_socket->Listen(port)) { |
- SendAsyncResponse(command->InternalErrorResponse("Could not bind port")); |
+ SendInternalError(command, "Could not bind port"); |
return; |
} |
bound_sockets_[port] = bound_socket.release(); |
- SendAsyncResponse(command->SuccessResponse(NULL)); |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind(&TetheringHandler::SendBindSuccess, handler_, command)); |
} |
void TetheringHandler::TetheringImpl::Unbind( |
- scoped_refptr<DevToolsProtocol::Command> command) { |
- const std::string& portParamName = devtools::Tethering::unbind::kParamPort; |
- int port = GetPort(command, portParamName); |
- if (port == 0) { |
- SendAsyncResponse(command->InvalidParamResponse(portParamName)); |
- return; |
- } |
+ scoped_refptr<DevToolsProtocol::Command> command, |
+ int port) { |
dgozman
2014/10/17 13:34:24
ditto
vkuzkokov
2014/10/17 13:43:37
Done.
|
BoundSockets::iterator it = bound_sockets_.find(port); |
if (it == bound_sockets_.end()) { |
- SendAsyncResponse(command->InternalErrorResponse("Port is not bound")); |
+ SendInternalError(command, "Port is not bound"); |
return; |
} |
delete it->second; |
bound_sockets_.erase(it); |
- SendAsyncResponse(command->SuccessResponse(NULL)); |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind(&TetheringHandler::SendUnbindSuccess, handler_, command)); |
} |
void TetheringHandler::TetheringImpl::Accepted( |
@@ -337,14 +333,17 @@ void TetheringHandler::TetheringImpl::Accepted( |
base::Bind(&TetheringHandler::Accepted, handler_, port, name)); |
} |
-void TetheringHandler::TetheringImpl::SendAsyncResponse( |
- scoped_refptr<DevToolsProtocol::Response> response) { |
+void TetheringHandler::TetheringImpl::SendInternalError( |
+ scoped_refptr<DevToolsProtocol::Command> command, |
+ const std::string& message) { |
BrowserThread::PostTask( |
BrowserThread::UI, |
FROM_HERE, |
- base::Bind(&TetheringHandler::SendAsyncResponse, handler_, response)); |
+ base::Bind(&TetheringHandler::SendInternalError, handler_, |
+ command, message)); |
} |
+ |
// TetheringHandler ---------------------------------------------------------- |
// static |
@@ -391,6 +390,11 @@ bool TetheringHandler::Activate() { |
scoped_refptr<DevToolsProtocol::Response> |
TetheringHandler::OnBind(scoped_refptr<DevToolsProtocol::Command> command) { |
+ const std::string& portParamName = devtools::Tethering::bind::kParamPort; |
+ int port = GetPort(command, portParamName); |
+ if (port == 0) |
+ return command->InvalidParamResponse(portParamName); |
+ |
if (!Activate()) { |
return command->ServerErrorResponse( |
"Tethering is used by another connection"); |
@@ -398,12 +402,18 @@ TetheringHandler::OnBind(scoped_refptr<DevToolsProtocol::Command> command) { |
DCHECK(impl_); |
message_loop_proxy_->PostTask( |
FROM_HERE, |
- base::Bind(&TetheringImpl::Bind, base::Unretained(impl_), command)); |
+ base::Bind(&TetheringImpl::Bind, base::Unretained(impl_), |
+ command, port)); |
return command->AsyncResponsePromise(); |
} |
scoped_refptr<DevToolsProtocol::Response> |
TetheringHandler::OnUnbind(scoped_refptr<DevToolsProtocol::Command> command) { |
+ const std::string& portParamName = devtools::Tethering::unbind::kParamPort; |
+ int port = GetPort(command, portParamName); |
+ if (port == 0) |
+ return command->InvalidParamResponse(portParamName); |
+ |
if (!Activate()) { |
return command->ServerErrorResponse( |
"Tethering is used by another connection"); |
@@ -411,8 +421,25 @@ TetheringHandler::OnUnbind(scoped_refptr<DevToolsProtocol::Command> command) { |
DCHECK(impl_); |
message_loop_proxy_->PostTask( |
FROM_HERE, |
- base::Bind(&TetheringImpl::Unbind, base::Unretained(impl_), command)); |
+ base::Bind(&TetheringImpl::Unbind, base::Unretained(impl_), |
+ command, port)); |
return command->AsyncResponsePromise(); |
} |
+void TetheringHandler::SendBindSuccess( |
+ scoped_refptr<DevToolsProtocol::Command> command) { |
+ SendAsyncResponse(command->SuccessResponse(nullptr)); |
+} |
+ |
+void TetheringHandler::SendUnbindSuccess( |
+ scoped_refptr<DevToolsProtocol::Command> command) { |
+ SendAsyncResponse(command->SuccessResponse(nullptr)); |
+} |
+ |
+void TetheringHandler::SendInternalError( |
+ scoped_refptr<DevToolsProtocol::Command> command, |
+ const std::string& message) { |
+ SendAsyncResponse(command->InternalErrorResponse(message)); |
+} |
+ |
} // namespace content |