DevTools: Tethering in Android Webview
BUG=416154 Review URL: https://codereview.chromium.org/703333005 Cr-Commit-Position: refs/heads/master@{#304014}
This commit is contained in:
@ -19,6 +19,7 @@
|
|||||||
#include "content/public/browser/web_contents.h"
|
#include "content/public/browser/web_contents.h"
|
||||||
#include "content/public/common/user_agent.h"
|
#include "content/public/common/user_agent.h"
|
||||||
#include "jni/AwDevToolsServer_jni.h"
|
#include "jni/AwDevToolsServer_jni.h"
|
||||||
|
#include "net/base/net_errors.h"
|
||||||
#include "net/socket/unix_domain_server_socket_posix.h"
|
#include "net/socket/unix_domain_server_socket_posix.h"
|
||||||
|
|
||||||
using content::DevToolsAgentHost;
|
using content::DevToolsAgentHost;
|
||||||
@ -30,12 +31,17 @@ namespace {
|
|||||||
const char kFrontEndURL[] =
|
const char kFrontEndURL[] =
|
||||||
"http://chrome-devtools-frontend.appspot.com/serve_rev/%s/devtools.html";
|
"http://chrome-devtools-frontend.appspot.com/serve_rev/%s/devtools.html";
|
||||||
const char kSocketNameFormat[] = "webview_devtools_remote_%d";
|
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
|
// Delegate implementation for the devtools http handler for WebView. A new
|
||||||
// instance of this gets created each time web debugging is enabled.
|
// instance of this gets created each time web debugging is enabled.
|
||||||
class AwDevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate {
|
class AwDevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate {
|
||||||
public:
|
public:
|
||||||
AwDevToolsServerDelegate() {}
|
AwDevToolsServerDelegate() : last_tethering_socket_(0) {
|
||||||
|
}
|
||||||
|
|
||||||
virtual ~AwDevToolsServerDelegate() {}
|
virtual ~AwDevToolsServerDelegate() {}
|
||||||
|
|
||||||
// DevToolsHttpProtocolHandler::Delegate overrides.
|
// DevToolsHttpProtocolHandler::Delegate overrides.
|
||||||
@ -51,10 +57,20 @@ class AwDevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate {
|
|||||||
|
|
||||||
scoped_ptr<net::ServerSocket>
|
scoped_ptr<net::ServerSocket>
|
||||||
CreateSocketForTethering(std::string* name) override {
|
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:
|
private:
|
||||||
|
int last_tethering_socket_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(AwDevToolsServerDelegate);
|
DISALLOW_COPY_AND_ASSIGN(AwDevToolsServerDelegate);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user