[go: nahoru, domu]

Use ScopedObservation in PageResourceMonitor

This unregisters the observer in its destructor, preventing
PageResourceMonitor from forgetting to unregister on shutdown.

(cherry picked from commit 255c8341c067b7191c9430cf39556c6f7660df56)

Bug: 327696052
Change-Id: I9eca2aa32e42f1371a792326a07790c9cd9892d8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5341335
Auto-Submit: Joe Mason <joenotcharles@google.com>
Reviewed-by: Titouan Rigoudy <titouan@chromium.org>
Commit-Queue: Titouan Rigoudy <titouan@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1268334}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5357035
Commit-Queue: Joe Mason <joenotcharles@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/6312@{#487}
Cr-Branched-From: 6711dcdae48edaf98cbc6964f90fac85b7d9986e-refs/heads/main@{#1262506}
diff --git a/chrome/browser/performance_manager/metrics/page_resource_monitor.cc b/chrome/browser/performance_manager/metrics/page_resource_monitor.cc
index 0b35766..1907b9bda 100644
--- a/chrome/browser/performance_manager/metrics/page_resource_monitor.cc
+++ b/chrome/browser/performance_manager/metrics/page_resource_monitor.cc
@@ -21,6 +21,7 @@
 #include "base/functional/bind.h"
 #include "base/functional/callback.h"
 #include "base/metrics/histogram_functions.h"
+#include "base/scoped_observation.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/system/sys_info.h"
@@ -149,7 +150,7 @@
     : resource_query_(CPUQueryBuilder()
                           .AddResourceType(ResourceType::kMemorySummary)
                           .CreateScopedQuery()) {
-  resource_query_.AddObserver(this);
+  query_observation_.Observe(&resource_query_);
   resource_query_.Start(kCollectionDelay);
   std::unique_ptr<CpuProbe> system_cpu_probe;
   if (enable_system_cpu_probe && IsCPUInterventionEvaluationLoggingEnabled()) {
diff --git a/chrome/browser/performance_manager/metrics/page_resource_monitor.h b/chrome/browser/performance_manager/metrics/page_resource_monitor.h
index ab7faf4..6f37945b4 100644
--- a/chrome/browser/performance_manager/metrics/page_resource_monitor.h
+++ b/chrome/browser/performance_manager/metrics/page_resource_monitor.h
@@ -129,6 +129,9 @@
   resource_attribution::ScopedResourceUsageQuery resource_query_
       GUARDED_BY_CONTEXT(sequence_checker_);
 
+  // Manages notificatoin subscriptions to `resource_query_`.
+  resource_attribution::ScopedQueryObservation query_observation_{this};
+
   // Timer which handles logging high CPU after a potential delay.
   base::OneShotTimer log_cpu_on_delay_timer_
       GUARDED_BY_CONTEXT(sequence_checker_);