Index: content/browser/service_worker/service_worker_version.cc |
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc |
index db9350a62ffd903432d75d9f46c334d3cfd6749f..4010483a4b9822105fd852542c8cb1038528e951 100644 |
--- a/content/browser/service_worker/service_worker_version.cc |
+++ b/content/browser/service_worker/service_worker_version.cc |
@@ -538,6 +538,14 @@ ServiceWorkerVersionInfo ServiceWorkerVersion::GetInfo() { |
running_status(), status(), script_url(), registration_id(), version_id(), |
embedded_worker()->process_id(), embedded_worker()->thread_id(), |
embedded_worker()->worker_devtools_agent_route_id()); |
+ for (auto& controllee : controllee_map_) { |
+ const ServiceWorkerProviderHost* const host = controllee.second; |
+ info.clients.insert( |
+ std::pair<std::string, ServiceWorkerVersionInfo::ClientInfo>( |
+ host->client_uuid(), ServiceWorkerVersionInfo::ClientInfo( |
+ host->process_id(), host->frame_id(), |
+ host->shared_worker_route_id()))); |
+ } |
if (!main_script_http_info_) |
return info; |
info.script_response_time = main_script_http_info_->response_time; |
@@ -932,6 +940,8 @@ void ServiceWorkerVersion::AddControllee( |
controllee_map_[uuid] = provider_host; |
// Keep the worker alive a bit longer right after a new controllee is added. |
RestartTick(&idle_time_); |
+ FOR_EACH_OBSERVER(Listener, listeners_, |
+ OnControlleeAdded(this, provider_host)); |
} |
void ServiceWorkerVersion::RemoveControllee( |
@@ -939,6 +949,8 @@ void ServiceWorkerVersion::RemoveControllee( |
const std::string& uuid = provider_host->client_uuid(); |
DCHECK(ContainsKey(controllee_map_, uuid)); |
controllee_map_.erase(uuid); |
+ FOR_EACH_OBSERVER(Listener, listeners_, |
+ OnControlleeRemoved(this, provider_host)); |
if (HasControllee()) |
return; |
FOR_EACH_OBSERVER(Listener, listeners_, OnNoControllees(this)); |