Revert "Reland "[PM] Add support for dedicated workers""
This reverts commit 897d08bff2ed90aca00c4adf99dac0a01da82d4e.
Reason for revert: Still breaks ARC boot, see crbug.com/1048710 and crbug.com/1046881
Original change's description:
> Reland "[PM] Add support for dedicated workers"
>
> This is a reland of dec0aa0b6c20019fa56fe7821dbd6f4766ab3469
>
> The fix for the failure is in this CL:
> https://chromium-review.googlesource.com/c/chromium/src/+/2036479
>
> Original change's description:
> > [PM] Add support for dedicated workers
> >
> > The WorkerWatcher observes dedicated workers through the
> > DedicatedWorkerService interface.
> >
> > Change-Id: If62d911e500def7ebb905311485a8d89eeaca8df
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1992208
> > Reviewed-by: Sigurður Ásgeirsson <[email protected]>
> > Commit-Queue: Patrick Monette <[email protected]>
> > Cr-Commit-Position: refs/heads/master@{#736411}
>
> Change-Id: I40b86ea7de8fa4b252ffe805ec5992020dffc515
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2028214
> Commit-Queue: Sigurður Ásgeirsson <[email protected]>
> Reviewed-by: Sigurður Ásgeirsson <[email protected]>
> Cr-Commit-Position: refs/heads/master@{#738160}
[email protected],[email protected]
Change-Id: Ibc5ac277917d191b1033d45e2201e11b653e754e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2035965
Reviewed-by: Marc Treib <[email protected]>
Commit-Queue: Marc Treib <[email protected]>
Cr-Commit-Position: refs/heads/master@{#738208}
diff --git a/components/performance_manager/worker_watcher.cc b/components/performance_manager/worker_watcher.cc
index ac86ff0b..7d843911 100644
--- a/components/performance_manager/worker_watcher.cc
+++ b/components/performance_manager/worker_watcher.cc
@@ -47,27 +47,21 @@
WorkerWatcher::WorkerWatcher(
const std::string& browser_context_id,
- content::DedicatedWorkerService* dedicated_worker_service,
content::SharedWorkerService* shared_worker_service,
ProcessNodeSource* process_node_source,
FrameNodeSource* frame_node_source)
: browser_context_id_(browser_context_id),
- dedicated_worker_service_observer_(this),
shared_worker_service_observer_(this),
process_node_source_(process_node_source),
frame_node_source_(frame_node_source) {
- DCHECK(dedicated_worker_service);
DCHECK(shared_worker_service);
DCHECK(process_node_source_);
DCHECK(frame_node_source_);
- dedicated_worker_service_observer_.Add(dedicated_worker_service);
shared_worker_service_observer_.Add(shared_worker_service);
}
WorkerWatcher::~WorkerWatcher() {
DCHECK(frame_node_child_workers_.empty());
- DCHECK(dedicated_worker_nodes_.empty());
- DCHECK(!dedicated_worker_service_observer_.IsObservingSources());
DCHECK(shared_worker_nodes_.empty());
DCHECK(!shared_worker_service_observer_.IsObservingSources());
}
@@ -93,58 +87,17 @@
// Then clean all the worker nodes.
std::vector<std::unique_ptr<NodeBase>> nodes;
- nodes.reserve(dedicated_worker_nodes_.size() + shared_worker_nodes_.size());
- for (auto& node : dedicated_worker_nodes_)
- nodes.push_back(std::move(node.second));
- dedicated_worker_nodes_.clear();
+ nodes.reserve(shared_worker_nodes_.size());
for (auto& node : shared_worker_nodes_)
nodes.push_back(std::move(node.second));
shared_worker_nodes_.clear();
PerformanceManagerImpl::GetInstance()->BatchDeleteNodes(std::move(nodes));
- dedicated_worker_service_observer_.RemoveAll();
shared_worker_service_observer_.RemoveAll();
}
void WorkerWatcher::OnWorkerStarted(
- content::DedicatedWorkerId dedicated_worker_id,
- int worker_process_id,
- content::GlobalFrameRoutingId ancestor_render_frame_host_id) {
- // TODO(https://crbug.com/993029): Plumb through the URL and the DevTools
- // token.
- auto worker_node = PerformanceManagerImpl::GetInstance()->CreateWorkerNode(
- browser_context_id_, WorkerNode::WorkerType::kDedicated,
- process_node_source_->GetProcessNode(worker_process_id), GURL(),
- base::UnguessableToken::Create());
- bool inserted = dedicated_worker_nodes_
- .emplace(dedicated_worker_id, std::move(worker_node))
- .second;
- DCHECK(inserted);
-
- AddClientFrame(GetDedicatedWorkerNode(dedicated_worker_id),
- ancestor_render_frame_host_id);
-}
-
-void WorkerWatcher::OnBeforeWorkerTerminated(
- content::DedicatedWorkerId dedicated_worker_id,
- content::GlobalFrameRoutingId ancestor_render_frame_host_id) {
- RemoveClientFrame(GetDedicatedWorkerNode(dedicated_worker_id),
- ancestor_render_frame_host_id);
-
- auto it = dedicated_worker_nodes_.find(dedicated_worker_id);
- DCHECK(it != dedicated_worker_nodes_.end());
-
- auto worker_node = std::move(it->second);
-#if DCHECK_IS_ON()
- DCHECK(!base::Contains(clients_to_remove_, worker_node.get()));
-#endif // DCHECK_IS_ON()
- PerformanceManagerImpl::GetInstance()->DeleteNode(std::move(worker_node));
-
- dedicated_worker_nodes_.erase(it);
-}
-
-void WorkerWatcher::OnWorkerStarted(
const content::SharedWorkerInstance& instance,
int worker_process_id,
const base::UnguessableToken& dev_tools_token) {
@@ -174,41 +127,31 @@
void WorkerWatcher::OnClientAdded(
const content::SharedWorkerInstance& instance,
content::GlobalFrameRoutingId render_frame_host_id) {
- AddClientFrame(GetSharedWorkerNode(instance), render_frame_host_id);
-}
-
-void WorkerWatcher::OnClientRemoved(
- const content::SharedWorkerInstance& instance,
- content::GlobalFrameRoutingId render_frame_host_id) {
- RemoveClientFrame(GetSharedWorkerNode(instance), render_frame_host_id);
-}
-
-void WorkerWatcher::AddClientFrame(
- WorkerNodeImpl* worker_node,
- content::GlobalFrameRoutingId client_render_frame_host_id) {
FrameNodeImpl* frame_node =
- frame_node_source_->GetFrameNode(client_render_frame_host_id);
+ frame_node_source_->GetFrameNode(render_frame_host_id);
DCHECK(frame_node);
// Connect the nodes in the PM graph.
+ WorkerNodeImpl* worker_node = GetSharedWorkerNode(instance);
PerformanceManagerImpl::CallOnGraphImpl(
FROM_HERE,
base::BindOnce(&AddWorkerToFrameNode, frame_node, worker_node));
// Keep track of the shared workers that this frame is a client to.
- if (AddChildWorker(client_render_frame_host_id, worker_node)) {
+ if (AddChildWorker(render_frame_host_id, worker_node)) {
frame_node_source_->SubscribeToFrameNode(
- client_render_frame_host_id,
+ render_frame_host_id,
base::BindOnce(&WorkerWatcher::OnBeforeFrameNodeRemoved,
- base::Unretained(this), client_render_frame_host_id));
+ base::Unretained(this), render_frame_host_id));
}
}
-void WorkerWatcher::RemoveClientFrame(
- WorkerNodeImpl* worker_node,
- content::GlobalFrameRoutingId client_render_frame_host_id) {
+void WorkerWatcher::OnClientRemoved(
+ const content::SharedWorkerInstance& instance,
+ content::GlobalFrameRoutingId render_frame_host_id) {
+ WorkerNodeImpl* worker_node = GetSharedWorkerNode(instance);
FrameNodeImpl* frame_node =
- frame_node_source_->GetFrameNode(client_render_frame_host_id);
+ frame_node_source_->GetFrameNode(render_frame_host_id);
// It's possible that the frame was destroyed before receiving the
// OnClientRemoved() for all of its child shared worker. Nothing to do in
@@ -238,8 +181,8 @@
// Remove |worker_node| from the set of workers that this frame is a client
// of.
- if (RemoveChildWorker(client_render_frame_host_id, worker_node))
- frame_node_source_->UnsubscribeFromFrameNode(client_render_frame_host_id);
+ if (RemoveChildWorker(render_frame_host_id, worker_node))
+ frame_node_source_->UnsubscribeFromFrameNode(render_frame_host_id);
}
void WorkerWatcher::OnBeforeFrameNodeRemoved(
@@ -299,16 +242,6 @@
return false;
}
-WorkerNodeImpl* WorkerWatcher::GetDedicatedWorkerNode(
- content::DedicatedWorkerId dedicated_worker_id) {
- auto it = dedicated_worker_nodes_.find(dedicated_worker_id);
- if (it == dedicated_worker_nodes_.end()) {
- NOTREACHED();
- return nullptr;
- }
- return it->second.get();
-}
-
WorkerNodeImpl* WorkerWatcher::GetSharedWorkerNode(
const content::SharedWorkerInstance& instance) {
auto it = shared_worker_nodes_.find(instance);