Commit 48f8dab1 authored by Peter Marshall's avatar Peter Marshall Committed by Commit Bot

DevTools: make createBrowserContext implementation async

We are planning to use ephemeral profiles to implement this method
in the future, but their creation is async. OTR profiles which are
currently used have synchronous creation, which is why this method
was synchronous so far.

This CL updates the implementation to be async, but does not yet
make any other changes. In later CLs we will plumb through the
callback to the async ephemeral profile creation.

Doc for context:
https://docs.google.com/document/d/1fnTD_smbp5vzWTLAuXagVsqm_C5607DPbKcfx6KbCTY

Bug: 1086935
Change-Id: I19c72bd002574ba8e6c810f3fff25d974e1f852e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2230461Reviewed-by: default avatarSigurd Schneider <sigurds@chromium.org>
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#775106}
parent 81f95977
...@@ -978,37 +978,43 @@ void TargetHandler::DevToolsAgentHostCrashed(DevToolsAgentHost* host, ...@@ -978,37 +978,43 @@ void TargetHandler::DevToolsAgentHostCrashed(DevToolsAgentHost* host,
// ----------------- More protocol methods ------------------- // ----------------- More protocol methods -------------------
protocol::Response TargetHandler::CreateBrowserContext( void TargetHandler::CreateBrowserContext(
Maybe<bool> dispose_on_detach, Maybe<bool> in_disposeOnDetach,
Maybe<std::string> proxy_server, Maybe<String> in_proxyServer,
Maybe<std::string> proxy_bypass_list, Maybe<String> in_proxyBypassList,
std::string* out_context_id) { std::unique_ptr<CreateBrowserContextCallback> callback) {
if (access_mode_ != AccessMode::kBrowser) if (access_mode_ != AccessMode::kBrowser) {
return Response::ServerError(kNotAllowedError); callback->sendFailure(Response::ServerError(kNotAllowedError));
return;
}
DevToolsManagerDelegate* delegate = DevToolsManagerDelegate* delegate =
DevToolsManager::GetInstance()->delegate(); DevToolsManager::GetInstance()->delegate();
if (!delegate) if (!delegate) {
return Response::ServerError( callback->sendFailure(
"Browser context management is not supported."); Response::ServerError("Browser context management is not supported."));
return;
}
BrowserContext* context = delegate->CreateBrowserContext(); BrowserContext* context = delegate->CreateBrowserContext();
if (!context) if (!context) {
return Response::ServerError("Failed to create browser context."); callback->sendFailure(
Response::ServerError("Failed to create browser context."));
return;
}
if (proxy_server.isJust()) { if (in_proxyServer.isJust()) {
net::ProxyConfig proxy_config; net::ProxyConfig proxy_config;
proxy_config.proxy_rules().ParseFromString(proxy_server.fromJust()); proxy_config.proxy_rules().ParseFromString(in_proxyServer.fromJust());
if (proxy_bypass_list.isJust()) { if (in_proxyBypassList.isJust()) {
proxy_config.proxy_rules().bypass_rules.ParseFromString( proxy_config.proxy_rules().bypass_rules.ParseFromString(
proxy_bypass_list.fromJust()); in_proxyBypassList.fromJust());
} }
contexts_with_overridden_proxy_[context->UniqueId()] = contexts_with_overridden_proxy_[context->UniqueId()] =
std::move(proxy_config); std::move(proxy_config);
} }
*out_context_id = context->UniqueId(); if (in_disposeOnDetach.fromMaybe(false))
if (dispose_on_detach.fromMaybe(false)) dispose_on_detach_context_ids_.insert(context->UniqueId());
dispose_on_detach_context_ids_.insert(*out_context_id); callback->sendSuccess(context->UniqueId());
return Response::Success();
} }
protocol::Response TargetHandler::GetBrowserContexts( protocol::Response TargetHandler::GetBrowserContexts(
......
...@@ -88,10 +88,11 @@ class TargetHandler : public DevToolsDomainHandler, ...@@ -88,10 +88,11 @@ class TargetHandler : public DevToolsDomainHandler,
bool* out_success) override; bool* out_success) override;
Response ExposeDevToolsProtocol(const std::string& target_id, Response ExposeDevToolsProtocol(const std::string& target_id,
Maybe<std::string> binding_name) override; Maybe<std::string> binding_name) override;
Response CreateBrowserContext(Maybe<bool> dispose_on_detach, void CreateBrowserContext(
Maybe<std::string> proxy_server, Maybe<bool> in_disposeOnDetach,
Maybe<std::string> proxy_bypass_list, Maybe<String> in_proxyServer,
std::string* out_context_id) override; Maybe<String> in_proxyBypassList,
std::unique_ptr<CreateBrowserContextCallback> callback) override;
void DisposeBrowserContext( void DisposeBrowserContext(
const std::string& context_id, const std::string& context_id,
std::unique_ptr<DisposeBrowserContextCallback> callback) override; std::unique_ptr<DisposeBrowserContextCallback> callback) override;
......
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
}, },
{ {
"domain": "Target", "domain": "Target",
"async": ["disposeBrowserContext", "setAutoAttach"] "async": ["createBrowserContext", "disposeBrowserContext", "setAutoAttach"]
}, },
{ {
"domain": "Tethering", "domain": "Tethering",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment