Commit 2d5d243a authored by Pavel Feldman's avatar Pavel Feldman Committed by Commit Bot

DevTools: introduce Target.attachToBrowserTarget for flattened operation.

Change-Id: I1ddb0f06353aa88673cb690dfb35d82f8b4559ac
Reviewed-on: https://chromium-review.googlesource.com/1136895
Commit-Queue: Pavel Feldman <pfeldman@chromium.org>
Reviewed-by: default avatarDmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#575147}
parent edf34524
......@@ -52,17 +52,18 @@ BrowserDevToolsAgentHost::~BrowserDevToolsAgentHost() {
bool BrowserDevToolsAgentHost::AttachSession(DevToolsSession* session,
TargetRegistry* parent_registry) {
DCHECK(!parent_registry);
if (session->restricted())
return false;
auto registry = std::make_unique<TargetRegistry>(session);
TargetRegistry* registry_ptr = registry.get();
target_registries_[session->client()] = std::move(registry);
TargetRegistry* registry = parent_registry;
if (!registry) {
auto new_registry = std::make_unique<TargetRegistry>(session);
registry = new_registry.get();
target_registries_[session->client()] = std::move(new_registry);
}
session->SetBrowserOnly(true);
session->AddHandler(std::make_unique<protocol::TargetHandler>(
true /* browser_only */, GetId(), registry_ptr));
true /* browser_only */, GetId(), registry));
if (only_discovery_)
return true;
......@@ -111,9 +112,11 @@ bool BrowserDevToolsAgentHost::DispatchProtocolMessage(
DevToolsAgentHostClient* client,
const std::string& message,
base::DictionaryValue* parsed_message) {
auto* target_registry = target_registries_[client].get();
if (target_registry->DispatchMessageOnAgentHost(message, parsed_message))
auto it = target_registries_.find(client);
if (it != target_registries_.end() &&
it->second->DispatchMessageOnAgentHost(message, parsed_message)) {
return true;
}
return DevToolsAgentHostImpl::DispatchProtocolMessage(client, message,
parsed_message);
}
......
......@@ -547,6 +547,14 @@ Response TargetHandler::AttachToTarget(const std::string& target_id,
return Response::OK();
}
Response TargetHandler::AttachToBrowserTarget(std::string* out_session_id) {
scoped_refptr<DevToolsAgentHost> agent_host =
DevToolsAgentHost::CreateForBrowser(
nullptr, DevToolsAgentHost::CreateServerSocketCallback());
*out_session_id = Session::Attach(this, agent_host.get(), false, true);
return Response::OK();
}
Response TargetHandler::DetachFromTarget(Maybe<std::string> session_id,
Maybe<std::string> target_id) {
Session* session = nullptr;
......
......@@ -55,6 +55,7 @@ class TargetHandler : public DevToolsDomainHandler,
Response AttachToTarget(const std::string& target_id,
Maybe<bool> flatten,
std::string* out_session_id) override;
Response AttachToBrowserTarget(std::string* out_session_id) override;
Response DetachFromTarget(Maybe<std::string> session_id,
Maybe<std::string> target_id) override;
Response SendMessageToTarget(const std::string& message,
......
......@@ -5796,6 +5796,12 @@ domain Target
# Id assigned to the session.
SessionID sessionId
# Attaches to the browser target, only uses flat sessionId mode.
experimental command attachToBrowserTarget
returns
# Id assigned to the session.
SessionID sessionId
# Closes the target. If the target is a page that gets closed too.
command closeTarget
parameters
......
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