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

Unified Diff: content/browser/devtools/protocol/target_handler.cc

Issue 2391823002: [DevTools] Introduce Target.setAutoAttach. (Closed)
Patch Set: Created 4 years, 2 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/protocol/target_handler.cc
diff --git a/content/browser/devtools/protocol/target_handler.cc b/content/browser/devtools/protocol/target_handler.cc
index f00106a1f0da1c8ac89d31af1990d3e18a14dea0..1525a1c8e8e075304a53918a33f87525b8559cf0 100644
--- a/content/browser/devtools/protocol/target_handler.cc
+++ b/content/browser/devtools/protocol/target_handler.cc
@@ -87,6 +87,7 @@ ServiceWorkerDevToolsAgentHost::Map GetMatchingServiceWorkers(
TargetHandler::TargetHandler()
: enabled_(false),
+ auto_attach_(false),
wait_for_debugger_on_start_(false),
attach_to_frames_(false),
render_frame_host_(nullptr) {
@@ -114,7 +115,7 @@ void TargetHandler::UpdateServiceWorkers() {
}
void TargetHandler::UpdateFrames() {
- if (!enabled_ || !attach_to_frames_)
+ if (!enabled_ || !auto_attach_ || !attach_to_frames_)
return;
HostsMap new_hosts;
@@ -142,7 +143,7 @@ void TargetHandler::UpdateFrames() {
}
void TargetHandler::UpdateServiceWorkers(bool waiting_for_debugger) {
- if (!enabled_)
+ if (!enabled_ || !auto_attach_)
return;
frame_urls_.clear();
@@ -173,24 +174,39 @@ void TargetHandler::ReattachTargetsOfType(
if (pair.second->GetType() == type &&
new_hosts.find(pair.first) == new_hosts.end()) {
DetachFromTargetInternal(pair.second.get());
+ TargetRemovedInternal(pair.second.get());
}
}
for (const auto& pair : new_hosts) {
- if (old_hosts.find(pair.first) == old_hosts.end())
+ if (old_hosts.find(pair.first) == old_hosts.end()) {
+ TargetCreatedInternal(pair.second.get());
AttachToTargetInternal(pair.second.get(), waiting_for_debugger);
+ }
}
}
+void TargetHandler::TargetCreatedInternal(DevToolsAgentHost* host) {
+ client_->TargetCreated(
+ TargetCreatedParams::Create()->set_target_info(
+ TargetInfo::Create()->set_target_id(host->GetId())
+ ->set_title(host->GetTitle())
+ ->set_url(host->GetURL().spec())
+ ->set_type(host->GetType())));
+}
+
+void TargetHandler::TargetRemovedInternal(DevToolsAgentHost* host) {
+ client_->TargetRemoved(TargetRemovedParams::Create()
+ ->set_target_id(host->GetId()));
+}
+
void TargetHandler::AttachToTargetInternal(
DevToolsAgentHost* host, bool waiting_for_debugger) {
if (host->IsAttached())
return;
attached_hosts_[host->GetId()] = host;
host->AttachClient(this);
- client_->TargetCreated(TargetCreatedParams::Create()
+ client_->AttachedToTarget(AttachedToTargetParams::Create()
->set_target_id(host->GetId())
- ->set_url(host->GetURL().spec())
- ->set_type(host->GetType())
->set_waiting_for_debugger(waiting_for_debugger));
}
@@ -199,7 +215,7 @@ void TargetHandler::DetachFromTargetInternal(DevToolsAgentHost* host) {
if (it == attached_hosts_.end())
return;
host->DetachClient(this);
- client_->TargetRemoved(TargetRemovedParams::Create()->
+ client_->DetachedFromTarget(DetachedFromTargetParams::Create()->
set_target_id(host->GetId()));
attached_hosts_.erase(it);
}
@@ -220,6 +236,7 @@ Response TargetHandler::Disable() {
if (!enabled_)
return Response::OK();
enabled_ = false;
+ auto_attach_ = false;
wait_for_debugger_on_start_ = false;
ServiceWorkerDevToolsManager::GetInstance()->RemoveObserver(this);
for (const auto& pair : attached_hosts_)
@@ -228,8 +245,16 @@ Response TargetHandler::Disable() {
return Response::OK();
}
-Response TargetHandler::SetWaitForDebuggerOnStart(bool value) {
- wait_for_debugger_on_start_ = value;
+Response TargetHandler::SetAutoAttach(
+ bool auto_attach, bool wait_for_debugger_on_start) {
+ wait_for_debugger_on_start_ = wait_for_debugger_on_start;
+ if (auto_attach_ == auto_attach)
+ return Response::OK();
+ auto_attach_ = auto_attach;
+ if (auto_attach_) {
+ UpdateServiceWorkers();
+ UpdateFrames();
+ }
return Response::OK();
}
@@ -263,7 +288,7 @@ Response TargetHandler::GetTargetInfo(
DevToolsAgentHost::GetForId(target_id));
if (!agent_host)
return Response::InvalidParams("No target with such id");
- *target_info =TargetInfo::Create()
+ *target_info = TargetInfo::Create()
->set_target_id(agent_host->GetId())
->set_type(agent_host->GetType())
->set_title(agent_host->GetTitle())

Powered by Google App Engine
This is Rietveld 408576698