diff --git a/chrome/browser/ui/performance_controls/performance_controls_hats_service.cc b/chrome/browser/ui/performance_controls/performance_controls_hats_service.cc index 97bc861de51c8e..0e19fcae471d81 100644 --- a/chrome/browser/ui/performance_controls/performance_controls_hats_service.cc +++ b/chrome/browser/ui/performance_controls/performance_controls_hats_service.cc @@ -25,9 +25,9 @@ PerformanceControlsHatsService::PerformanceControlsHatsService(Profile* profile) base::FeatureList::IsEnabled( performance_manager::features:: kPerformanceControlsHighEfficiencyOptOutSurvey)) { - auto* manager = performance_manager::user_tuning:: - UserPerformanceTuningManager::GetInstance(); - user_performance_tuning_manager_observation_.Observe(manager); + performance_manager::user_tuning::UserPerformanceTuningManager:: + GetInstance() + ->AddObserver(this); } local_pref_registrar_.Init(local_state); @@ -47,6 +47,15 @@ PerformanceControlsHatsService::PerformanceControlsHatsService(Profile* profile) PerformanceControlsHatsService::~PerformanceControlsHatsService() { local_pref_registrar_.RemoveAll(); + + // Can't used ScopedObservation because sometimes the + // UserPerformanceTuningManager is destroyed before this service. + if (performance_manager::user_tuning::UserPerformanceTuningManager:: + HasInstance()) { + performance_manager::user_tuning::UserPerformanceTuningManager:: + GetInstance() + ->RemoveObserver(this); + } } void PerformanceControlsHatsService::OnBatterySaverModeChange() { diff --git a/chrome/browser/ui/performance_controls/performance_controls_hats_service.h b/chrome/browser/ui/performance_controls/performance_controls_hats_service.h index 7006ec6238836e..38ed22e6614cff 100644 --- a/chrome/browser/ui/performance_controls/performance_controls_hats_service.h +++ b/chrome/browser/ui/performance_controls/performance_controls_hats_service.h @@ -5,7 +5,6 @@ #ifndef CHROME_BROWSER_UI_PERFORMANCE_CONTROLS_PERFORMANCE_CONTROLS_HATS_SERVICE_H_ #define CHROME_BROWSER_UI_PERFORMANCE_CONTROLS_PERFORMANCE_CONTROLS_HATS_SERVICE_H_ -#include "base/scoped_observation.h" #include "chrome/browser/performance_manager/public/user_tuning/user_performance_tuning_manager.h" #include "chrome/browser/profiles/profile.h" #include "components/keyed_service/core/keyed_service.h" @@ -35,11 +34,6 @@ class PerformanceControlsHatsService private: raw_ptr profile_; PrefChangeRegistrar local_pref_registrar_; - - base::ScopedObservation< - performance_manager::user_tuning::UserPerformanceTuningManager, - performance_manager::user_tuning::UserPerformanceTuningManager::Observer> - user_performance_tuning_manager_observation_{this}; }; #endif // CHROME_BROWSER_UI_PERFORMANCE_CONTROLS_PERFORMANCE_CONTROLS_HATS_SERVICE_H_