Index: android_webview/native/aw_dev_tools_server.cc |
diff --git a/android_webview/native/aw_dev_tools_server.cc b/android_webview/native/aw_dev_tools_server.cc |
index 4d5808b60774bd254a8f90038956c8e8156da255..b5ce81e870db95fe6308354d0b2dba7922acd178 100644 |
--- a/android_webview/native/aw_dev_tools_server.cc |
+++ b/android_webview/native/aw_dev_tools_server.cc |
@@ -19,6 +19,7 @@ |
#include "content/public/browser/web_contents.h" |
#include "content/public/common/user_agent.h" |
#include "jni/AwDevToolsServer_jni.h" |
+#include "net/base/net_errors.h" |
#include "net/socket/unix_domain_server_socket_posix.h" |
using content::DevToolsAgentHost; |
@@ -30,12 +31,17 @@ namespace { |
const char kFrontEndURL[] = |
"http://chrome-devtools-frontend.appspot.com/serve_rev/%s/devtools.html"; |
const char kSocketNameFormat[] = "webview_devtools_remote_%d"; |
+const char kTetheringSocketName[] = "webview_devtools_tethering_%d_%d"; |
+ |
+const int kBackLog = 10; |
// Delegate implementation for the devtools http handler for WebView. A new |
// instance of this gets created each time web debugging is enabled. |
class AwDevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate { |
public: |
- AwDevToolsServerDelegate() {} |
+ AwDevToolsServerDelegate() : last_tethering_socket_(0) { |
+ } |
+ |
virtual ~AwDevToolsServerDelegate() {} |
// DevToolsHttpProtocolHandler::Delegate overrides. |
@@ -51,10 +57,20 @@ class AwDevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate { |
scoped_ptr<net::ServerSocket> |
CreateSocketForTethering(std::string* name) override { |
- return scoped_ptr<net::ServerSocket>(); |
+ *name = base::StringPrintf( |
+ kTetheringSocketName, getpid(), ++last_tethering_socket_); |
+ scoped_ptr<net::UnixDomainServerSocket> socket( |
+ new net::UnixDomainServerSocket( |
+ base::Bind(&content::CanUserConnectToDevTools), true)); |
+ if (socket->ListenWithAddressAndPort(*name, 0, kBackLog) != net::OK) |
+ return scoped_ptr<net::ServerSocket>(); |
+ |
+ return socket.Pass(); |
} |
private: |
+ int last_tethering_socket_; |
+ |
DISALLOW_COPY_AND_ASSIGN(AwDevToolsServerDelegate); |
}; |