Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Unified Diff: content/browser/devtools/devtools_http_handler.cc

Issue 2514933003: DevTools: enable target domain handler on the browser target, make browser target non-discoverable.
Patch Set: rebaselined Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/devtools/devtools_http_handler.cc
diff --git a/content/browser/devtools/devtools_http_handler.cc b/content/browser/devtools/devtools_http_handler.cc
index 58c0c4621fd6bcc6f3c466c66239a16b8532ae9f..a025f3b9c812c1dabd34900184aa4aa831846365 100644
--- a/content/browser/devtools/devtools_http_handler.cc
+++ b/content/browser/devtools/devtools_http_handler.cc
@@ -49,10 +49,13 @@ namespace {
const base::FilePath::CharType kDevToolsActivePortFileName[] =
FILE_PATH_LITERAL("DevToolsActivePort");
+const base::FilePath::CharType kDevToolsBrowserTargetFileName[] =
+ FILE_PATH_LITERAL("DevToolsBrowserTarget");
const char kDevToolsHandlerThreadName[] = "Chrome_DevToolsHandlerThread";
const char kPageUrlPrefix[] = "/devtools/page/";
+const char kBrowserUrlPrefix[] = "/devtools/browser";
const char kTargetIdField[] = "id";
const char kTargetParentIdField[] = "parentId";
@@ -78,6 +81,7 @@ class ServerWrapper : net::HttpServer::Delegate {
ServerWrapper(base::WeakPtr<DevToolsHttpHandler> handler,
std::unique_ptr<net::ServerSocket> socket,
const base::FilePath& frontend_dir,
+ const std::string& browser_guid,
bool bundles_resources);
int GetLocalAddress(net::IPEndPoint* address);
@@ -94,7 +98,8 @@ class ServerWrapper : net::HttpServer::Delegate {
void Send500(int connection_id, const std::string& message);
void Close(int connection_id);
- void WriteActivePortToUserProfile(const base::FilePath& output_directory);
+ void WriteActivePortAndGuidToUserProfile(
+ const base::FilePath& output_directory);
~ServerWrapper() override {}
@@ -112,16 +117,19 @@ class ServerWrapper : net::HttpServer::Delegate {
base::WeakPtr<DevToolsHttpHandler> handler_;
std::unique_ptr<net::HttpServer> server_;
base::FilePath frontend_dir_;
+ std::string browser_guid_;
bool bundles_resources_;
};
ServerWrapper::ServerWrapper(base::WeakPtr<DevToolsHttpHandler> handler,
std::unique_ptr<net::ServerSocket> socket,
const base::FilePath& frontend_dir,
+ const std::string& browser_guid,
bool bundles_resources)
: handler_(handler),
server_(new net::HttpServer(std::move(socket), this)),
frontend_dir_(frontend_dir),
+ browser_guid_(browser_guid),
bundles_resources_(bundles_resources) {}
int ServerWrapper::GetLocalAddress(net::IPEndPoint* address) {
@@ -196,23 +204,24 @@ void ServerStartedOnUI(base::WeakPtr<DevToolsHttpHandler> handler,
}
}
-void StartServerOnHandlerThread(
- base::WeakPtr<DevToolsHttpHandler> handler,
- base::Thread* thread,
- DevToolsSocketFactory* socket_factory,
- const base::FilePath& output_directory,
- const base::FilePath& frontend_dir,
- bool bundles_resources) {
+void StartServerOnHandlerThread(base::WeakPtr<DevToolsHttpHandler> handler,
+ base::Thread* thread,
+ DevToolsSocketFactory* socket_factory,
+ const base::FilePath& output_directory,
+ const base::FilePath& frontend_dir,
+ const std::string& browser_guid,
+ bool bundles_resources) {
DCHECK(thread->task_runner()->BelongsToCurrentThread());
ServerWrapper* server_wrapper = nullptr;
std::unique_ptr<net::ServerSocket> server_socket =
socket_factory->CreateForHttpServer();
std::unique_ptr<net::IPEndPoint> ip_address(new net::IPEndPoint);
if (server_socket) {
- server_wrapper = new ServerWrapper(handler, std::move(server_socket),
- frontend_dir, bundles_resources);
+ server_wrapper =
+ new ServerWrapper(handler, std::move(server_socket), frontend_dir,
+ browser_guid, bundles_resources);
if (!output_directory.empty())
- server_wrapper->WriteActivePortToUserProfile(output_directory);
+ server_wrapper->WriteActivePortAndGuidToUserProfile(output_directory);
if (server_wrapper->GetLocalAddress(ip_address.get()) != net::OK)
ip_address.reset();
@@ -229,12 +238,12 @@ void StartServerOnHandlerThread(
base::Passed(&ip_address)));
}
-void StartServerOnFile(
- base::WeakPtr<DevToolsHttpHandler> handler,
- DevToolsSocketFactory* socket_factory,
- const base::FilePath& output_directory,
- const base::FilePath& frontend_dir,
- bool bundles_resources) {
+void StartServerOnFile(base::WeakPtr<DevToolsHttpHandler> handler,
+ DevToolsSocketFactory* socket_factory,
+ const base::FilePath& output_directory,
+ const base::FilePath& frontend_dir,
+ const std::string& browser_guid,
+ bool bundles_resources) {
DCHECK_CURRENTLY_ON(BrowserThread::FILE);
std::unique_ptr<base::Thread> thread(
new base::Thread(kDevToolsHandlerThreadName));
@@ -243,10 +252,10 @@ void StartServerOnFile(
if (thread->StartWithOptions(options)) {
base::MessageLoop* message_loop = thread->message_loop();
message_loop->task_runner()->PostTask(
- FROM_HERE,
- base::Bind(&StartServerOnHandlerThread, handler,
- base::Unretained(thread.release()), socket_factory,
- output_directory, frontend_dir, bundles_resources));
+ FROM_HERE, base::Bind(&StartServerOnHandlerThread, handler,
+ base::Unretained(thread.release()),
+ socket_factory, output_directory, frontend_dir,
+ browser_guid, bundles_resources));
}
}
@@ -646,7 +655,10 @@ void DevToolsHttpHandler::OnWebSocketRequest(
if (!thread_)
return;
- std::string browser_prefix = "/devtools/browser";
+ std::string browser_prefix = kBrowserUrlPrefix;
+ std::string browser_guid = delegate_->GetBrowserTargetGUID();
+ if (!browser_guid.empty())
+ browser_prefix = browser_prefix + "/" + browser_guid;
if (base::StartsWith(request.path, browser_prefix,
base::CompareCase::SENSITIVE)) {
scoped_refptr<DevToolsAgentHost> browser_agent =
@@ -721,12 +733,9 @@ DevToolsHttpHandler::DevToolsHttpHandler(
BrowserThread::PostTask(
BrowserThread::FILE, FROM_HERE,
- base::Bind(&StartServerOnFile,
- weak_factory_.GetWeakPtr(),
- socket_factory.release(),
- output_directory,
- debug_frontend_dir,
- bundles_resources));
+ base::Bind(&StartServerOnFile, weak_factory_.GetWeakPtr(),
+ socket_factory.release(), output_directory, debug_frontend_dir,
+ delegate->GetBrowserTargetGUID(), bundles_resources));
}
void DevToolsHttpHandler::ServerStarted(
@@ -740,7 +749,7 @@ void DevToolsHttpHandler::ServerStarted(
server_ip_address_.swap(ip_address);
}
-void ServerWrapper::WriteActivePortToUserProfile(
+void ServerWrapper::WriteActivePortAndGuidToUserProfile(
const base::FilePath& output_directory) {
DCHECK(!output_directory.empty());
net::IPEndPoint endpoint;
@@ -750,14 +759,25 @@ void ServerWrapper::WriteActivePortToUserProfile(
return;
}
- // Write this port to a well-known file in the profile directory
- // so Telemetry can pick it up.
+ // Write this port to a well-known file in the profile directory.
base::FilePath path = output_directory.Append(kDevToolsActivePortFileName);
std::string port_string = base::UintToString(endpoint.port());
- if (base::WriteFile(path, port_string.c_str(),
- static_cast<int>(port_string.length())) < 0) {
+ if (base::WriteFile(path, port_string.c_str(), port_string.length()) < 0) {
LOG(ERROR) << "Error writing DevTools active port to file";
}
+
+ if (!browser_guid_.empty()) {
+ std::string browser_address =
+ base::StringPrintf("ws://%s%s/%s", endpoint.ToString().c_str(),
+ kBrowserUrlPrefix, browser_guid_.c_str());
+
+ // Write browser target guid to a well-known file in the profile directory.
+ path = output_directory.Append(kDevToolsBrowserTargetFileName);
+ if (base::WriteFile(path, browser_address.c_str(),
+ browser_address.length()) < 0) {
+ LOG(ERROR) << "Error writing DevTools browser target path to file";
+ }
+ }
}
void DevToolsHttpHandler::SendJson(int connection_id,
« no previous file with comments | « content/browser/devtools/browser_devtools_agent_host.cc ('k') | content/public/browser/devtools_manager_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698