From bcf73217bfaf1adb3b51ba42dbfc9c396e8dc1c7 Mon Sep 17 00:00:00 2001 From: Helmut Januschka <helmut@januschka.com> Date: Tue, 3 Sep 2024 23:49:18 +0000 Subject: [PATCH] Shift PowerMonitor to non static Bug: 346931324 Change-Id: I80fab35a422083c5a9db1d9ee4a2ccd34e11d32f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5806403 Reviewed-by: Peter Kasting <pkasting@chromium.org> Owners-Override: Peter Kasting <pkasting@chromium.org> Commit-Queue: Peter Kasting <pkasting@chromium.org> Cr-Commit-Position: refs/heads/main@{#1350494} --- ash/login/ui/lock_screen_media_view.cc | 6 +- base/power_monitor/power_monitor.cc | 160 +++++----- base/power_monitor/power_monitor.h | 61 ++-- .../power_monitor_device_source.cc | 2 +- .../power_monitor_device_source.h | 19 +- .../power_monitor_device_source_android.cc | 6 +- .../power_monitor_device_source_chromeos.cc | 11 +- .../power_monitor_device_source_ios.mm | 2 +- .../power_monitor_device_source_mac.mm | 6 +- .../power_monitor_device_source_stub.cc | 2 +- .../power_monitor_device_source_win.cc | 4 +- base/power_monitor/power_monitor_source.cc | 36 ++- base/power_monitor/power_monitor_source.h | 11 +- base/power_monitor/power_monitor_unittest.cc | 58 ++-- .../power_monitor/speed_limit_observer_win.cc | 4 +- base/power_monitor/speed_limit_observer_win.h | 6 +- .../thermal_state_observer_mac.h | 2 +- .../thermal_state_observer_mac.mm | 2 +- .../thread_controller_power_monitor.cc | 7 +- base/test/power_monitor_test.cc | 24 +- base/test/power_monitor_test.h | 6 +- base/threading/hang_watcher.cc | 2 +- base/timer/hi_res_timer_manager_win.cc | 12 +- base/timer/wall_clock_timer.cc | 4 +- .../login/signin/offline_signin_limiter.cc | 4 +- .../one_time_permission_provider.cc | 4 +- .../bubble/download_display_controller.cc | 4 +- .../extension_protocols_unittest.cc | 2 +- .../performance_log_source_unittest.cc | 2 +- .../media/media_foundation_service_monitor.cc | 2 +- .../metrics/perf/profile_provider_chromeos.cc | 5 +- .../metrics/tab_stats/tab_stats_tracker.cc | 9 +- .../tab_stats/tab_stats_tracker_unittest.cc | 5 +- .../usage_scenario/system_event_provider.cc | 12 +- .../test_support/fake_power_monitor_source.cc | 2 +- .../test_support/fake_power_monitor_source.h | 2 +- ..._performance_tuning_manager_environment.cc | 4 +- .../user_tuning/battery_saver_mode_manager.cc | 5 +- .../battery_saver_mode_manager_unittest.cc | 6 +- .../browser/predictors/loading_predictor.cc | 4 +- .../smart_card_permission_context.cc | 4 +- ...launch_notification_controller_unittest.cc | 2 +- .../ui/web_applications/web_app_metrics.cc | 4 +- chrome/test/base/chrome_unit_test_suite.cc | 2 +- .../feature_usage/feature_usage_metrics.cc | 4 +- .../feature_usage_metrics_unittest.cc | 5 +- .../components/timezone/timezone_resolver.cc | 4 +- .../wifi_sync_notification_controller.cc | 4 +- .../power/power_manager_client_unittest.cc | 4 +- .../scheduler/battery_status_listener.h | 2 +- .../scheduler/battery_status_listener_impl.cc | 11 +- .../scheduler/battery_status_listener_impl.h | 2 +- .../scheduler/battery_status_listener_mac.cc | 2 +- .../scheduler/battery_status_listener_mac.h | 2 +- components/nacl/loader/nacl_main.cc | 2 +- .../power_monitor_device_source_linux.cc | 2 +- .../power_monitor_device_source_linux.h | 2 +- .../viz/service/display/dc_layer_overlay.cc | 6 +- components/viz/service/main/viz_main_impl.cc | 2 +- .../service/main/viz_main_impl_unittest.cc | 7 +- content/app/content_main_runner_impl.cc | 3 +- content/browser/android/battery_metrics.cc | 9 +- content/browser/browser_main_loop.cc | 6 +- .../browser/media/browser_feature_provider.cc | 6 +- .../media/media_stream_power_logger.cc | 10 +- .../media/peer_connection_tracker_host.cc | 10 +- content/child/child_thread_impl.cc | 5 +- content/gpu/gpu_child_thread.cc | 2 +- .../shell/common/power_monitor_test_impl.cc | 4 +- content/utility/utility_main.cc | 2 +- google_apis/gcm/engine/heartbeat_manager.cc | 6 +- .../service/webgpu_decoder_impl.cc | 5 +- gpu/ipc/service/dcomp_texture_win.cc | 4 +- gpu/ipc/service/gpu_watchdog_thread.cc | 5 +- ios/web/init/web_main_loop.mm | 2 +- media/audio/mac/audio_manager_mac.cc | 8 +- media/audio/power_observer_helper.cc | 4 +- media/renderers/audio_renderer_impl.cc | 9 +- net/http/http_cache_transaction.cc | 6 +- net/http/http_network_layer.cc | 4 +- net/socket/tcp_client_socket.cc | 4 +- net/socket/tcp_client_socket_unittest.cc | 4 +- .../power_monitor_message_broadcaster.cc | 16 +- ...er_monitor_message_broadcaster_unittest.cc | 4 +- .../power_monitor_broadcast_source.cc | 2 +- .../power_monitor_broadcast_source.h | 2 +- ...power_monitor_broadcast_source_unittest.cc | 14 +- services/media_session/audio_focus_manager.cc | 4 +- .../blink/common/media/watch_time_reporter.cc | 9 +- .../presubmit/audit_non_blink_usage.py | 277 +++++++++--------- ui/aura/demo/demo_main.cc | 2 +- ui/compositor/compositor.cc | 12 +- ui/gl/swap_chain_presenter.cc | 6 +- ui/gl/vsync_thread_win.cc | 4 +- 94 files changed, 553 insertions(+), 515 deletions(-) diff --git a/ash/login/ui/lock_screen_media_view.cc b/ash/login/ui/lock_screen_media_view.cc index 9f7bf179bf3d4..a73674824146a 100644 --- a/ash/login/ui/lock_screen_media_view.cc +++ b/ash/login/ui/lock_screen_media_view.cc @@ -79,8 +79,8 @@ LockScreenMediaView::LockScreenMediaView( hide_media_view_callback_(hide_media_view_callback) { // Observe power events and if created in power suspended state, post // OnSuspend() call to run after LockContentsView is initialized. - if (base::PowerMonitor::AddPowerSuspendObserverAndReturnSuspendedState( - this)) { + if (base::PowerMonitor::GetInstance() + ->AddPowerSuspendObserverAndReturnSuspendedState(this)) { base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask( FROM_HERE, base::BindOnce(&LockScreenMediaView::OnSuspend, weak_ptr_factory_.GetWeakPtr())); @@ -137,7 +137,7 @@ LockScreenMediaView::LockScreenMediaView( } LockScreenMediaView::~LockScreenMediaView() { - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } /////////////////////////////////////////////////////////////////////////////// diff --git a/base/power_monitor/power_monitor.cc b/base/power_monitor/power_monitor.cc index 510c7a6bf0797..5e1c3b9e89341 100644 --- a/base/power_monitor/power_monitor.cc +++ b/base/power_monitor/power_monitor.cc @@ -16,62 +16,50 @@ namespace base { void PowerMonitor::Initialize(std::unique_ptr<PowerMonitorSource> source) { DCHECK(!IsInitialized()); - PowerMonitor* power_monitor = GetInstance(); - power_monitor->source_ = std::move(source); + source_ = std::move(source); // When a power source is associated with the power monitor, ensure the // initial state is propagated to observers, if needed. - PowerMonitor::NotifyPowerStateChange( - PowerMonitor::Source()->GetBatteryPowerStatus()); + NotifyPowerStateChange(Source()->GetBatteryPowerStatus()); - PowerMonitor::PowerMonitor::NotifyThermalStateChange( - PowerMonitor::Source()->GetCurrentThermalState()); + NotifyThermalStateChange(Source()->GetCurrentThermalState()); - PowerMonitor::PowerMonitor::NotifySpeedLimitChange( - PowerMonitor::Source()->GetInitialSpeedLimit()); + NotifySpeedLimitChange(Source()->GetInitialSpeedLimit()); } -bool PowerMonitor::IsInitialized() { - return GetInstance()->source_.get() != nullptr; +bool PowerMonitor::IsInitialized() const { + return source_ != nullptr; } -// static void PowerMonitor::AddPowerSuspendObserver(PowerSuspendObserver* obs) { - GetInstance()->power_suspend_observers_->AddObserver(obs); + power_suspend_observers_->AddObserver(obs); } -// static void PowerMonitor::RemovePowerSuspendObserver(PowerSuspendObserver* obs) { - GetInstance()->power_suspend_observers_->RemoveObserver(obs); + power_suspend_observers_->RemoveObserver(obs); } -// static void PowerMonitor::AddPowerStateObserver(PowerStateObserver* obs) { - GetInstance()->power_state_observers_->AddObserver(obs); + power_state_observers_->AddObserver(obs); } -// static void PowerMonitor::RemovePowerStateObserver(PowerStateObserver* obs) { - GetInstance()->power_state_observers_->RemoveObserver(obs); + power_state_observers_->RemoveObserver(obs); } -// static void PowerMonitor::AddPowerThermalObserver(PowerThermalObserver* obs) { - GetInstance()->thermal_state_observers_->AddObserver(obs); + thermal_state_observers_->AddObserver(obs); } -// static void PowerMonitor::RemovePowerThermalObserver(PowerThermalObserver* obs) { - GetInstance()->thermal_state_observers_->RemoveObserver(obs); + thermal_state_observers_->RemoveObserver(obs); } -// static bool PowerMonitor::AddPowerSuspendObserverAndReturnSuspendedState( PowerSuspendObserver* obs) { - PowerMonitor* power_monitor = GetInstance(); - AutoLock auto_lock(power_monitor->is_system_suspended_lock_); - power_monitor->power_suspend_observers_->AddObserver(obs); - return power_monitor->is_system_suspended_; + AutoLock auto_lock(is_system_suspended_lock_); + power_suspend_observers_->AddObserver(obs); + return is_system_suspended_; } // static @@ -84,84 +72,79 @@ bool PowerMonitor::AddPowerStateObserverAndReturnOnBatteryState( PowerStateObserver::BatteryPowerStatus PowerMonitor::AddPowerStateObserverAndReturnBatteryPowerStatus( PowerStateObserver* obs) { - PowerMonitor* power_monitor = GetInstance(); - AutoLock auto_lock(power_monitor->battery_power_status_lock_); - power_monitor->power_state_observers_->AddObserver(obs); - return power_monitor->battery_power_status_; + AutoLock auto_lock(battery_power_status_lock_); + power_state_observers_->AddObserver(obs); + return battery_power_status_; } // static PowerThermalObserver::DeviceThermalState PowerMonitor::AddPowerStateObserverAndReturnPowerThermalState( PowerThermalObserver* obs) { - PowerMonitor* power_monitor = GetInstance(); - AutoLock auto_lock(power_monitor->power_thermal_state_lock_); - power_monitor->thermal_state_observers_->AddObserver(obs); - return power_monitor->power_thermal_state_; + AutoLock auto_lock(power_thermal_state_lock_); + thermal_state_observers_->AddObserver(obs); + return power_thermal_state_; } -PowerMonitorSource* PowerMonitor::Source() { - return GetInstance()->source_.get(); +const PowerMonitorSource* PowerMonitor::Source() const { + return source_.get(); } -bool PowerMonitor::IsOnBatteryPower() { +bool PowerMonitor::IsOnBatteryPower() const { DCHECK(IsInitialized()); return GetBatteryPowerStatus() == PowerStateObserver::BatteryPowerStatus::kBatteryPower; } -PowerStateObserver::BatteryPowerStatus PowerMonitor::GetBatteryPowerStatus() { +PowerStateObserver::BatteryPowerStatus PowerMonitor::GetBatteryPowerStatus() + const { DCHECK(IsInitialized()); - PowerMonitor* power_monitor = GetInstance(); - AutoLock auto_lock(power_monitor->battery_power_status_lock_); - return power_monitor->battery_power_status_; + AutoLock auto_lock(battery_power_status_lock_); + return battery_power_status_; } -TimeTicks PowerMonitor::GetLastSystemResumeTime() { - PowerMonitor* power_monitor = GetInstance(); - AutoLock auto_lock(power_monitor->is_system_suspended_lock_); - return power_monitor->last_system_resume_time_; +TimeTicks PowerMonitor::GetLastSystemResumeTime() const { + AutoLock auto_lock(is_system_suspended_lock_); + return last_system_resume_time_; } void PowerMonitor::ShutdownForTesting() { - GetInstance()->source_ = nullptr; + source_ = nullptr; - PowerMonitor* power_monitor = GetInstance(); { - AutoLock auto_lock(power_monitor->is_system_suspended_lock_); - power_monitor->is_system_suspended_ = false; - power_monitor->last_system_resume_time_ = TimeTicks(); + AutoLock auto_lock(is_system_suspended_lock_); + is_system_suspended_ = false; + last_system_resume_time_ = TimeTicks(); } { - AutoLock auto_lock(power_monitor->battery_power_status_lock_); - power_monitor->battery_power_status_ = + AutoLock auto_lock(battery_power_status_lock_); + battery_power_status_ = PowerStateObserver::BatteryPowerStatus::kExternalPower; } { - AutoLock auto_lock(power_monitor->power_thermal_state_lock_); - power_monitor->power_thermal_state_ = - PowerThermalObserver::DeviceThermalState::kUnknown; + AutoLock auto_lock(power_thermal_state_lock_); + power_thermal_state_ = PowerThermalObserver::DeviceThermalState::kUnknown; } } // static -PowerThermalObserver::DeviceThermalState -PowerMonitor::GetCurrentThermalState() { +PowerThermalObserver::DeviceThermalState PowerMonitor::GetCurrentThermalState() + const { DCHECK(IsInitialized()); - return GetInstance()->source_->GetCurrentThermalState(); + return source_->GetCurrentThermalState(); } // static void PowerMonitor::SetCurrentThermalState( PowerThermalObserver::DeviceThermalState state) { DCHECK(IsInitialized()); - GetInstance()->source_->SetCurrentThermalState(state); + source_->SetCurrentThermalState(state); } #if BUILDFLAG(IS_ANDROID) -int PowerMonitor::GetRemainingBatteryCapacity() { +int PowerMonitor::GetRemainingBatteryCapacity() const { DCHECK(IsInitialized()); - return PowerMonitor::Source()->GetRemainingBatteryCapacity(); + return Source()->GetRemainingBatteryCapacity(); } #endif // BUILDFLAG(IS_ANDROID) @@ -188,11 +171,10 @@ void PowerMonitor::NotifyPowerStateChange( << " battery"; } - PowerMonitor* power_monitor = GetInstance(); - AutoLock auto_lock(power_monitor->battery_power_status_lock_); - if (power_monitor->battery_power_status_ != battery_power_status) { - power_monitor->battery_power_status_ = battery_power_status; - GetInstance()->power_state_observers_->Notify( + AutoLock auto_lock(battery_power_status_lock_); + if (battery_power_status_ != battery_power_status) { + battery_power_status_ = battery_power_status; + power_state_observers_->Notify( FROM_HERE, &PowerStateObserver::OnBatteryPowerStatusChange, battery_power_status); } @@ -204,13 +186,12 @@ void PowerMonitor::NotifySuspend() { TRACE_EVENT_SCOPE_PROCESS); DVLOG(1) << "Power Suspending"; - PowerMonitor* power_monitor = GetInstance(); - AutoLock auto_lock(power_monitor->is_system_suspended_lock_); - if (!power_monitor->is_system_suspended_) { - power_monitor->is_system_suspended_ = true; - power_monitor->last_system_resume_time_ = TimeTicks::Max(); - GetInstance()->power_suspend_observers_->Notify( - FROM_HERE, &PowerSuspendObserver::OnSuspend); + AutoLock auto_lock(is_system_suspended_lock_); + if (!is_system_suspended_) { + is_system_suspended_ = true; + last_system_resume_time_ = TimeTicks::Max(); + power_suspend_observers_->Notify(FROM_HERE, + &PowerSuspendObserver::OnSuspend); } } @@ -222,13 +203,12 @@ void PowerMonitor::NotifyResume() { TimeTicks resume_time = TimeTicks::Now(); - PowerMonitor* power_monitor = GetInstance(); - AutoLock auto_lock(power_monitor->is_system_suspended_lock_); - if (power_monitor->is_system_suspended_) { - power_monitor->is_system_suspended_ = false; - power_monitor->last_system_resume_time_ = resume_time; - GetInstance()->power_suspend_observers_->Notify( - FROM_HERE, &PowerSuspendObserver::OnResume); + AutoLock auto_lock(is_system_suspended_lock_); + if (is_system_suspended_) { + is_system_suspended_ = false; + last_system_resume_time_ = resume_time; + power_suspend_observers_->Notify(FROM_HERE, + &PowerSuspendObserver::OnResume); } } @@ -238,11 +218,10 @@ void PowerMonitor::NotifyThermalStateChange( DVLOG(1) << "ThermalStateChange: " << PowerMonitorSource::DeviceThermalStateToString(new_state); - PowerMonitor* power_monitor = GetInstance(); - AutoLock auto_lock(power_monitor->power_thermal_state_lock_); - if (power_monitor->power_thermal_state_ != new_state) { - power_monitor->power_thermal_state_ = new_state; - GetInstance()->thermal_state_observers_->Notify( + AutoLock auto_lock(power_thermal_state_lock_); + if (power_thermal_state_ != new_state) { + power_thermal_state_ = new_state; + thermal_state_observers_->Notify( FROM_HERE, &PowerThermalObserver::OnThermalStateChange, new_state); } } @@ -251,11 +230,10 @@ void PowerMonitor::NotifySpeedLimitChange(int speed_limit) { DCHECK(IsInitialized()); DVLOG(1) << "SpeedLimitChange: " << speed_limit; - PowerMonitor* power_monitor = GetInstance(); - AutoLock auto_lock(power_monitor->power_thermal_state_lock_); - if (power_monitor->speed_limit_ != speed_limit) { - power_monitor->speed_limit_ = speed_limit; - GetInstance()->thermal_state_observers_->Notify( + AutoLock auto_lock(power_thermal_state_lock_); + if (speed_limit_ != speed_limit) { + speed_limit_ = speed_limit; + thermal_state_observers_->Notify( FROM_HERE, &PowerThermalObserver::OnSpeedLimitChange, speed_limit); } } diff --git a/base/power_monitor/power_monitor.h b/base/power_monitor/power_monitor.h index 732d0bb7dc0c1..ace480ff9c2fa 100644 --- a/base/power_monitor/power_monitor.h +++ b/base/power_monitor/power_monitor.h @@ -26,11 +26,13 @@ class PowerMonitorSource; // of test contexts where the PowerMonitor global is never created. class BASE_EXPORT PowerMonitor { public: + static PowerMonitor* GetInstance(); + // Initializes global PowerMonitor state. Takes ownership of |source|, which // will be leaked on process teardown. May only be called once. Not threadsafe // - no other PowerMonitor methods may be called on any thread while calling // Initialize(). |source| must not be nullptr. - static void Initialize(std::unique_ptr<PowerMonitorSource> source); + void Initialize(std::unique_ptr<PowerMonitorSource> source); PowerMonitor(const PowerMonitor&) = delete; PowerMonitor& operator=(const PowerMonitor&) = delete; @@ -38,7 +40,7 @@ class BASE_EXPORT PowerMonitor { // Returns true if Initialize() has been called. Safe to call on any thread, // but must not be called while Initialize() or ShutdownForTesting() is being // invoked. - static bool IsInitialized(); + bool IsInitialized() const; // Add and remove an observer. // Can be called from any thread. |observer| is notified on the sequence @@ -47,12 +49,12 @@ class BASE_EXPORT PowerMonitor { // // It is safe to add observers before the PowerMonitor is initialized. It is // safe to remove an observer even if it was not added as an observer. - static void AddPowerSuspendObserver(PowerSuspendObserver* observer); - static void RemovePowerSuspendObserver(PowerSuspendObserver* observer); - static void AddPowerStateObserver(PowerStateObserver* observer); - static void RemovePowerStateObserver(PowerStateObserver* observer); - static void AddPowerThermalObserver(PowerThermalObserver* observer); - static void RemovePowerThermalObserver(PowerThermalObserver* observer); + void AddPowerSuspendObserver(PowerSuspendObserver* observer); + void RemovePowerSuspendObserver(PowerSuspendObserver* observer); + void AddPowerStateObserver(PowerStateObserver* observer); + void RemovePowerStateObserver(PowerStateObserver* observer); + void AddPowerThermalObserver(PowerThermalObserver* observer); + void RemovePowerThermalObserver(PowerThermalObserver* observer); // Atomically add a PowerSuspendObserver and read the current power suspended // state. This variant must be used to avoid race between adding an observer @@ -61,54 +63,53 @@ class BASE_EXPORT PowerMonitor { // if (PowerMonitor::IsSystemSuspended()) { ... } // // Returns true if the system is currently suspended. - static bool AddPowerSuspendObserverAndReturnSuspendedState( + bool AddPowerSuspendObserverAndReturnSuspendedState( PowerSuspendObserver* observer); // Returns true if the system is on-battery. - static bool AddPowerStateObserverAndReturnOnBatteryState( + bool AddPowerStateObserverAndReturnOnBatteryState( PowerStateObserver* observer); - static PowerStateObserver::BatteryPowerStatus + PowerStateObserver::BatteryPowerStatus AddPowerStateObserverAndReturnBatteryPowerStatus( PowerStateObserver* observer); // Returns the power thermal state. - static PowerThermalObserver::DeviceThermalState + PowerThermalObserver::DeviceThermalState AddPowerStateObserverAndReturnPowerThermalState( PowerThermalObserver* observer); // Is the computer currently on battery power. May only be called if the // PowerMonitor has been initialized. - static bool IsOnBatteryPower(); + bool IsOnBatteryPower() const; // Returns the current state of the battery power, that can be unknown if the // value isn't initialized yet. May only be called if the PowerMonitor has // been initialized. - static PowerStateObserver::BatteryPowerStatus GetBatteryPowerStatus(); + PowerStateObserver::BatteryPowerStatus GetBatteryPowerStatus() const; // Returns the time of the last system resume. If no system suspend/resume was // observed, returns an empty time. If the system is currently suspended, // returns TimeTicks::Max(). - static TimeTicks GetLastSystemResumeTime(); + TimeTicks GetLastSystemResumeTime() const; // Read the current DeviceThermalState if known. Can be called on any thread. // May only be called if the PowerMonitor has been initialized. - static PowerThermalObserver::DeviceThermalState GetCurrentThermalState(); + PowerThermalObserver::DeviceThermalState GetCurrentThermalState() const; // Update the result of thermal state. - static void SetCurrentThermalState( - PowerThermalObserver::DeviceThermalState state); + void SetCurrentThermalState(PowerThermalObserver::DeviceThermalState state); #if BUILDFLAG(IS_ANDROID) // Read and return the current remaining battery capacity (microampere-hours). // Only supported with a device power source (i.e. not in child processes in // Chrome) and on devices with Android >= Lollipop as well as a power supply // that supports this counter. Returns 0 if unsupported. - static int GetRemainingBatteryCapacity(); + int GetRemainingBatteryCapacity() const; #endif // BUILDFLAG(IS_ANDROID) // Uninitializes the PowerMonitor. Should be called at the end of any unit // test that mocks out the PowerMonitor, to avoid affecting subsequent tests. // There must be no live observers when invoked. Safe to call even if the // PowerMonitor hasn't been initialized. - static void ShutdownForTesting(); + void ShutdownForTesting(); private: friend class PowerMonitorSource; @@ -117,27 +118,25 @@ class BASE_EXPORT PowerMonitor { PowerMonitor(); ~PowerMonitor(); - static PowerMonitorSource* Source(); + const PowerMonitorSource* Source() const; - static void NotifyPowerStateChange(bool on_battery_power); - static void NotifyPowerStateChange( + void NotifyPowerStateChange(bool on_battery_power); + void NotifyPowerStateChange( PowerStateObserver::BatteryPowerStatus battery_power_status); - static void NotifySuspend(); - static void NotifyResume(); - static void NotifyThermalStateChange( + void NotifySuspend(); + void NotifyResume(); + void NotifyThermalStateChange( PowerThermalObserver::DeviceThermalState new_state); - static void NotifySpeedLimitChange(int speed_limit); - - static PowerMonitor* GetInstance(); + void NotifySpeedLimitChange(int speed_limit); bool is_system_suspended_ GUARDED_BY(is_system_suspended_lock_) = false; - Lock is_system_suspended_lock_; + mutable Lock is_system_suspended_lock_; TimeTicks last_system_resume_time_ GUARDED_BY(is_system_suspended_lock_); PowerStateObserver::BatteryPowerStatus battery_power_status_ GUARDED_BY(battery_power_status_lock_) = PowerStateObserver::BatteryPowerStatus::kExternalPower; - Lock battery_power_status_lock_; + mutable Lock battery_power_status_lock_; PowerThermalObserver::DeviceThermalState power_thermal_state_ GUARDED_BY(power_thermal_state_lock_) = diff --git a/base/power_monitor/power_monitor_device_source.cc b/base/power_monitor/power_monitor_device_source.cc index 740c6e98eb727..03486eb505902 100644 --- a/base/power_monitor/power_monitor_device_source.cc +++ b/base/power_monitor/power_monitor_device_source.cc @@ -8,7 +8,7 @@ namespace base { -bool PowerMonitorDeviceSource::IsOnBatteryPower() { +bool PowerMonitorDeviceSource::IsOnBatteryPower() const { return GetBatteryPowerStatus() == PowerStateObserver::BatteryPowerStatus::kBatteryPower; } diff --git a/base/power_monitor/power_monitor_device_source.h b/base/power_monitor/power_monitor_device_source.h index d57b511687e24..02a55c7bd51a9 100644 --- a/base/power_monitor/power_monitor_device_source.h +++ b/base/power_monitor/power_monitor_device_source.h @@ -62,7 +62,8 @@ class BASE_EXPORT PowerMonitorDeviceSource : public PowerMonitorSource { // These two methods is used for handling thermal state update requests, such // as asking for initial state when starting lisitening to thermal change. - PowerThermalObserver::DeviceThermalState GetCurrentThermalState() override; + PowerThermalObserver::DeviceThermalState GetCurrentThermalState() + const override; void SetCurrentThermalState( PowerThermalObserver::DeviceThermalState state) override; #endif @@ -109,29 +110,31 @@ class BASE_EXPORT PowerMonitorDeviceSource : public PowerMonitorSource { // Platform-specific method to check whether the system is currently // running on battery power. Returns true if running on batteries, // false otherwise. - bool IsOnBatteryPower() final; + bool IsOnBatteryPower() const final; // Platform-specific method to check whether the system is currently // running on battery power. Returns kBatteryPower if running on battery, // kExternalPower if running on external power or kUnknown if the power // state is unknown (for example, during early process lifetime when the // state hasn't been obtained yet). - PowerStateObserver::BatteryPowerStatus GetBatteryPowerStatus(); + PowerStateObserver::BatteryPowerStatus GetBatteryPowerStatus() const; #if BUILDFLAG(IS_ANDROID) - PowerThermalObserver::DeviceThermalState GetCurrentThermalState() override; - int GetRemainingBatteryCapacity() override; + PowerThermalObserver::DeviceThermalState GetCurrentThermalState() + const override; + int GetRemainingBatteryCapacity() const override; #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) // PowerMonitorSource: - int GetInitialSpeedLimit() override; + int GetInitialSpeedLimit() const override; #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_MAC) // PowerMonitorSource: - PowerThermalObserver::DeviceThermalState GetCurrentThermalState() override; - int GetInitialSpeedLimit() override; + PowerThermalObserver::DeviceThermalState GetCurrentThermalState() + const override; + int GetInitialSpeedLimit() const override; // Retrieves the current battery state to update `is_on_battery_`. void GetBatteryState(); diff --git a/base/power_monitor/power_monitor_device_source_android.cc b/base/power_monitor/power_monitor_device_source_android.cc index 2395be4c08443..891b1653c4106 100644 --- a/base/power_monitor/power_monitor_device_source_android.cc +++ b/base/power_monitor/power_monitor_device_source_android.cc @@ -83,20 +83,20 @@ void JNI_PowerMonitor_OnThermalStatusChanged(JNIEnv* env, int thermal_status) { } // namespace android PowerStateObserver::BatteryPowerStatus -PowerMonitorDeviceSource::GetBatteryPowerStatus() { +PowerMonitorDeviceSource::GetBatteryPowerStatus() const { JNIEnv* env = jni_zero::AttachCurrentThread(); int battery_power = base::android::Java_PowerMonitor_getBatteryPowerStatus(env); return static_cast<PowerStateObserver::BatteryPowerStatus>(battery_power); } -int PowerMonitorDeviceSource::GetRemainingBatteryCapacity() { +int PowerMonitorDeviceSource::GetRemainingBatteryCapacity() const { JNIEnv* env = jni_zero::AttachCurrentThread(); return base::android::Java_PowerMonitor_getRemainingBatteryCapacity(env); } PowerThermalObserver::DeviceThermalState -PowerMonitorDeviceSource::GetCurrentThermalState() { +PowerMonitorDeviceSource::GetCurrentThermalState() const { JNIEnv* env = jni_zero::AttachCurrentThread(); return android::MapToDeviceThermalState( android::Java_PowerMonitor_getCurrentThermalStatus(env)); diff --git a/base/power_monitor/power_monitor_device_source_chromeos.cc b/base/power_monitor/power_monitor_device_source_chromeos.cc index 24487ba3125c0..68c4f14b0d83a 100644 --- a/base/power_monitor/power_monitor_device_source_chromeos.cc +++ b/base/power_monitor/power_monitor_device_source_chromeos.cc @@ -38,23 +38,24 @@ void PowerMonitorDeviceSource::HandleSystemResumed() { } PowerStateObserver::BatteryPowerStatus -PowerMonitorDeviceSource::GetBatteryPowerStatus() { +PowerMonitorDeviceSource::GetBatteryPowerStatus() const { return g_battery_power_status; } // static void PowerMonitorDeviceSource::ThermalEventReceived( PowerThermalObserver::DeviceThermalState state) { - if (!PowerMonitor::IsInitialized()) { - PowerMonitor::Initialize(std::make_unique<PowerMonitorDeviceSource>()); + auto* power_monitor = base::PowerMonitor::GetInstance(); + if (!power_monitor->IsInitialized()) { + power_monitor->Initialize(std::make_unique<PowerMonitorDeviceSource>()); } - PowerMonitor::SetCurrentThermalState(state); + power_monitor->SetCurrentThermalState(state); ProcessThermalEvent(state); } PowerThermalObserver::DeviceThermalState -PowerMonitorDeviceSource::GetCurrentThermalState() { +PowerMonitorDeviceSource::GetCurrentThermalState() const { return current_thermal_state_; } diff --git a/base/power_monitor/power_monitor_device_source_ios.mm b/base/power_monitor/power_monitor_device_source_ios.mm index 5b1abad2453b3..9dbbd82e4b83b 100644 --- a/base/power_monitor/power_monitor_device_source_ios.mm +++ b/base/power_monitor/power_monitor_device_source_ios.mm @@ -11,7 +11,7 @@ namespace base { PowerStateObserver::BatteryPowerStatus -PowerMonitorDeviceSource::GetBatteryPowerStatus() { +PowerMonitorDeviceSource::GetBatteryPowerStatus() const { #if TARGET_IPHONE_SIMULATOR return PowerStateObserver::BatteryPowerStatus::kExternalPower; #else diff --git a/base/power_monitor/power_monitor_device_source_mac.mm b/base/power_monitor/power_monitor_device_source_mac.mm index aa2483870ca73..c34efcf2635ba 100644 --- a/base/power_monitor/power_monitor_device_source_mac.mm +++ b/base/power_monitor/power_monitor_device_source_mac.mm @@ -20,11 +20,11 @@ namespace base { PowerThermalObserver::DeviceThermalState -PowerMonitorDeviceSource::GetCurrentThermalState() { +PowerMonitorDeviceSource::GetCurrentThermalState() const { return thermal_state_observer_->GetCurrentThermalState(); } -int PowerMonitorDeviceSource::GetInitialSpeedLimit() { +int PowerMonitorDeviceSource::GetInitialSpeedLimit() const { return thermal_state_observer_->GetCurrentSpeedLimit(); } @@ -96,7 +96,7 @@ void PowerMonitorDeviceSource::PlatformDestroy() { } PowerStateObserver::BatteryPowerStatus -PowerMonitorDeviceSource::GetBatteryPowerStatus() { +PowerMonitorDeviceSource::GetBatteryPowerStatus() const { return battery_power_status_; } diff --git a/base/power_monitor/power_monitor_device_source_stub.cc b/base/power_monitor/power_monitor_device_source_stub.cc index 3a91d32ec584e..a876688ad5bd1 100644 --- a/base/power_monitor/power_monitor_device_source_stub.cc +++ b/base/power_monitor/power_monitor_device_source_stub.cc @@ -8,7 +8,7 @@ namespace base { PowerStateObserver::BatteryPowerStatus -PowerMonitorDeviceSource::GetBatteryPowerStatus() { +PowerMonitorDeviceSource::GetBatteryPowerStatus() const { return PowerStateObserver::BatteryPowerStatus::kExternalPower; } diff --git a/base/power_monitor/power_monitor_device_source_win.cc b/base/power_monitor/power_monitor_device_source_win.cc index 630da2c43eb41..bdd5c6bec2be4 100644 --- a/base/power_monitor/power_monitor_device_source_win.cc +++ b/base/power_monitor/power_monitor_device_source_win.cc @@ -76,7 +76,7 @@ void PowerMonitorDeviceSource::PlatformDestroy() { } PowerStateObserver::BatteryPowerStatus -PowerMonitorDeviceSource::GetBatteryPowerStatus() { +PowerMonitorDeviceSource::GetBatteryPowerStatus() const { SYSTEM_POWER_STATUS status; if (!::GetSystemPowerStatus(&status)) { DPLOG(ERROR) << "GetSystemPowerStatus failed"; @@ -87,7 +87,7 @@ PowerMonitorDeviceSource::GetBatteryPowerStatus() { : PowerStateObserver::BatteryPowerStatus::kExternalPower; } -int PowerMonitorDeviceSource::GetInitialSpeedLimit() { +int PowerMonitorDeviceSource::GetInitialSpeedLimit() const { // Returns the maximum value once at start. Subsequent actual values will be // provided asynchronously via callbacks instead. return PowerThermalObserver::kSpeedLimitMax; diff --git a/base/power_monitor/power_monitor_source.cc b/base/power_monitor/power_monitor_source.cc index cf79bc41f2412..fa9eadbf7eec3 100644 --- a/base/power_monitor/power_monitor_source.cc +++ b/base/power_monitor/power_monitor_source.cc @@ -15,11 +15,11 @@ PowerMonitorSource::PowerMonitorSource() = default; PowerMonitorSource::~PowerMonitorSource() = default; PowerThermalObserver::DeviceThermalState -PowerMonitorSource::GetCurrentThermalState() { +PowerMonitorSource::GetCurrentThermalState() const { return PowerThermalObserver::DeviceThermalState::kUnknown; } -int PowerMonitorSource::GetInitialSpeedLimit() { +int PowerMonitorSource::GetInitialSpeedLimit() const { return PowerThermalObserver::kSpeedLimitMax; } @@ -27,43 +27,47 @@ void PowerMonitorSource::SetCurrentThermalState( PowerThermalObserver::DeviceThermalState state) {} #if BUILDFLAG(IS_ANDROID) -int PowerMonitorSource::GetRemainingBatteryCapacity() { +int PowerMonitorSource::GetRemainingBatteryCapacity() const { return 0; } #endif // BUILDFLAG(IS_ANDROID) // static void PowerMonitorSource::ProcessPowerEvent(PowerEvent event_id) { - if (!PowerMonitor::IsInitialized()) + auto* power_monitor = base::PowerMonitor::GetInstance(); + if (!power_monitor->IsInitialized()) { return; + } switch (event_id) { case POWER_STATE_EVENT: - PowerMonitor::NotifyPowerStateChange( - PowerMonitor::Source()->GetBatteryPowerStatus()); + power_monitor->NotifyPowerStateChange( + power_monitor->Source()->GetBatteryPowerStatus()); break; case RESUME_EVENT: - PowerMonitor::NotifyResume(); - break; + power_monitor->NotifyResume(); + break; case SUSPEND_EVENT: - PowerMonitor::NotifySuspend(); - break; + power_monitor->NotifySuspend(); + break; } } // static void PowerMonitorSource::ProcessThermalEvent( PowerThermalObserver::DeviceThermalState new_thermal_state) { - if (!PowerMonitor::IsInitialized()) - return; - PowerMonitor::NotifyThermalStateChange(new_thermal_state); + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->IsInitialized()) { + power_monitor->NotifyThermalStateChange(new_thermal_state); + } } // static void PowerMonitorSource::ProcessSpeedLimitEvent(int speed_limit) { - if (!PowerMonitor::IsInitialized()) - return; - PowerMonitor::NotifySpeedLimitChange(speed_limit); + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->IsInitialized()) { + power_monitor->NotifySpeedLimitChange(speed_limit); + } } // static diff --git a/base/power_monitor/power_monitor_source.h b/base/power_monitor/power_monitor_source.h index 2fc3206db7898..afd944db19857 100644 --- a/base/power_monitor/power_monitor_source.h +++ b/base/power_monitor/power_monitor_source.h @@ -31,14 +31,15 @@ class BASE_EXPORT PowerMonitorSource { // Reads the current DeviceThermalState, if available on the platform. // Otherwise, returns kUnknown. - virtual PowerThermalObserver::DeviceThermalState GetCurrentThermalState(); + virtual PowerThermalObserver::DeviceThermalState GetCurrentThermalState() + const; // Reads the initial operating system CPU speed limit, if available on the // platform. Otherwise returns PowerThermalObserver::kSpeedLimitMax. // Only called on the main thread in PowerMonitor::Initialize(). // The actual speed limit value will be updated asynchronously via the // ProcessSpeedLimitEvent() if/when the value changes. - virtual int GetInitialSpeedLimit(); + virtual int GetInitialSpeedLimit() const; // Update the result of thermal state. virtual void SetCurrentThermalState( @@ -46,9 +47,9 @@ class BASE_EXPORT PowerMonitorSource { // Platform-specific method to check whether the system is currently // running on battery power. - virtual bool IsOnBatteryPower() = 0; + virtual bool IsOnBatteryPower() const = 0; - PowerStateObserver::BatteryPowerStatus GetBatteryPowerStatus() { + PowerStateObserver::BatteryPowerStatus GetBatteryPowerStatus() const { return IsOnBatteryPower() ? PowerStateObserver::BatteryPowerStatus::kBatteryPower : PowerStateObserver::BatteryPowerStatus::kExternalPower; @@ -56,7 +57,7 @@ class BASE_EXPORT PowerMonitorSource { #if BUILDFLAG(IS_ANDROID) // Read and return the current remaining battery capacity (microampere-hours). - virtual int GetRemainingBatteryCapacity(); + virtual int GetRemainingBatteryCapacity() const; #endif // BUILDFLAG(IS_ANDROID) static const char* DeviceThermalStateToString( diff --git a/base/power_monitor/power_monitor_unittest.cc b/base/power_monitor/power_monitor_unittest.cc index 2e118aae8e089..44e1677a8a3e1 100644 --- a/base/power_monitor/power_monitor_unittest.cc +++ b/base/power_monitor/power_monitor_unittest.cc @@ -40,10 +40,11 @@ TEST_F(PowerMonitorTest, PowerNotifications) { PowerMonitorInitialize(); PowerMonitorTestObserver observers[kObservers]; + auto* power_monitor = PowerMonitor::GetInstance(); for (auto& index : observers) { - PowerMonitor::AddPowerSuspendObserver(&index); - PowerMonitor::AddPowerStateObserver(&index); - PowerMonitor::AddPowerThermalObserver(&index); + power_monitor->AddPowerSuspendObserver(&index); + power_monitor->AddPowerStateObserver(&index); + power_monitor->AddPowerThermalObserver(&index); } // Sending resume when not suspended should have no effect. @@ -122,15 +123,16 @@ TEST_F(PowerMonitorTest, PowerNotifications) { PowerThermalObserver::DeviceThermalState::kFair); for (auto& index : observers) { - PowerMonitor::RemovePowerSuspendObserver(&index); - PowerMonitor::RemovePowerStateObserver(&index); - PowerMonitor::RemovePowerThermalObserver(&index); + power_monitor->RemovePowerSuspendObserver(&index); + power_monitor->RemovePowerStateObserver(&index); + power_monitor->RemovePowerThermalObserver(&index); } } TEST_F(PowerMonitorTest, ThermalThrottling) { PowerMonitorTestObserver observer; - PowerMonitor::AddPowerThermalObserver(&observer); + auto* power_monitor = PowerMonitor::GetInstance(); + power_monitor->AddPowerThermalObserver(&observer); PowerMonitorInitialize(); @@ -147,20 +149,21 @@ TEST_F(PowerMonitorTest, ThermalThrottling) { EXPECT_EQ(observer.last_thermal_state(), state); } - PowerMonitor::RemovePowerThermalObserver(&observer); + power_monitor->RemovePowerThermalObserver(&observer); } TEST_F(PowerMonitorTest, AddPowerSuspendObserverBeforeAndAfterInitialization) { PowerMonitorTestObserver observer1; PowerMonitorTestObserver observer2; + auto* power_monitor = PowerMonitor::GetInstance(); // An observer is added before the PowerMonitor initialization. - PowerMonitor::AddPowerSuspendObserver(&observer1); + power_monitor->AddPowerSuspendObserver(&observer1); PowerMonitorInitialize(); // An observer is added after the PowerMonitor initialization. - PowerMonitor::AddPowerSuspendObserver(&observer2); + power_monitor->AddPowerSuspendObserver(&observer2); // Simulate suspend/resume notifications. source().GenerateSuspendEvent(); @@ -173,21 +176,22 @@ TEST_F(PowerMonitorTest, AddPowerSuspendObserverBeforeAndAfterInitialization) { EXPECT_EQ(observer1.resumes(), 1); EXPECT_EQ(observer2.resumes(), 1); - PowerMonitor::RemovePowerSuspendObserver(&observer1); - PowerMonitor::RemovePowerSuspendObserver(&observer2); + power_monitor->RemovePowerSuspendObserver(&observer1); + power_monitor->RemovePowerSuspendObserver(&observer2); } TEST_F(PowerMonitorTest, AddPowerStateObserverBeforeAndAfterInitialization) { PowerMonitorTestObserver observer1; PowerMonitorTestObserver observer2; + auto* power_monitor = PowerMonitor::GetInstance(); // An observer is added before the PowerMonitor initialization. - PowerMonitor::AddPowerStateObserver(&observer1); + power_monitor->AddPowerStateObserver(&observer1); PowerMonitorInitialize(); // An observer is added after the PowerMonitor initialization. - PowerMonitor::AddPowerStateObserver(&observer2); + power_monitor->AddPowerStateObserver(&observer2); // Simulate power state transitions (e.g. battery on/off). EXPECT_EQ(observer1.power_state_changes(), 0); @@ -201,41 +205,43 @@ TEST_F(PowerMonitorTest, AddPowerStateObserverBeforeAndAfterInitialization) { EXPECT_EQ(observer1.power_state_changes(), 2); EXPECT_EQ(observer2.power_state_changes(), 2); - PowerMonitor::RemovePowerStateObserver(&observer1); - PowerMonitor::RemovePowerStateObserver(&observer2); + power_monitor->RemovePowerStateObserver(&observer1); + power_monitor->RemovePowerStateObserver(&observer2); } TEST_F(PowerMonitorTest, SuspendStateReturnedFromAddObserver) { PowerMonitorTestObserver observer1; PowerMonitorTestObserver observer2; + auto* power_monitor = PowerMonitor::GetInstance(); PowerMonitorInitialize(); - EXPECT_FALSE( - PowerMonitor::AddPowerSuspendObserverAndReturnSuspendedState(&observer1)); + EXPECT_FALSE(power_monitor->AddPowerSuspendObserverAndReturnSuspendedState( + &observer1)); source().GenerateSuspendEvent(); - EXPECT_TRUE( - PowerMonitor::AddPowerSuspendObserverAndReturnSuspendedState(&observer2)); + EXPECT_TRUE(power_monitor->AddPowerSuspendObserverAndReturnSuspendedState( + &observer2)); EXPECT_EQ(observer1.suspends(), 1); EXPECT_EQ(observer2.suspends(), 0); EXPECT_EQ(observer1.resumes(), 0); EXPECT_EQ(observer2.resumes(), 0); - PowerMonitor::RemovePowerSuspendObserver(&observer1); - PowerMonitor::RemovePowerSuspendObserver(&observer2); + power_monitor->RemovePowerSuspendObserver(&observer1); + power_monitor->RemovePowerSuspendObserver(&observer2); } TEST_F(PowerMonitorTest, PowerStateReturnedFromAddObserver) { PowerMonitorTestObserver observer1; PowerMonitorTestObserver observer2; + auto* power_monitor = PowerMonitor::GetInstance(); PowerMonitorInitialize(); // An observer is added before the on-battery notification. - EXPECT_NE(PowerMonitor::AddPowerStateObserverAndReturnBatteryPowerStatus( + EXPECT_NE(power_monitor->AddPowerStateObserverAndReturnBatteryPowerStatus( &observer1), PowerStateObserver::BatteryPowerStatus::kBatteryPower); @@ -243,15 +249,15 @@ TEST_F(PowerMonitorTest, PowerStateReturnedFromAddObserver) { PowerStateObserver::BatteryPowerStatus::kBatteryPower); // An observer is added after the on-battery notification. - EXPECT_EQ(PowerMonitor::AddPowerStateObserverAndReturnBatteryPowerStatus( + EXPECT_EQ(power_monitor->AddPowerStateObserverAndReturnBatteryPowerStatus( &observer2), PowerStateObserver::BatteryPowerStatus::kBatteryPower); EXPECT_EQ(observer1.power_state_changes(), 1); EXPECT_EQ(observer2.power_state_changes(), 0); - PowerMonitor::RemovePowerStateObserver(&observer1); - PowerMonitor::RemovePowerStateObserver(&observer2); + power_monitor->RemovePowerStateObserver(&observer1); + power_monitor->RemovePowerStateObserver(&observer2); } } // namespace test diff --git a/base/power_monitor/speed_limit_observer_win.cc b/base/power_monitor/speed_limit_observer_win.cc index 20c1ea34c14ef..1ad2547bc833d 100644 --- a/base/power_monitor/speed_limit_observer_win.cc +++ b/base/power_monitor/speed_limit_observer_win.cc @@ -91,7 +91,7 @@ SpeedLimitObserverWin::~SpeedLimitObserverWin() { timer_.Stop(); } -int SpeedLimitObserverWin::GetCurrentSpeedLimit() { +int SpeedLimitObserverWin::GetCurrentSpeedLimit() const { const int kSpeedLimitMax = PowerThermalObserver::kSpeedLimitMax; int idleness_percent = 0; @@ -172,7 +172,7 @@ void SpeedLimitObserverWin::OnTimerTick() { #endif // BUILDFLAG(ENABLE_BASE_TRACING) } -float SpeedLimitObserverWin::EstimateThrottlingLevel() { +float SpeedLimitObserverWin::EstimateThrottlingLevel() const { float throttling_level = 0.f; // Populate the PROCESSOR_POWER_INFORMATION structures for all logical CPUs diff --git a/base/power_monitor/speed_limit_observer_win.h b/base/power_monitor/speed_limit_observer_win.h index 8c06b8bc396f9..ad22307c908f3 100644 --- a/base/power_monitor/speed_limit_observer_win.h +++ b/base/power_monitor/speed_limit_observer_win.h @@ -34,9 +34,9 @@ class BASE_EXPORT SpeedLimitObserverWin final { ~SpeedLimitObserverWin(); private: - int GetCurrentSpeedLimit(); + int GetCurrentSpeedLimit() const; void OnTimerTick(); - float EstimateThrottlingLevel(); + float EstimateThrottlingLevel() const; size_t num_cpus() const { return num_cpus_; } @@ -54,7 +54,7 @@ class BASE_EXPORT SpeedLimitObserverWin final { // sample rate is one sample per seconds but the existing choice is rather // ad-hoc and not based on any deeper analysis into exact frequency // characteristics of the underlying process. - MovingAverage<int, int64_t> moving_average_; + mutable MovingAverage<int, int64_t> moving_average_; // Max speed-limit value is 100 (%) and it is also used in cases where the // native Windows API(s) fail. int speed_limit_ = PowerThermalObserver::kSpeedLimitMax; diff --git a/base/power_monitor/thermal_state_observer_mac.h b/base/power_monitor/thermal_state_observer_mac.h index a6710e0b77aeb..0be6555680ac9 100644 --- a/base/power_monitor/thermal_state_observer_mac.h +++ b/base/power_monitor/thermal_state_observer_mac.h @@ -37,7 +37,7 @@ class BASE_EXPORT ThermalStateObserverMac { ~ThermalStateObserverMac(); PowerThermalObserver::DeviceThermalState GetCurrentThermalState(); - int GetCurrentSpeedLimit(); + int GetCurrentSpeedLimit() const; private: FRIEND_TEST_ALL_PREFIXES(ThermalStateObserverMacTest, StateChange); diff --git a/base/power_monitor/thermal_state_observer_mac.mm b/base/power_monitor/thermal_state_observer_mac.mm index ea51a1cab633b..76d7bac245e3d 100644 --- a/base/power_monitor/thermal_state_observer_mac.mm +++ b/base/power_monitor/thermal_state_observer_mac.mm @@ -109,7 +109,7 @@ ThermalStateObserverMac::GetCurrentThermalState() { return NSProcessInfoThermalStateToDeviceThermalState(nsinfo_state); } -int ThermalStateObserverMac::GetCurrentSpeedLimit() { +int ThermalStateObserverMac::GetCurrentSpeedLimit() const { apple::ScopedCFTypeRef<CFDictionaryRef> dictionary; IOReturn result = IOPMCopyCPUPowerStatus(dictionary.InitializeInto()); if (result != kIOReturnSuccess) { diff --git a/base/task/sequence_manager/thread_controller_power_monitor.cc b/base/task/sequence_manager/thread_controller_power_monitor.cc index ea2778d20b9d9..b98754173bbc2 100644 --- a/base/task/sequence_manager/thread_controller_power_monitor.cc +++ b/base/task/sequence_manager/thread_controller_power_monitor.cc @@ -28,18 +28,19 @@ bool g_use_thread_controller_power_monitor_ = false; ThreadControllerPowerMonitor::ThreadControllerPowerMonitor() = default; ThreadControllerPowerMonitor::~ThreadControllerPowerMonitor() { - PowerMonitor::RemovePowerSuspendObserver(this); + PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } void ThreadControllerPowerMonitor::BindToCurrentThread() { // Occasionally registration happens twice (i.e. when the // ThreadController::SetDefaultTaskRunner() re-initializes the // ThreadController). + auto* power_monitor = PowerMonitor::GetInstance(); if (is_observer_registered_) - PowerMonitor::RemovePowerSuspendObserver(this); + power_monitor->RemovePowerSuspendObserver(this); // Register the observer to deliver notifications on the current thread. - PowerMonitor::AddPowerSuspendObserver(this); + power_monitor->AddPowerSuspendObserver(this); is_observer_registered_ = true; } diff --git a/base/test/power_monitor_test.cc b/base/test/power_monitor_test.cc index be3f7d2a8730a..467d91a1f89ec 100644 --- a/base/test/power_monitor_test.cc +++ b/base/test/power_monitor_test.cc @@ -19,9 +19,10 @@ class PowerMonitorTestSource : public PowerMonitorSource { ~PowerMonitorTestSource() override = default; // Retrieve current states. - PowerThermalObserver::DeviceThermalState GetCurrentThermalState() override; - PowerStateObserver::BatteryPowerStatus GetBatteryPowerStatus(); - bool IsOnBatteryPower() override; + PowerThermalObserver::DeviceThermalState GetCurrentThermalState() + const override; + PowerStateObserver::BatteryPowerStatus GetBatteryPowerStatus() const; + bool IsOnBatteryPower() const override; // Sends asynchronous notifications to registered observers. void Suspend(); @@ -51,7 +52,7 @@ class PowerMonitorTestSource : public PowerMonitorSource { }; PowerThermalObserver::DeviceThermalState -PowerMonitorTestSource::GetCurrentThermalState() { +PowerMonitorTestSource::GetCurrentThermalState() const { return current_thermal_state_; } @@ -98,11 +99,11 @@ void PowerMonitorTestSource::GenerateResumeEvent() { } PowerStateObserver::BatteryPowerStatus -PowerMonitorTestSource::GetBatteryPowerStatus() { +PowerMonitorTestSource::GetBatteryPowerStatus() const { return test_power_status_; } -bool PowerMonitorTestSource::IsOnBatteryPower() { +bool PowerMonitorTestSource::IsOnBatteryPower() const { return test_power_status_ == PowerStateObserver::BatteryPowerStatus::kBatteryPower; } @@ -123,24 +124,25 @@ void PowerMonitorTestSource::GenerateSpeedLimitEvent(int speed_limit) { ScopedPowerMonitorTestSource::ScopedPowerMonitorTestSource() { auto power_monitor_test_source = std::make_unique<PowerMonitorTestSource>(); power_monitor_test_source_ = power_monitor_test_source.get(); - base::PowerMonitor::Initialize(std::move(power_monitor_test_source)); + base::PowerMonitor::GetInstance()->Initialize( + std::move(power_monitor_test_source)); } ScopedPowerMonitorTestSource::~ScopedPowerMonitorTestSource() { - base::PowerMonitor::ShutdownForTesting(); + base::PowerMonitor::GetInstance()->ShutdownForTesting(); } PowerThermalObserver::DeviceThermalState -ScopedPowerMonitorTestSource::GetCurrentThermalState() { +ScopedPowerMonitorTestSource::GetCurrentThermalState() const { return power_monitor_test_source_->GetCurrentThermalState(); } -bool ScopedPowerMonitorTestSource::IsOnBatteryPower() { +bool ScopedPowerMonitorTestSource::IsOnBatteryPower() const { return power_monitor_test_source_->IsOnBatteryPower(); } PowerStateObserver::BatteryPowerStatus -ScopedPowerMonitorTestSource::GetBatteryPowerStatus() { +ScopedPowerMonitorTestSource::GetBatteryPowerStatus() const { return power_monitor_test_source_->GetBatteryPowerStatus(); } diff --git a/base/test/power_monitor_test.h b/base/test/power_monitor_test.h index 32e92c68b2d0d..338c616f69ab5 100644 --- a/base/test/power_monitor_test.h +++ b/base/test/power_monitor_test.h @@ -37,9 +37,9 @@ class ScopedPowerMonitorTestSource { delete; // Retrieve current states. - PowerThermalObserver::DeviceThermalState GetCurrentThermalState(); - bool IsOnBatteryPower(); - PowerStateObserver::BatteryPowerStatus GetBatteryPowerStatus(); + PowerThermalObserver::DeviceThermalState GetCurrentThermalState() const; + bool IsOnBatteryPower() const; + PowerStateObserver::BatteryPowerStatus GetBatteryPowerStatus() const; // Sends asynchronous notifications to registered observers. void Suspend(); diff --git a/base/threading/hang_watcher.cc b/base/threading/hang_watcher.cc index 80a3c576ee36c..35ddd39a3b162 100644 --- a/base/threading/hang_watcher.cc +++ b/base/threading/hang_watcher.cc @@ -561,7 +561,7 @@ std::string HangWatcher::GetTimeSinceLastSystemPowerResumeCrashKeyValue() DCHECK_CALLED_ON_VALID_THREAD(hang_watcher_thread_checker_); const TimeTicks last_system_power_resume_time = - PowerMonitor::GetLastSystemResumeTime(); + PowerMonitor::GetInstance()->GetLastSystemResumeTime(); if (last_system_power_resume_time.is_null()) return "Never suspended"; if (last_system_power_resume_time == TimeTicks::Max()) diff --git a/base/timer/hi_res_timer_manager_win.cc b/base/timer/hi_res_timer_manager_win.cc index 12f4badff6407..4483638a9a214 100644 --- a/base/timer/hi_res_timer_manager_win.cc +++ b/base/timer/hi_res_timer_manager_win.cc @@ -40,10 +40,11 @@ HighResolutionTimerManager::HighResolutionTimerManager() // we won't receive power state change callbacks and // hi_res_clock_available_ will remain at its initial value. if (HighResolutionTimerAllowed()) { - DCHECK(PowerMonitor::IsInitialized()); - PowerMonitor::AddPowerSuspendObserver(this); + auto* power_monitor = base::PowerMonitor::GetInstance(); + DCHECK(power_monitor->IsInitialized()); + power_monitor->AddPowerSuspendObserver(this); const bool on_battery = - PowerMonitor::AddPowerStateObserverAndReturnOnBatteryState(this); + power_monitor->AddPowerStateObserverAndReturnOnBatteryState(this); UseHiResClock(!on_battery); // Start polling the high resolution timer usage. @@ -55,8 +56,9 @@ HighResolutionTimerManager::HighResolutionTimerManager() HighResolutionTimerManager::~HighResolutionTimerManager() { if (HighResolutionTimerAllowed()) { - PowerMonitor::RemovePowerSuspendObserver(this); - PowerMonitor::RemovePowerStateObserver(this); + auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->RemovePowerSuspendObserver(this); + power_monitor->RemovePowerStateObserver(this); UseHiResClock(false); } } diff --git a/base/timer/wall_clock_timer.cc b/base/timer/wall_clock_timer.cc index 8e6814a1a5849..90847b89445d4 100644 --- a/base/timer/wall_clock_timer.cc +++ b/base/timer/wall_clock_timer.cc @@ -51,14 +51,14 @@ void WallClockTimer::OnResume() { void WallClockTimer::AddObserver() { if (!observer_added_) { - PowerMonitor::AddPowerSuspendObserver(this); + PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); observer_added_ = true; } } void WallClockTimer::RemoveObserver() { if (observer_added_) { - PowerMonitor::RemovePowerSuspendObserver(this); + PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); observer_added_ = false; } } diff --git a/chrome/browser/ash/login/signin/offline_signin_limiter.cc b/chrome/browser/ash/login/signin/offline_signin_limiter.cc index 369812e5d713d..1fa0b08e7926f 100644 --- a/chrome/browser/ash/login/signin/offline_signin_limiter.cc +++ b/chrome/browser/ash/login/signin/offline_signin_limiter.cc @@ -75,7 +75,7 @@ void OfflineSigninLimiter::SignedIn(UserContext::AuthFlow auth_flow) { base::BindRepeating(&OfflineSigninLimiter::UpdateLockScreenLimit, base::Unretained(this))); // Start listening to power state. - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); // Start listening to session lock state auto* session_manager = session_manager::SessionManager::Get(); @@ -122,7 +122,7 @@ OfflineSigninLimiter::OfflineSigninLimiter(Profile* profile, std::make_unique<base::WallClockTimer>()) {} OfflineSigninLimiter::~OfflineSigninLimiter() { - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); auto* session_manager = session_manager::SessionManager::Get(); if (session_manager) { session_manager->RemoveObserver(this); diff --git a/chrome/browser/content_settings/one_time_permission_provider.cc b/chrome/browser/content_settings/one_time_permission_provider.cc index 4900b2c910757..e917a3de80df6 100644 --- a/chrome/browser/content_settings/one_time_permission_provider.cc +++ b/chrome/browser/content_settings/one_time_permission_provider.cc @@ -39,11 +39,11 @@ OneTimePermissionProvider::OneTimePermissionProvider( // main function for the browser process is run (which initializes the HCSM). // For this reason, the PowerMonitor is always initialized before the observer // is added here. - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); } OneTimePermissionProvider::~OneTimePermissionProvider() { - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } // TODO(b/307193732): handle the PartitionKey in all relevant methods, including diff --git a/chrome/browser/download/bubble/download_display_controller.cc b/chrome/browser/download/bubble/download_display_controller.cc index 4df81ca4d575e..d3c4bff0a9add 100644 --- a/chrome/browser/download/bubble/download_display_controller.cc +++ b/chrome/browser/download/bubble/download_display_controller.cc @@ -101,11 +101,11 @@ DownloadDisplayController::DownloadDisplayController( if (display) { MaybeShowButtonWhenCreated(); } - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); } DownloadDisplayController::~DownloadDisplayController() { - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } void DownloadDisplayController::OnNewItem(bool show_animation) { diff --git a/chrome/browser/extensions/extension_protocols_unittest.cc b/chrome/browser/extensions/extension_protocols_unittest.cc index d16b8036c8f14..60cfa97cbbd7d 100644 --- a/chrome/browser/extensions/extension_protocols_unittest.cc +++ b/chrome/browser/extensions/extension_protocols_unittest.cc @@ -276,7 +276,7 @@ class ExtensionProtocolsTestBase : public testing::Test, loader_factory_.reset(); content_verifier_->Shutdown(); // Shut down the PowerMonitor if initialized. - base::PowerMonitor::ShutdownForTesting(); + base::PowerMonitor::GetInstance()->ShutdownForTesting(); } GetResult RequestOrLoad(const GURL& url, diff --git a/chrome/browser/feedback/system_logs/log_sources/performance_log_source_unittest.cc b/chrome/browser/feedback/system_logs/log_sources/performance_log_source_unittest.cc index 3d1db0547ce4b..f493afb127c19 100644 --- a/chrome/browser/feedback/system_logs/log_sources/performance_log_source_unittest.cc +++ b/chrome/browser/feedback/system_logs/log_sources/performance_log_source_unittest.cc @@ -64,7 +64,7 @@ class PerformanceLogSourceTest : public BrowserWithTestWindowTest { void SetUp() override { environment_.SetUp(local_state_); } void TearDown() override { - base::PowerMonitor::ShutdownForTesting(); + base::PowerMonitor::GetInstance()->ShutdownForTesting(); environment_.TearDown(); } diff --git a/chrome/browser/media/media_foundation_service_monitor.cc b/chrome/browser/media/media_foundation_service_monitor.cc index a09ad82c688b4..9e0f202c27fce 100644 --- a/chrome/browser/media/media_foundation_service_monitor.cc +++ b/chrome/browser/media/media_foundation_service_monitor.cc @@ -300,7 +300,7 @@ void MediaFoundationServiceMonitor::Initialize() { AddGlobalSample(kSignificantPlayback, base::Time::Now()); content::ServiceProcessHost::AddObserver(this); - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); display::Screen::GetScreen()->AddObserver(this); } diff --git a/chrome/browser/metrics/perf/profile_provider_chromeos.cc b/chrome/browser/metrics/perf/profile_provider_chromeos.cc index 0386a5d5a0224..21020e57784f1 100644 --- a/chrome/browser/metrics/perf/profile_provider_chromeos.cc +++ b/chrome/browser/metrics/perf/profile_provider_chromeos.cc @@ -57,7 +57,7 @@ ProfileProvider::ProfileProvider() ProfileProvider::~ProfileProvider() { ash::LoginState::Get()->RemoveObserver(this); chromeos::PowerManagerClient::Get()->RemoveObserver(this); - base::PowerMonitor::RemovePowerThermalObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerThermalObserver(this); if (jank_monitor_) { jank_monitor_->RemoveObserver(this); jank_monitor_->Destroy(); @@ -82,7 +82,8 @@ void ProfileProvider::Init() { // Register as an observer of thermal state changes. base::PowerThermalObserver::DeviceThermalState thermal_state = - base::PowerMonitor::AddPowerStateObserverAndReturnPowerThermalState(this); + base::PowerMonitor::GetInstance() + ->AddPowerStateObserverAndReturnPowerThermalState(this); OnThermalStateChange(thermal_state); // Check the login state. At the time of writing, this class is instantiated diff --git a/chrome/browser/metrics/tab_stats/tab_stats_tracker.cc b/chrome/browser/metrics/tab_stats/tab_stats_tracker.cc index e3a12f46f98d4..618210c4f57a7 100644 --- a/chrome/browser/metrics/tab_stats/tab_stats_tracker.cc +++ b/chrome/browser/metrics/tab_stats/tab_stats_tracker.cc @@ -63,12 +63,13 @@ TabStatsTracker* g_tab_stats_tracker_instance = nullptr; void UmaHistogramCounts10000WithBatteryStateVariant(const char* histogram_name, size_t value) { - DCHECK(base::PowerMonitor::IsInitialized()); + auto* power_monitor = base::PowerMonitor::GetInstance(); + DCHECK(power_monitor->IsInitialized()); base::UmaHistogramCounts10000(histogram_name, value); const char* suffix = - base::PowerMonitor::IsOnBatteryPower() ? ".OnBattery" : ".PluggedIn"; + power_monitor->IsOnBatteryPower() ? ".OnBattery" : ".PluggedIn"; base::UmaHistogramCounts10000(base::StrCat({histogram_name, suffix}), value); } @@ -147,7 +148,7 @@ TabStatsTracker::TabStatsTracker(PrefService* pref_service) } browser_list->AddObserver(this); - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); // Setup daily reporting of the stats aggregated in |tab_stats_data_store|. daily_event_->AddObserver(std::make_unique<TabStatsDailyObserver>( @@ -169,7 +170,7 @@ TabStatsTracker::TabStatsTracker(PrefService* pref_service) TabStatsTracker::~TabStatsTracker() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); BrowserList::GetInstance()->RemoveObserver(this); - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); g_browser_process->GetTabManager()->RemoveObserver(this); } diff --git a/chrome/browser/metrics/tab_stats/tab_stats_tracker_unittest.cc b/chrome/browser/metrics/tab_stats/tab_stats_tracker_unittest.cc index b1e0151cd554f..9a217c356dfea 100644 --- a/chrome/browser/metrics/tab_stats/tab_stats_tracker_unittest.cc +++ b/chrome/browser/metrics/tab_stats/tab_stats_tracker_unittest.cc @@ -35,8 +35,9 @@ namespace { using TabsStats = TabStatsDataStore::TabsStats; std::string GetHistogramNameWithBatteryStateSuffix(const char* histogram_name) { - const char* suffix = - base::PowerMonitor::IsOnBatteryPower() ? ".OnBattery" : ".PluggedIn"; + const char* suffix = base::PowerMonitor::GetInstance()->IsOnBatteryPower() + ? ".OnBattery" + : ".PluggedIn"; return base::StrCat({histogram_name, suffix}); } diff --git a/chrome/browser/metrics/usage_scenario/system_event_provider.cc b/chrome/browser/metrics/usage_scenario/system_event_provider.cc index 6832a380f7484..3249dcb174fcb 100644 --- a/chrome/browser/metrics/usage_scenario/system_event_provider.cc +++ b/chrome/browser/metrics/usage_scenario/system_event_provider.cc @@ -9,13 +9,17 @@ SystemEventProvider::SystemEventProvider(UsageScenarioDataStoreImpl* data_store) : data_store_(data_store) { - if (base::PowerMonitor::IsInitialized()) - base::PowerMonitor::AddPowerSuspendObserver(this); + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->IsInitialized()) { + power_monitor->AddPowerSuspendObserver(this); + } } SystemEventProvider::~SystemEventProvider() { - if (base::PowerMonitor::IsInitialized()) - base::PowerMonitor::RemovePowerSuspendObserver(this); + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->IsInitialized()) { + power_monitor->RemovePowerSuspendObserver(this); + } } void SystemEventProvider::OnSuspend() { diff --git a/chrome/browser/performance_manager/test_support/fake_power_monitor_source.cc b/chrome/browser/performance_manager/test_support/fake_power_monitor_source.cc index 6f3cc177a7a36..9ff14b0057b43 100644 --- a/chrome/browser/performance_manager/test_support/fake_power_monitor_source.cc +++ b/chrome/browser/performance_manager/test_support/fake_power_monitor_source.cc @@ -6,7 +6,7 @@ namespace performance_manager { -bool FakePowerMonitorSource::IsOnBatteryPower() { +bool FakePowerMonitorSource::IsOnBatteryPower() const { return on_battery_power_; } diff --git a/chrome/browser/performance_manager/test_support/fake_power_monitor_source.h b/chrome/browser/performance_manager/test_support/fake_power_monitor_source.h index 871f061e4528c..eeb59bcff555a 100644 --- a/chrome/browser/performance_manager/test_support/fake_power_monitor_source.h +++ b/chrome/browser/performance_manager/test_support/fake_power_monitor_source.h @@ -12,7 +12,7 @@ namespace performance_manager { class FakePowerMonitorSource : public base::PowerMonitorSource { public: - bool IsOnBatteryPower() override; + bool IsOnBatteryPower() const override; void SetOnBatteryPower(bool on_battery_power); private: diff --git a/chrome/browser/performance_manager/test_support/test_user_performance_tuning_manager_environment.cc b/chrome/browser/performance_manager/test_support/test_user_performance_tuning_manager_environment.cc index ce7ea5b438b81..bde7276911742 100644 --- a/chrome/browser/performance_manager/test_support/test_user_performance_tuning_manager_environment.cc +++ b/chrome/browser/performance_manager/test_support/test_user_performance_tuning_manager_environment.cc @@ -72,7 +72,7 @@ void TestUserPerformanceTuningManagerEnvironment::SetUp( #endif auto source = std::make_unique<FakePowerMonitorSource>(); power_monitor_source_ = source.get(); - base::PowerMonitor::Initialize(std::move(source)); + base::PowerMonitor::GetInstance()->Initialize(std::move(source)); if (!sampling_event_source) { auto test_sampling_event_source = @@ -114,7 +114,7 @@ void TestUserPerformanceTuningManagerEnvironment::TearDown() { user_performance_tuning_manager_.reset(); battery_saver_mode_manager_.reset(); battery_sampler_.reset(); - base::PowerMonitor::ShutdownForTesting(); + base::PowerMonitor::GetInstance()->ShutdownForTesting(); #if BUILDFLAG(IS_CHROMEOS_ASH) if (tear_down_power_manager_client_) { chromeos::PowerManagerClient::Shutdown(); diff --git a/chrome/browser/performance_manager/user_tuning/battery_saver_mode_manager.cc b/chrome/browser/performance_manager/user_tuning/battery_saver_mode_manager.cc index 4e84a736c890c..e1a25cd93e862 100644 --- a/chrome/browser/performance_manager/user_tuning/battery_saver_mode_manager.cc +++ b/chrome/browser/performance_manager/user_tuning/battery_saver_mode_manager.cc @@ -212,7 +212,8 @@ class DesktopBatterySaverProvider base::Unretained(this))); on_battery_power_ = - base::PowerMonitor::AddPowerStateObserverAndReturnOnBatteryState(this); + base::PowerMonitor::GetInstance() + ->AddPowerStateObserverAndReturnOnBatteryState(this); base::BatteryStateSampler* battery_state_sampler = base::BatteryStateSampler::Get(); @@ -226,7 +227,7 @@ class DesktopBatterySaverProvider } ~DesktopBatterySaverProvider() override { - base::PowerMonitor::RemovePowerStateObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerStateObserver(this); } // BatterySaverProvider: diff --git a/chrome/browser/performance_manager/user_tuning/battery_saver_mode_manager_unittest.cc b/chrome/browser/performance_manager/user_tuning/battery_saver_mode_manager_unittest.cc index e1e25a2ca12bc..1d6d8e09cffaa 100644 --- a/chrome/browser/performance_manager/user_tuning/battery_saver_mode_manager_unittest.cc +++ b/chrome/browser/performance_manager/user_tuning/battery_saver_mode_manager_unittest.cc @@ -119,7 +119,7 @@ class BatterySaverModeManagerTest : public ::testing::Test { void SetUp() override { auto source = std::make_unique<FakePowerMonitorSource>(); power_monitor_source_ = source.get(); - base::PowerMonitor::Initialize(std::move(source)); + base::PowerMonitor::GetInstance()->Initialize(std::move(source)); performance_manager::user_tuning::prefs::RegisterLocalStatePrefs( local_state_.registry()); @@ -147,7 +147,9 @@ class BatterySaverModeManagerTest : public ::testing::Test { manager()->Start(); } - void TearDown() override { base::PowerMonitor::ShutdownForTesting(); } + void TearDown() override { + base::PowerMonitor::GetInstance()->ShutdownForTesting(); + } BatterySaverModeManager* manager() { return BatterySaverModeManager::GetInstance(); diff --git a/chrome/browser/predictors/loading_predictor.cc b/chrome/browser/predictors/loading_predictor.cc index 9915491f2a325..e0a8f8c9b0305 100644 --- a/chrome/browser/predictors/loading_predictor.cc +++ b/chrome/browser/predictors/loading_predictor.cc @@ -93,8 +93,8 @@ bool IsPreconnectExpensive() { #if BUILDFLAG(IS_ANDROID) // Preconnecting is expensive while on battery power and cellular data and // the radio signal is weak. - if ((base::PowerMonitor::IsInitialized() && - !base::PowerMonitor::IsOnBatteryPower()) || + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + (power_monitor->IsInitialized() && !power_monitor->IsOnBatteryPower()) || (base::android::RadioUtils::GetConnectionType() != base::android::RadioConnectionType::kCell)) { return false; diff --git a/chrome/browser/smart_card/smart_card_permission_context.cc b/chrome/browser/smart_card/smart_card_permission_context.cc index 0cf14db80dc99..fff767ec58a43 100644 --- a/chrome/browser/smart_card/smart_card_permission_context.cc +++ b/chrome/browser/smart_card/smart_card_permission_context.cc @@ -55,11 +55,11 @@ class SmartCardPermissionContext::PowerSuspendObserver public: explicit PowerSuspendObserver(SmartCardPermissionContext& permission_context) : permission_context_(permission_context) { - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); } ~PowerSuspendObserver() override { - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } void OnSuspend() override { diff --git a/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc b/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc index 31c26da559e07..1d9bd96d402dc 100644 --- a/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc +++ b/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc @@ -196,7 +196,7 @@ class RelaunchNotificationControllerTest : public ::testing::Test { // Unittests failed when the system is on battery. This class is using a // mock power monitor source `power_monitor_source_` to ensure no real // power state or power notifications are delivered to the unittests. - EXPECT_FALSE(base::PowerMonitor::IsOnBatteryPower()); + EXPECT_FALSE(base::PowerMonitor::GetInstance()->IsOnBatteryPower()); } UpgradeDetector* upgrade_detector() { return &upgrade_detector_; } diff --git a/chrome/browser/ui/web_applications/web_app_metrics.cc b/chrome/browser/ui/web_applications/web_app_metrics.cc index 7764fd0420a9c..ab02acbab4647 100644 --- a/chrome/browser/ui/web_applications/web_app_metrics.cc +++ b/chrome/browser/ui/web_applications/web_app_metrics.cc @@ -109,7 +109,7 @@ WebAppMetrics::WebAppMetrics(Profile* profile) icon_health_checks_(profile), browser_tab_strip_tracker_(this, nullptr) { browser_tab_strip_tracker_.Init(); - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); BrowserList::AddObserver(this); // This isn't around on ChromeOS or tests. if (metrics::DesktopSessionDurationTracker::IsInitialized()) { @@ -133,7 +133,7 @@ WebAppMetrics::WebAppMetrics(Profile* profile) WebAppMetrics::~WebAppMetrics() { BrowserList::RemoveObserver(this); - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); if (metrics::DesktopSessionDurationTracker::IsInitialized()) { metrics::DesktopSessionDurationTracker::Get()->RemoveObserver(this); } diff --git a/chrome/test/base/chrome_unit_test_suite.cc b/chrome/test/base/chrome_unit_test_suite.cc index a44e885deab7b..0ea9af3ad7c9d 100644 --- a/chrome/test/base/chrome_unit_test_suite.cc +++ b/chrome/test/base/chrome_unit_test_suite.cc @@ -87,7 +87,7 @@ class ChromeUnitTestSuiteInitializer : public testing::EmptyTestEventListener { void OnTestEnd(const testing::TestInfo& test_info) override { TestingBrowserProcess::TearDownAndDeleteInstance(); // Some tests cause ChildThreadImpl to initialize a PowerMonitor. - base::PowerMonitor::ShutdownForTesting(); + base::PowerMonitor::GetInstance()->ShutdownForTesting(); #if BUILDFLAG(IS_WIN) // Running tests locally on Windows machines with some degree of // accessibility enabled can cause this flag to become implicitly set. diff --git a/chromeos/ash/components/feature_usage/feature_usage_metrics.cc b/chromeos/ash/components/feature_usage/feature_usage_metrics.cc index 06891d340b58e..ee297e253d6f8 100644 --- a/chromeos/ash/components/feature_usage/feature_usage_metrics.cc +++ b/chromeos/ash/components/feature_usage/feature_usage_metrics.cc @@ -65,7 +65,7 @@ FeatureUsageMetrics::FeatureUsageMetrics(const std::string& feature_name, // Schedule the first run some time in the future to not overload startup // flow. SetupTimer(kInitialInterval); - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); } void FeatureUsageMetrics::SetupTimer(base::TimeDelta delta) { @@ -77,7 +77,7 @@ void FeatureUsageMetrics::SetupTimer(base::TimeDelta delta) { FeatureUsageMetrics::~FeatureUsageMetrics() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); MaybeReportUseTime(); } diff --git a/chromeos/ash/components/feature_usage/feature_usage_metrics_unittest.cc b/chromeos/ash/components/feature_usage/feature_usage_metrics_unittest.cc index aa4dd14abbb93..b07c581c2eb1d 100644 --- a/chromeos/ash/components/feature_usage/feature_usage_metrics_unittest.cc +++ b/chromeos/ash/components/feature_usage/feature_usage_metrics_unittest.cc @@ -31,8 +31,9 @@ class FeatureUsageMetricsTest : public ::testing::Test, public FeatureUsageMetrics::Delegate { public: FeatureUsageMetricsTest() { - if (!base::PowerMonitor::IsInitialized()) { - base::PowerMonitor::Initialize( + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + !power_monitor->IsInitialized()) { + power_monitor->Initialize( std::make_unique<base::PowerMonitorDeviceSource>()); } diff --git a/chromeos/ash/components/timezone/timezone_resolver.cc b/chromeos/ash/components/timezone/timezone_resolver.cc index 8f8072736cc03..08a194e6b56c4 100644 --- a/chromeos/ash/components/timezone/timezone_resolver.cc +++ b/chromeos/ash/components/timezone/timezone_resolver.cc @@ -269,7 +269,7 @@ TimeZoneResolver::TimeZoneResolverImpl::TimeZoneResolverImpl( DCHECK(!resolver_->apply_timezone().is_null()); DCHECK(!resolver_->delay_network_call().is_null()); - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); const int64_t last_refresh_at_us = resolver_->local_state()->GetInt64(kLastTimeZoneRefreshTime); @@ -285,7 +285,7 @@ TimeZoneResolver::TimeZoneResolverImpl::TimeZoneResolverImpl( } TimeZoneResolver::TimeZoneResolverImpl::~TimeZoneResolverImpl() { - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } void TimeZoneResolver::TimeZoneResolverImpl::Start() { diff --git a/chromeos/ash/services/multidevice_setup/wifi_sync_notification_controller.cc b/chromeos/ash/services/multidevice_setup/wifi_sync_notification_controller.cc index d2f291e1cd9cb..0eb3244a873d9 100644 --- a/chromeos/ash/services/multidevice_setup/wifi_sync_notification_controller.cc +++ b/chromeos/ash/services/multidevice_setup/wifi_sync_notification_controller.cc @@ -80,7 +80,7 @@ WifiSyncNotificationController::WifiSyncNotificationController( delegate_notifier_(delegate_notifier) { if (pref_service_->GetBoolean(kCanShowWifiSyncAnnouncementPrefName)) { session_manager::SessionManager::Get()->AddObserver(this); - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); did_register_session_observers_ = true; } } @@ -88,7 +88,7 @@ WifiSyncNotificationController::WifiSyncNotificationController( WifiSyncNotificationController::~WifiSyncNotificationController() { if (did_register_session_observers_) { session_manager::SessionManager::Get()->RemoveObserver(this); - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } } diff --git a/chromeos/dbus/power/power_manager_client_unittest.cc b/chromeos/dbus/power/power_manager_client_unittest.cc index 61605e335744d..8a1ba48824778 100644 --- a/chromeos/dbus/power/power_manager_client_unittest.cc +++ b/chromeos/dbus/power/power_manager_client_unittest.cc @@ -772,7 +772,7 @@ TEST_F(PowerManagerClientTest, ChangeAmbientColorTemperature) { TEST_F(PowerManagerClientTest, ChangeThermalState) { base::test::ScopedPowerMonitorTestSource power_monitor_source; PowerMonitorTestObserverLocal observer; - base::PowerMonitor::AddPowerThermalObserver(&observer); + base::PowerMonitor::GetInstance()->AddPowerThermalObserver(&observer); typedef struct { power_manager::ThermalEvent::ThermalState dbus_state; @@ -810,7 +810,7 @@ TEST_F(PowerManagerClientTest, ChangeThermalState) { EXPECT_EQ(observer.GetThermalState(), p.expected_state); } - base::PowerMonitor::RemovePowerThermalObserver(&observer); + base::PowerMonitor::GetInstance()->RemovePowerThermalObserver(&observer); } // Test that |RequestSuspend| calls the DBus method with the same name. diff --git a/components/download/internal/background_service/scheduler/battery_status_listener.h b/components/download/internal/background_service/scheduler/battery_status_listener.h index 7013642371dbd..28cf5474fec84 100644 --- a/components/download/internal/background_service/scheduler/battery_status_listener.h +++ b/components/download/internal/background_service/scheduler/battery_status_listener.h @@ -24,7 +24,7 @@ class BatteryStatusListener { virtual int GetBatteryPercentage() = 0; // Is the device is using battery power instead of charging. - virtual bool IsOnBatteryPower() = 0; + virtual bool IsOnBatteryPower() const = 0; // Start/Stop to listen to battery status changes. virtual void Start(Observer* observer) = 0; diff --git a/components/download/internal/background_service/scheduler/battery_status_listener_impl.cc b/components/download/internal/background_service/scheduler/battery_status_listener_impl.cc index 05d42d6d140a7..a780ab232be36 100644 --- a/components/download/internal/background_service/scheduler/battery_status_listener_impl.cc +++ b/components/download/internal/background_service/scheduler/battery_status_listener_impl.cc @@ -22,21 +22,22 @@ int BatteryStatusListenerImpl::GetBatteryPercentage() { return battery_percentage_; } -bool BatteryStatusListenerImpl::IsOnBatteryPower() { - return base::PowerMonitor::IsOnBatteryPower(); +bool BatteryStatusListenerImpl::IsOnBatteryPower() const { + return base::PowerMonitor::GetInstance()->IsOnBatteryPower(); } void BatteryStatusListenerImpl::Start(Observer* observer) { observer_ = observer; - DCHECK(base::PowerMonitor::IsInitialized()); - base::PowerMonitor::AddPowerStateObserver(this); + auto* power_monitor = base::PowerMonitor::GetInstance(); + DCHECK(power_monitor->IsInitialized()); + power_monitor->AddPowerStateObserver(this); UpdateBatteryPercentage(true); } void BatteryStatusListenerImpl::Stop() { - base::PowerMonitor::RemovePowerStateObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerStateObserver(this); } int BatteryStatusListenerImpl::GetBatteryPercentageInternal() { diff --git a/components/download/internal/background_service/scheduler/battery_status_listener_impl.h b/components/download/internal/background_service/scheduler/battery_status_listener_impl.h index d4c179a9bbb61..91f2ae8adb68b 100644 --- a/components/download/internal/background_service/scheduler/battery_status_listener_impl.h +++ b/components/download/internal/background_service/scheduler/battery_status_listener_impl.h @@ -33,7 +33,7 @@ class BatteryStatusListenerImpl : public BatteryStatusListener, private: // BatteryStatusListener implementation. int GetBatteryPercentage() override; - bool IsOnBatteryPower() override; + bool IsOnBatteryPower() const override; void Start(Observer* observer) override; void Stop() override; diff --git a/components/download/internal/background_service/scheduler/battery_status_listener_mac.cc b/components/download/internal/background_service/scheduler/battery_status_listener_mac.cc index 5feeac36930d0..9e8c4df99ed67 100644 --- a/components/download/internal/background_service/scheduler/battery_status_listener_mac.cc +++ b/components/download/internal/background_service/scheduler/battery_status_listener_mac.cc @@ -14,7 +14,7 @@ int BatteryStatusListenerMac::GetBatteryPercentage() { return 100; } -bool BatteryStatusListenerMac::IsOnBatteryPower() { +bool BatteryStatusListenerMac::IsOnBatteryPower() const { return false; } diff --git a/components/download/internal/background_service/scheduler/battery_status_listener_mac.h b/components/download/internal/background_service/scheduler/battery_status_listener_mac.h index 1915b86d31016..e8e48d3245a2a 100644 --- a/components/download/internal/background_service/scheduler/battery_status_listener_mac.h +++ b/components/download/internal/background_service/scheduler/battery_status_listener_mac.h @@ -25,7 +25,7 @@ class BatteryStatusListenerMac : public BatteryStatusListener { private: // BatteryStatusListener implementation. int GetBatteryPercentage() override; - bool IsOnBatteryPower() override; + bool IsOnBatteryPower() const override; void Start(Observer* observer) override; void Stop() override; }; diff --git a/components/nacl/loader/nacl_main.cc b/components/nacl/loader/nacl_main.cc index 355fa7795c3ee..38e4fe1ec5fb3 100644 --- a/components/nacl/loader/nacl_main.cc +++ b/components/nacl/loader/nacl_main.cc @@ -31,7 +31,7 @@ int NaClMain(content::MainFunctionParams parameters) { base::SingleThreadTaskExecutor main_task_executor(base::MessagePumpType::IO); base::PlatformThread::SetName("CrNaClMain"); - base::PowerMonitor::Initialize(MakePowerMonitorDeviceSource()); + base::PowerMonitor::GetInstance()->Initialize(MakePowerMonitorDeviceSource()); base::HighResolutionTimerManager hi_res_timer_manager; #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) diff --git a/components/power_monitor/power_monitor_device_source_linux.cc b/components/power_monitor/power_monitor_device_source_linux.cc index 14facdc5ddf27..25f04545197c4 100644 --- a/components/power_monitor/power_monitor_device_source_linux.cc +++ b/components/power_monitor/power_monitor_device_source_linux.cc @@ -47,7 +47,7 @@ PowerMonitorDeviceSourceLinux::~PowerMonitorDeviceSourceLinux() { ShutdownBus(); } -bool PowerMonitorDeviceSourceLinux::IsOnBatteryPower() { +bool PowerMonitorDeviceSourceLinux::IsOnBatteryPower() const { // TODO(crbug.com/40836663): Use org.freedesktop.UPower to check for // OnBattery. One possibility is to connect to the DeviceService's // BatteryMonitor. diff --git a/components/power_monitor/power_monitor_device_source_linux.h b/components/power_monitor/power_monitor_device_source_linux.h index 8da7e72fcc2e3..d21d5cdd7553e 100644 --- a/components/power_monitor/power_monitor_device_source_linux.h +++ b/components/power_monitor/power_monitor_device_source_linux.h @@ -27,7 +27,7 @@ class PowerMonitorDeviceSourceLinux : public base::PowerMonitorSource { ~PowerMonitorDeviceSourceLinux() override; // base::PowerMonitorSource: - bool IsOnBatteryPower() override; + bool IsOnBatteryPower() const override; private: void ShutdownBus(); diff --git a/components/viz/service/display/dc_layer_overlay.cc b/components/viz/service/display/dc_layer_overlay.cc index 9e27d353790da..df1090115080f 100644 --- a/components/viz/service/display/dc_layer_overlay.cc +++ b/components/viz/service/display/dc_layer_overlay.cc @@ -813,8 +813,8 @@ DCLayerOverlayProcessor::DCLayerOverlayProcessor( : has_overlay_support_(skip_initialization_for_testing), allowed_yuv_overlay_count_(allowed_yuv_overlay_count), is_on_battery_power_( - base::PowerMonitor::AddPowerStateObserverAndReturnOnBatteryState( - this)), + base::PowerMonitor::GetInstance() + ->AddPowerStateObserverAndReturnOnBatteryState(this)), no_undamaged_overlay_promotion_(base::FeatureList::IsEnabled( features::kNoUndamagedOverlayPromotion)) { if (!skip_initialization_for_testing) { @@ -829,7 +829,7 @@ DCLayerOverlayProcessor::DCLayerOverlayProcessor( DCLayerOverlayProcessor::~DCLayerOverlayProcessor() { gl::DirectCompositionOverlayCapsMonitor::GetInstance()->RemoveObserver(this); - base::PowerMonitor::RemovePowerStateObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerStateObserver(this); } void DCLayerOverlayProcessor::UpdateHasHwOverlaySupport() { diff --git a/components/viz/service/main/viz_main_impl.cc b/components/viz/service/main/viz_main_impl.cc index 4c23fcfa8d424..6671f019b69e7 100644 --- a/components/viz/service/main/viz_main_impl.cc +++ b/components/viz/service/main/viz_main_impl.cc @@ -88,7 +88,7 @@ VizMainImpl::VizMainImpl(Delegate* delegate, // split into separate processes. Until then this is necessary to be able to // run Mushrome (chrome with mus) with Mus running in the browser process. if (dependencies_.power_monitor_source) { - base::PowerMonitor::Initialize( + base::PowerMonitor::GetInstance()->Initialize( std::move(dependencies_.power_monitor_source)); } diff --git a/components/viz/service/main/viz_main_impl_unittest.cc b/components/viz/service/main/viz_main_impl_unittest.cc index 5ef2c8c62861c..f4446cc39836a 100644 --- a/components/viz/service/main/viz_main_impl_unittest.cc +++ b/components/viz/service/main/viz_main_impl_unittest.cc @@ -74,7 +74,7 @@ class MockPowerMonitorSource : public base::PowerMonitorSource { ~MockPowerMonitorSource() override { *leak_guard_ = false; } - bool IsOnBatteryPower() override { return false; } + bool IsOnBatteryPower() const override { return false; } private: // An external flag to signal as to whether or not this object is still @@ -129,8 +129,9 @@ TEST(VizMainImplTest, OopVizDependencyInjection) { builder.Record(recorder); // Need to shutdown the |PowerMonitor| infrastructure. - EXPECT_TRUE(base::PowerMonitor::IsInitialized()); - base::PowerMonitor::ShutdownForTesting(); + auto* power_monitor = base::PowerMonitor::GetInstance(); + EXPECT_TRUE(power_monitor->IsInitialized()); + power_monitor->ShutdownForTesting(); // Double-check that we're not leaking the MockPowerMonitorSource // instance. ASSERT_FALSE(mock_source_is_alive); diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc index c0d3fc6c6ad03..c33d5c01eff29 100644 --- a/content/app/content_main_runner_impl.cc +++ b/content/app/content_main_runner_impl.cc @@ -1248,7 +1248,8 @@ int ContentMainRunnerImpl::RunBrowser(MainFunctionParams main_params, // PowerMonitor is needed in reduced mode. BrowserMainLoop will safely skip // initializing it again if it has already been initialized. - base::PowerMonitor::Initialize(MakePowerMonitorDeviceSource()); + base::PowerMonitor::GetInstance()->Initialize( + MakePowerMonitorDeviceSource()); // Ensure the visibility tracker is created on the main thread. ProcessVisibilityTracker::GetInstance(); diff --git a/content/browser/android/battery_metrics.cc b/content/browser/android/battery_metrics.cc index 79d5149d9f91e..bec2f0ba0a60e 100644 --- a/content/browser/android/battery_metrics.cc +++ b/content/browser/android/battery_metrics.cc @@ -182,9 +182,10 @@ AndroidBatteryMetrics::~AndroidBatteryMetrics() { void AndroidBatteryMetrics::InitializeOnSequence() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + auto* power_monitor = base::PowerMonitor::GetInstance(); on_battery_power_ = - base::PowerMonitor::AddPowerStateObserverAndReturnOnBatteryState(this); - base::PowerMonitor::AddPowerThermalObserver(this); + power_monitor->AddPowerStateObserverAndReturnOnBatteryState(this); + power_monitor->AddPowerThermalObserver(this); content::ProcessVisibilityTracker::GetInstance()->AddObserver(this); // TODO(b/339859756): Update this call to take into account the unknown battery // status. @@ -234,7 +235,7 @@ void AndroidBatteryMetrics::UpdateMetricsEnabled() { if (should_be_enabled && !metrics_timer_.IsRunning()) { // Capture first capacity measurement and enable the repeating timer. last_remaining_capacity_uah_ = - base::PowerMonitor::GetRemainingBatteryCapacity(); + base::PowerMonitor::GetInstance()->GetRemainingBatteryCapacity(); skipped_timers_ = 0; observed_capacity_drops_ = 0; @@ -252,7 +253,7 @@ void AndroidBatteryMetrics::UpdateMetricsEnabled() { void AndroidBatteryMetrics::CaptureAndReportMetrics(bool disabling) { int remaining_capacity_uah = - base::PowerMonitor::GetRemainingBatteryCapacity(); + base::PowerMonitor::GetInstance()->GetRemainingBatteryCapacity(); if (remaining_capacity_uah >= last_remaining_capacity_uah_) { // No change in battery capacity, or it increased. The latter could happen diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc index 7fd2e31428a67..b7844a4bd9137 100644 --- a/content/browser/browser_main_loop.cc +++ b/content/browser/browser_main_loop.cc @@ -668,8 +668,10 @@ void BrowserMainLoop::PostCreateMainMessageLoop() { } { TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:PowerMonitor"); - if (!base::PowerMonitor::IsInitialized()) - base::PowerMonitor::Initialize(MakePowerMonitorDeviceSource()); + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + !power_monitor->IsInitialized()) { + power_monitor->Initialize(MakePowerMonitorDeviceSource()); + } } { TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:HighResTimerManager"); diff --git a/content/browser/media/browser_feature_provider.cc b/content/browser/media/browser_feature_provider.cc index 8dd1090736c03..16a33085174af 100644 --- a/content/browser/media/browser_feature_provider.cc +++ b/content/browser/media/browser_feature_provider.cc @@ -51,8 +51,10 @@ void BrowserFeatureProvider::AddFeatures(FeatureVector features, static_cast<int>(net::NetworkChangeNotifier::GetConnectionType())); } else if (desc.name == FeatureLibrary::BatteryPower().name) { bool is_battery = false; - if (base::PowerMonitor::IsInitialized()) - is_battery = base::PowerMonitor::IsOnBatteryPower(); + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->IsInitialized()) { + is_battery = power_monitor->IsOnBatteryPower(); + } features[i] = FeatureValue(is_battery); } } diff --git a/content/browser/renderer_host/media/media_stream_power_logger.cc b/content/browser/renderer_host/media/media_stream_power_logger.cc index 733d66510fda3..ef1536e2ecfc0 100644 --- a/content/browser/renderer_host/media/media_stream_power_logger.cc +++ b/content/browser/renderer_host/media/media_stream_power_logger.cc @@ -17,13 +17,15 @@ void SendLogMessage(const std::string& message) { } // namespace MediaStreamPowerLogger::MediaStreamPowerLogger() { - base::PowerMonitor::AddPowerSuspendObserver(this); - base::PowerMonitor::AddPowerThermalObserver(this); + auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->AddPowerSuspendObserver(this); + power_monitor->AddPowerThermalObserver(this); } MediaStreamPowerLogger::~MediaStreamPowerLogger() { - base::PowerMonitor::RemovePowerSuspendObserver(this); - base::PowerMonitor::RemovePowerThermalObserver(this); + auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->RemovePowerSuspendObserver(this); + power_monitor->RemovePowerThermalObserver(this); } void MediaStreamPowerLogger::OnSuspend() { diff --git a/content/browser/renderer_host/media/peer_connection_tracker_host.cc b/content/browser/renderer_host/media/peer_connection_tracker_host.cc index 8e8b7ae036fbd..3017ef1eaa70d 100644 --- a/content/browser/renderer_host/media/peer_connection_tracker_host.cc +++ b/content/browser/renderer_host/media/peer_connection_tracker_host.cc @@ -75,10 +75,11 @@ PeerConnectionTrackerHost::PeerConnectionTrackerHost(RenderFrameHost* frame) peer_pid_(frame->GetProcess()->GetProcess().Pid()) { DCHECK_CURRENTLY_ON(BrowserThread::UI); RegisterHost(this); - base::PowerMonitor::AddPowerSuspendObserver(this); + auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->AddPowerSuspendObserver(this); // Ensure that the initial thermal state is known by the |tracker_|. base::PowerThermalObserver::DeviceThermalState initial_thermal_state = - base::PowerMonitor::AddPowerStateObserverAndReturnPowerThermalState(this); + power_monitor->AddPowerStateObserverAndReturnPowerThermalState(this); frame->GetRemoteInterfaces()->GetInterface( tracker_.BindNewPipeAndPassReceiver()); @@ -91,8 +92,9 @@ PeerConnectionTrackerHost::PeerConnectionTrackerHost(RenderFrameHost* frame) PeerConnectionTrackerHost::~PeerConnectionTrackerHost() { DCHECK_CURRENTLY_ON(BrowserThread::UI); RemoveHost(this); - base::PowerMonitor::RemovePowerSuspendObserver(this); - base::PowerMonitor::RemovePowerThermalObserver(this); + auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->RemovePowerSuspendObserver(this); + power_monitor->RemovePowerThermalObserver(this); } void PeerConnectionTrackerHost::AddPeerConnection( diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc index d9482bc321c38..e7aa37ca99558 100644 --- a/content/child/child_thread_impl.cc +++ b/content/child/child_thread_impl.cc @@ -706,12 +706,13 @@ void ChildThreadImpl::Init(const Options& options) { } // In single process mode we may already have initialized the power monitor, - if (!base::PowerMonitor::IsInitialized()) { + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + !power_monitor->IsInitialized()) { auto power_monitor_source = std::make_unique<device::PowerMonitorBroadcastSource>( GetIOTaskRunner()); auto* source_ptr = power_monitor_source.get(); - base::PowerMonitor::Initialize(std::move(power_monitor_source)); + power_monitor->Initialize(std::move(power_monitor_source)); // The two-phase init is necessary to ensure that the process-wide // PowerMonitor is set before the power monitor source receives incoming // communication from the browser process (see https://crbug.com/821790 for diff --git a/content/gpu/gpu_child_thread.cc b/content/gpu/gpu_child_thread.cc index b088d9de38e25..2f679f19112b3 100644 --- a/content/gpu/gpu_child_thread.cc +++ b/content/gpu/gpu_child_thread.cc @@ -84,7 +84,7 @@ ChildThreadImpl::Options GetOptions( viz::VizMainImpl::ExternalDependencies CreateVizMainDependencies() { viz::VizMainImpl::ExternalDependencies deps; - if (!base::PowerMonitor::IsInitialized()) { + if (!base::PowerMonitor::GetInstance()->IsInitialized()) { deps.power_monitor_source = std::make_unique<base::PowerMonitorDeviceSource>(); } diff --git a/content/shell/common/power_monitor_test_impl.cc b/content/shell/common/power_monitor_test_impl.cc index 74631a2c32de9..ac729114e8383 100644 --- a/content/shell/common/power_monitor_test_impl.cc +++ b/content/shell/common/power_monitor_test_impl.cc @@ -20,11 +20,11 @@ void PowerMonitorTestImpl::MakeSelfOwnedReceiver( } PowerMonitorTestImpl::PowerMonitorTestImpl() { - base::PowerMonitor::AddPowerStateObserver(this); + base::PowerMonitor::GetInstance()->AddPowerStateObserver(this); } PowerMonitorTestImpl::~PowerMonitorTestImpl() { - base::PowerMonitor::RemovePowerStateObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerStateObserver(this); } void PowerMonitorTestImpl::QueryNextState(QueryNextStateCallback callback) { diff --git a/content/utility/utility_main.cc b/content/utility/utility_main.cc index 51c3f2ab8ea33..d3c0fbbb3b1ae 100644 --- a/content/utility/utility_main.cc +++ b/content/utility/utility_main.cc @@ -388,7 +388,7 @@ int UtilityMain(MainFunctionParams parameters) { // base::HighResolutionTimerManager here for future possible usage of high // resolution timer in service utility process. std::optional<base::HighResolutionTimerManager> hi_res_timer_manager; - if (base::PowerMonitor::IsInitialized()) { + if (base::PowerMonitor::GetInstance()->IsInitialized()) { hi_res_timer_manager.emplace(); } diff --git a/google_apis/gcm/engine/heartbeat_manager.cc b/google_apis/gcm/engine/heartbeat_manager.cc index 0279aa514b404..93e84fe109c15 100644 --- a/google_apis/gcm/engine/heartbeat_manager.cc +++ b/google_apis/gcm/engine/heartbeat_manager.cc @@ -62,7 +62,7 @@ HeartbeatManager::HeartbeatManager( HeartbeatManager::~HeartbeatManager() { // Stop listening for system suspend and resume events. - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } void HeartbeatManager::Start( @@ -74,7 +74,7 @@ void HeartbeatManager::Start( trigger_reconnect_callback_ = trigger_reconnect_callback; // Listen for system suspend and resume events. - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); // Calculated the heartbeat interval just before we start the timer. UpdateHeartbeatInterval(); @@ -90,7 +90,7 @@ void HeartbeatManager::Stop() { heartbeat_timer_->Stop(); waiting_for_ack_ = false; - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } void HeartbeatManager::OnHeartbeatAcked() { diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc index ae844b521b16a..2156e33901ae6 100644 --- a/gpu/command_buffer/service/webgpu_decoder_impl.cc +++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc @@ -1628,8 +1628,9 @@ wgpu::Adapter WebGPUDecoderImpl::CreatePreferredAdapter( case WebGPUPowerPreference::kNone: if (power_preference == wgpu::PowerPreference::Undefined) { // If on battery power, default to the integrated GPU. - if (!base::PowerMonitor::IsInitialized() || - base::PowerMonitor::IsOnBatteryPower()) { + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + !power_monitor->IsInitialized() || + power_monitor->IsOnBatteryPower()) { power_preference = wgpu::PowerPreference::LowPower; } else { power_preference = wgpu::PowerPreference::HighPerformance; diff --git a/gpu/ipc/service/dcomp_texture_win.cc b/gpu/ipc/service/dcomp_texture_win.cc index 4e7c2b111443f..c0ef8f4c6083d 100644 --- a/gpu/ipc/service/dcomp_texture_win.cc +++ b/gpu/ipc/service/dcomp_texture_win.cc @@ -127,7 +127,7 @@ DCOMPTexture::DCOMPTexture( IPC::ScopedAllowOffSequenceChannelAssociatedBindings allow_binding; receiver_.Bind(std::move(receiver), runner); context_state_->AddContextLostObserver(this); - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); channel_->AddRoute(route_id, sequence_); } @@ -138,7 +138,7 @@ DCOMPTexture::~DCOMPTexture() { DCHECK(!channel_); context_state_->RemoveContextLostObserver(this); - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); if (window_pos_timer_.IsRunning()) { window_pos_timer_.Stop(); diff --git a/gpu/ipc/service/gpu_watchdog_thread.cc b/gpu/ipc/service/gpu_watchdog_thread.cc index 8740bf337d2c9..10a863bd335a1 100644 --- a/gpu/ipc/service/gpu_watchdog_thread.cc +++ b/gpu/ipc/service/gpu_watchdog_thread.cc @@ -127,7 +127,7 @@ GpuWatchdogThread::~GpuWatchdogThread() { Stop(); // stop the watchdog thread base::CurrentThread::Get()->RemoveTaskObserver(this); - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); GpuWatchdogThreadEventHistogram(GpuWatchdogThreadEvent::kGpuWatchdogEnd); #if BUILDFLAG(IS_WIN) if (watched_thread_handle_) @@ -343,7 +343,8 @@ void GpuWatchdogThread::AddPowerObserver() { // Adding the Observer to the power monitor is safe even if power monitor is // not yet initialized. bool is_system_suspended = - base::PowerMonitor::AddPowerSuspendObserverAndReturnSuspendedState(this); + base::PowerMonitor::GetInstance() + ->AddPowerSuspendObserverAndReturnSuspendedState(this); if (is_system_suspended) StopWatchdogTimeoutTask(kPowerSuspendResume); } diff --git a/ios/web/init/web_main_loop.mm b/ios/web/init/web_main_loop.mm index 9e088bc60d460..60cc7f85eb849 100644 --- a/ios/web/init/web_main_loop.mm +++ b/ios/web/init/web_main_loop.mm @@ -115,7 +115,7 @@ int WebMainLoop::PreCreateThreads() { // of it? // TODO(crbug.com/40240952): Remove this once we have confidence PowerMonitor // is not needed for iOS - base::PowerMonitor::Initialize( + base::PowerMonitor::GetInstance()->Initialize( std::make_unique<base::PowerMonitorDeviceSource>()); return result_code_; diff --git a/media/audio/mac/audio_manager_mac.cc b/media/audio/mac/audio_manager_mac.cc index b967c23f1580b..9b8c5d05f1766 100644 --- a/media/audio/mac/audio_manager_mac.cc +++ b/media/audio/mac/audio_manager_mac.cc @@ -462,7 +462,7 @@ class AudioManagerMac::AudioPowerObserver : public base::PowerSuspendObserver { public: AudioPowerObserver() : is_suspending_(false), - is_monitoring_(base::PowerMonitor::IsInitialized()), + is_monitoring_(base::PowerMonitor::GetInstance()->IsInitialized()), num_resume_notifications_(0) { // The PowerMonitor requires significant setup (a CFRunLoop and preallocated // IO ports) so it's not available under unit tests. See the OSX impl of @@ -470,7 +470,7 @@ class AudioManagerMac::AudioPowerObserver : public base::PowerSuspendObserver { if (!is_monitoring_) { return; } - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); } AudioPowerObserver(const AudioPowerObserver&) = delete; @@ -481,7 +481,7 @@ class AudioManagerMac::AudioPowerObserver : public base::PowerSuspendObserver { if (!is_monitoring_) { return; } - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } bool IsSuspending() const { @@ -500,7 +500,7 @@ class AudioManagerMac::AudioPowerObserver : public base::PowerSuspendObserver { bool IsOnBatteryPower() const { DCHECK(thread_checker_.CalledOnValidThread()); - return base::PowerMonitor::IsOnBatteryPower(); + return base::PowerMonitor::GetInstance()->IsOnBatteryPower(); } private: diff --git a/media/audio/power_observer_helper.cc b/media/audio/power_observer_helper.cc index 2293be9ca56ff..353e998de007d 100644 --- a/media/audio/power_observer_helper.cc +++ b/media/audio/power_observer_helper.cc @@ -29,12 +29,12 @@ PowerObserverHelper::PowerObserverHelper( // TODO(grunell): We could be suspending when adding this as observer, and // we won't be notified about that. See if we can add // PowerMonitorSource::IsSuspending() so that this can be checked here. - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); } PowerObserverHelper::~PowerObserverHelper() { DCHECK(task_runner_->RunsTasksInCurrentSequence()); - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } bool PowerObserverHelper::IsSuspending() const { diff --git a/media/renderers/audio_renderer_impl.cc b/media/renderers/audio_renderer_impl.cc index e1f0e5ff604d9..f989ff36c1062 100644 --- a/media/renderers/audio_renderer_impl.cc +++ b/media/renderers/audio_renderer_impl.cc @@ -83,14 +83,16 @@ AudioRendererImpl::AudioRendererImpl( // won't remove the observer until we're destructed on |task_runner_| so we // must post it here if we're on the wrong thread. if (task_runner_->RunsTasksInCurrentSequence()) { - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->GetInstance()->AddPowerSuspendObserver( + this); } else { // Safe to post this without a WeakPtr because this class must be destructed // on the same thread and construction has not completed yet. task_runner_->PostTask( FROM_HERE, base::BindOnce( - IgnoreResult(&base::PowerMonitor::AddPowerSuspendObserver), this)); + base::IgnoreResult(&base::PowerMonitor::AddPowerSuspendObserver), + base::Unretained(base::PowerMonitor::GetInstance()), this)); } // Do not add anything below this line since the above actions are only safe @@ -100,7 +102,8 @@ AudioRendererImpl::AudioRendererImpl( AudioRendererImpl::~AudioRendererImpl() { DVLOG(1) << __func__; DCHECK(task_runner_->RunsTasksInCurrentSequence()); - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->GetInstance()->RemovePowerSuspendObserver( + this); // If Render() is in progress, this call will wait for Render() to finish. // After this call, the |sink_| will not call back into |this| anymore. diff --git a/net/http/http_cache_transaction.cc b/net/http/http_cache_transaction.cc index b22abdd8a70ac..064f4c517a767 100644 --- a/net/http/http_cache_transaction.cc +++ b/net/http/http_cache_transaction.cc @@ -91,10 +91,8 @@ bool NonErrorResponse(int status_code) { } bool IsOnBatteryPower() { - if (base::PowerMonitor::IsInitialized()) { - return base::PowerMonitor::IsOnBatteryPower(); - } - return false; + auto* power_monitor = base::PowerMonitor::GetInstance(); + return power_monitor->IsInitialized() && power_monitor->IsOnBatteryPower(); } enum ExternallyConditionalizedType { diff --git a/net/http/http_network_layer.cc b/net/http/http_network_layer.cc index d1cc859e1bce1..2f492571e63af 100644 --- a/net/http/http_network_layer.cc +++ b/net/http/http_network_layer.cc @@ -26,14 +26,14 @@ HttpNetworkLayer::HttpNetworkLayer(HttpNetworkSession* session) : session_(session) { DCHECK(session_); #if BUILDFLAG(IS_WIN) - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); #endif } HttpNetworkLayer::~HttpNetworkLayer() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); #if BUILDFLAG(IS_WIN) - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); #endif } diff --git a/net/socket/tcp_client_socket.cc b/net/socket/tcp_client_socket.cc index 2ff5172a3d82a..9244212c34899 100644 --- a/net/socket/tcp_client_socket.cc +++ b/net/socket/tcp_client_socket.cc @@ -73,7 +73,7 @@ TCPClientSocket::TCPClientSocket( TCPClientSocket::~TCPClientSocket() { Disconnect(); #if defined(TCP_CLIENT_SOCKET_OBSERVES_SUSPEND) - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); #endif // defined(TCP_CLIENT_SOCKET_OBSERVES_SUSPEND) } @@ -173,7 +173,7 @@ TCPClientSocket::TCPClientSocket( if (socket_->IsValid()) socket_->SetDefaultOptionsForClient(); #if defined(TCP_CLIENT_SOCKET_OBSERVES_SUSPEND) - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); #endif // defined(TCP_CLIENT_SOCKET_OBSERVES_SUSPEND) } diff --git a/net/socket/tcp_client_socket_unittest.cc b/net/socket/tcp_client_socket_unittest.cc index 38dbde640370b..f0fef88d8a0e9 100644 --- a/net/socket/tcp_client_socket_unittest.cc +++ b/net/socket/tcp_client_socket_unittest.cc @@ -60,7 +60,9 @@ class TCPClientSocketTest : public testing::Test { TCPClientSocketTest() : task_environment_(base::test::TaskEnvironment::MainThreadType::IO) {} - ~TCPClientSocketTest() override { base::PowerMonitor::ShutdownForTesting(); } + ~TCPClientSocketTest() override { + base::PowerMonitor::GetInstance()->ShutdownForTesting(); + } void Suspend() { power_monitor_source_.Suspend(); } void Resume() { power_monitor_source_.Resume(); } diff --git a/services/device/power_monitor/power_monitor_message_broadcaster.cc b/services/device/power_monitor/power_monitor_message_broadcaster.cc index 36e983c95896f..75cd4c7fab487 100644 --- a/services/device/power_monitor/power_monitor_message_broadcaster.cc +++ b/services/device/power_monitor/power_monitor_message_broadcaster.cc @@ -10,13 +10,15 @@ namespace device { PowerMonitorMessageBroadcaster::PowerMonitorMessageBroadcaster() { - base::PowerMonitor::AddPowerSuspendObserver(this); - base::PowerMonitor::AddPowerStateObserver(this); + auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->AddPowerSuspendObserver(this); + power_monitor->AddPowerStateObserver(this); } PowerMonitorMessageBroadcaster::~PowerMonitorMessageBroadcaster() { - base::PowerMonitor::RemovePowerSuspendObserver(this); - base::PowerMonitor::RemovePowerStateObserver(this); + auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->RemovePowerSuspendObserver(this); + power_monitor->RemovePowerStateObserver(this); } // static @@ -30,11 +32,13 @@ void PowerMonitorMessageBroadcaster::AddClient( power_monitor_client) { mojo::RemoteSetElementId element_id = clients_.Add(std::move(power_monitor_client)); + auto* power_monitor = base::PowerMonitor::GetInstance(); - if (!base::PowerMonitor::IsInitialized()) + if (!power_monitor->IsInitialized()) { return; + } - bool on_battery_power = base::PowerMonitor::IsOnBatteryPower(); + bool on_battery_power = power_monitor->IsOnBatteryPower(); // If the state has changed since we last checked, update all clients. if (on_battery_power != on_battery_power_) { diff --git a/services/device/power_monitor/power_monitor_message_broadcaster_unittest.cc b/services/device/power_monitor/power_monitor_message_broadcaster_unittest.cc index 69684293200a9..6f784ae57c549 100644 --- a/services/device/power_monitor/power_monitor_message_broadcaster_unittest.cc +++ b/services/device/power_monitor/power_monitor_message_broadcaster_unittest.cc @@ -62,7 +62,9 @@ class PowerMonitorMessageBroadcasterTest : public DeviceServiceTestBase { power_monitor_source_.SetOnBatteryPower(on_battery_power); } - bool IsOnBatteryPower() { return power_monitor_source_.IsOnBatteryPower(); } + bool IsOnBatteryPower() const { + return power_monitor_source_.IsOnBatteryPower(); + } void TearDown() override { DestroyDeviceService(); diff --git a/services/device/public/cpp/power_monitor/power_monitor_broadcast_source.cc b/services/device/public/cpp/power_monitor/power_monitor_broadcast_source.cc index 98a78744df036..281389b7c982b 100644 --- a/services/device/public/cpp/power_monitor/power_monitor_broadcast_source.cc +++ b/services/device/public/cpp/power_monitor/power_monitor_broadcast_source.cc @@ -35,7 +35,7 @@ void PowerMonitorBroadcastSource::Init( } } -bool PowerMonitorBroadcastSource::IsOnBatteryPower() { +bool PowerMonitorBroadcastSource::IsOnBatteryPower() const { return client_->last_reported_on_battery_power_state(); } diff --git a/services/device/public/cpp/power_monitor/power_monitor_broadcast_source.h b/services/device/public/cpp/power_monitor/power_monitor_broadcast_source.h index 3cb3a4e24b5b6..f2400ef7a96ce 100644 --- a/services/device/public/cpp/power_monitor/power_monitor_broadcast_source.h +++ b/services/device/public/cpp/power_monitor/power_monitor_broadcast_source.h @@ -85,7 +85,7 @@ class PowerMonitorBroadcastSource : public base::PowerMonitorSource { Client* client_for_testing() const { return client_.get(); } - bool IsOnBatteryPower() override; + bool IsOnBatteryPower() const override; std::unique_ptr<Client> client_; scoped_refptr<base::SequencedTaskRunner> task_runner_; diff --git a/services/device/public/cpp/power_monitor/power_monitor_broadcast_source_unittest.cc b/services/device/public/cpp/power_monitor/power_monitor_broadcast_source_unittest.cc index 5a61c3e8df16c..e6b4a3d69be13 100644 --- a/services/device/public/cpp/power_monitor/power_monitor_broadcast_source_unittest.cc +++ b/services/device/public/cpp/power_monitor/power_monitor_broadcast_source_unittest.cc @@ -29,12 +29,13 @@ class PowerMonitorBroadcastSourceTest : public testing::Test { auto power_monitor_source = std::make_unique<PowerMonitorBroadcastSource>( base::SequencedTaskRunner::GetCurrentDefault()); power_monitor_source_ptr_ = power_monitor_source.get(); - base::PowerMonitor::Initialize(std::move(power_monitor_source)); + base::PowerMonitor::GetInstance()->Initialize( + std::move(power_monitor_source)); power_monitor_source_ptr_->Init(mojo::NullRemote()); } void TearDown() override { - base::PowerMonitor::ShutdownForTesting(); + base::PowerMonitor::GetInstance()->ShutdownForTesting(); base::RunLoop().RunUntilIdle(); } @@ -51,8 +52,9 @@ class PowerMonitorBroadcastSourceTest : public testing::Test { TEST_F(PowerMonitorBroadcastSourceTest, PowerMessageReceiveBroadcast) { base::test::PowerMonitorTestObserver observer; - base::PowerMonitor::AddPowerSuspendObserver(&observer); - base::PowerMonitor::AddPowerStateObserver(&observer); + auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->AddPowerSuspendObserver(&observer); + power_monitor->AddPowerStateObserver(&observer); // Sending resume when not suspended should have no effect. client()->Resume(); @@ -103,8 +105,8 @@ TEST_F(PowerMonitorBroadcastSourceTest, PowerMessageReceiveBroadcast) { base::RunLoop().RunUntilIdle(); EXPECT_EQ(observer.power_state_changes(), 2); - base::PowerMonitor::RemovePowerSuspendObserver(&observer); - base::PowerMonitor::RemovePowerStateObserver(&observer); + power_monitor->RemovePowerSuspendObserver(&observer); + power_monitor->RemovePowerStateObserver(&observer); } } // namespace device diff --git a/services/media_session/audio_focus_manager.cc b/services/media_session/audio_focus_manager.cc index 1da0abacfcac2..c277cfdfcf126 100644 --- a/services/media_session/audio_focus_manager.cc +++ b/services/media_session/audio_focus_manager.cc @@ -39,14 +39,14 @@ class MediaPowerDelegate : public base::PowerSuspendObserver { public: explicit MediaPowerDelegate(base::WeakPtr<AudioFocusManager> owner) : owner_(owner) { - base::PowerMonitor::AddPowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->AddPowerSuspendObserver(this); } MediaPowerDelegate(const MediaPowerDelegate&) = delete; MediaPowerDelegate& operator=(const MediaPowerDelegate&) = delete; ~MediaPowerDelegate() override { - base::PowerMonitor::RemovePowerSuspendObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerSuspendObserver(this); } // base::PowerSuspendObserver: diff --git a/third_party/blink/common/media/watch_time_reporter.cc b/third_party/blink/common/media/watch_time_reporter.cc index 1a2b40caacf0b..a937c1e6c69a7 100644 --- a/third_party/blink/common/media/watch_time_reporter.cc +++ b/third_party/blink/common/media/watch_time_reporter.cc @@ -21,9 +21,8 @@ namespace blink { constexpr gfx::Size kMinimumVideoSize = gfx::Size(200, 140); static bool IsOnBatteryPower() { - if (base::PowerMonitor::IsInitialized()) - return base::PowerMonitor::IsOnBatteryPower(); - return false; + auto* power_monitor = base::PowerMonitor::GetInstance(); + return power_monitor->IsInitialized() && power_monitor->IsOnBatteryPower(); } // Helper function for managing property changes. If the watch time timer is @@ -96,7 +95,7 @@ WatchTimeReporter::WatchTimeReporter( if (is_muted_) DCHECK_EQ(volume_, 1.0); - base::PowerMonitor::AddPowerStateObserver(this); + base::PowerMonitor::GetInstance()->AddPowerStateObserver(this); provider->AcquireWatchTimeRecorder(properties_->Clone(), recorder_.BindNewPipeAndPassReceiver()); @@ -146,7 +145,7 @@ WatchTimeReporter::~WatchTimeReporter() { // This is our last chance, so finalize now if there's anything remaining. in_shutdown_ = true; MaybeFinalizeWatchTime(FinalizeTime::IMMEDIATELY); - base::PowerMonitor::RemovePowerStateObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerStateObserver(this); } void WatchTimeReporter::OnPlaying() { diff --git a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py index eca25364c5d51..8e9cdcd64899d 100755 --- a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py +++ b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py @@ -39,56 +39,70 @@ _CONFIG = [ 'allowed': [ # absl 'absl::Cleanup', - 'absl::MakeInt128', - 'absl::MakeUint128', - 'absl::Int128High64', - 'absl::Int128Low64', - 'absl::Uint128High64', - 'absl::Uint128Low64', 'absl::get', 'absl::get_if', 'absl::holds_alternative', 'absl::in_place', 'absl::in_place_type', 'absl::int128', + 'absl::Int128High64', + 'absl::Int128Low64', + 'absl::MakeInt128', + 'absl::MakeUint128', 'absl::monostate', 'absl::uint128', + 'absl::Uint128High64', + 'absl::Uint128Low64', 'absl::variant', 'absl::visit', # //base constructs that are allowed everywhere + 'base::(byte_)?span_from_ref', 'base::AdoptRef', 'base::ApplyMetadataToPastSamples', - 'base::SampleMetadataScope', + 'base::as_byte_span', + 'base::as_byte_span', + 'base::as_bytes', + 'base::as_bytes', + 'base::as_chars', + 'base::as_chars', + 'base::as_string_view', + 'base::as_string_view', + 'base::as_writable_byte_span', + 'base::as_writable_bytes', + 'base::as_writable_bytes', + 'base::as_writable_chars', 'base::AutoReset', - 'base::Contains', + 'base::bit_cast', 'base::ConditionVariable', + 'base::Contains', 'base::CPU', - 'base::ValuesEquivalent', 'base::Days', 'base::DefaultTickClock', 'base::ElapsedTimer', 'base::EnumSet', - 'base::HashInts', - 'base::JobDelegate', - 'base::JobHandle', - 'base::PostJob', + 'base::expected', 'base::File', 'base::FileErrorOr', 'base::FilePath', 'base::FunctionRef', 'base::GetUniqueIdForProcess', + 'base::HashingLRUCache', + 'base::HashInts', 'base::HeapArray', 'base::HexStringToUInt64', 'base::Hours', - "base::i18n::TextDirection", - "base::i18n::ToChar16Ptr", - "base::i18n::ToUCharPtr", + 'base::i18n::TextDirection', + 'base::i18n::ToChar16Ptr', + 'base::i18n::ToUCharPtr', + 'base::JobDelegate', + 'base::JobHandle', 'base::Location', + 'base::make_span', 'base::MakeRefCounted', 'base::MappedReadOnlyRegion', - 'base::MatchPattern', 'base::MatcherStringPattern', + 'base::MatchPattern', 'base::MessagePump', 'base::MetricsSubSampler', 'base::Microseconds', @@ -96,6 +110,7 @@ _CONFIG = [ 'base::Minutes', 'base::Nanoseconds', 'base::NotFatalUntil', + 'base::optional_ref', 'base::OptionalFromPtr', 'base::OptionalToPtr', 'base::Overloaded', @@ -103,21 +118,28 @@ _CONFIG = [ 'base::PersistentHash', 'base::PlatformThread', 'base::PlatformThreadId', + 'base::PostJob', + 'base::PowerMonitor', 'base::Process', 'base::RadToDeg', - 'base::RefCountedData', - 'base::RunLoop', - 'base::HashingLRUCache', + 'base::ranges::.+', 'base::ReadOnlySharedMemoryMapping', 'base::ReadOnlySharedMemoryRegion', + 'base::RefCountedData', 'base::RemoveChars', 'base::RepeatingTimer', + 'base::RunLoop', + 'base::SampleMetadataScope', + 'base::ScopedAllowBlocking', + 'base::ScopedClosureRunner', + 'base::ScopedFD', 'base::Seconds', + 'base::sequence_manager::TaskTimeObserver', 'base::SequencedTaskRunner', 'base::SingleThreadTaskRunner', - 'base::ScopedAllowBlocking', - 'base::ScopedFD', - 'base::ScopedClosureRunner', + 'base::span', + 'base::span(_with_nul)?_from_cstring', + 'base::Span(OrSize|Reader|Writer)', 'base::StringPiece', 'base::SubstringSetMatcher', 'base::SupportsWeakPtr', @@ -129,41 +151,20 @@ _CONFIG = [ 'base::Time', 'base::TimeDelta', 'base::TimeTicks', - 'base::trace_event::.*', + 'base::to_underlying', 'base::Token', + 'base::trace_event::.*', + 'base::unexpected', 'base::UnguessableToken', 'base::UnguessableTokenHash', 'base::UnlocalizedTimeFormatWithPattern', 'base::UnsafeSharedMemoryRegion', 'base::Uuid', + 'base::ValuesEquivalent', 'base::WeakPtr', 'base::WeakPtrFactory', 'base::WrapRefCounted', 'base::WritableSharedMemoryMapping', - 'base::as_byte_span', - 'base::as_bytes', - 'base::as_chars', - 'base::as_string_view', - 'base::as_writable_bytes', - 'base::bit_cast', - 'base::expected', - 'base::make_span', - 'base::optional_ref', - 'base::to_underlying', - 'base::unexpected', - 'base::ranges::.+', - 'base::sequence_manager::TaskTimeObserver', - 'base::span', - 'base::span(_with_nul)?_from_cstring', - 'base::Span(OrSize|Reader|Writer)', - 'base::as_byte_span', - 'base::as_writable_byte_span', - 'base::as_bytes', - 'base::as_writable_bytes', - 'base::as_chars', - 'base::as_writable_chars', - 'base::as_string_view', - 'base::(byte_)?span_from_ref', 'logging::GetVlogLevel', 'logging::SetLogItems', @@ -182,8 +183,8 @@ _CONFIG = [ 'base::bits::.+', # //base/observer_list.h. - 'base::ObserverList', 'base::CheckedObserver', + 'base::ObserverList', # //base/functional/callback_helpers.h. 'base::DoNothing', @@ -222,60 +223,60 @@ _CONFIG = [ 'base::LinearHistogram', # //base/metrics/field_trial_params.h. - 'base::GetFieldTrialParamValueByFeature', 'base::GetFieldTrialParamByFeatureAsBool', 'base::GetFieldTrialParamByFeatureAsDouble', 'base::GetFieldTrialParamByFeatureAsInt', + 'base::GetFieldTrialParamValueByFeature', # //base/numerics/safe_conversions.h. 'base::as_signed', 'base::as_unsigned', 'base::checked_cast', - 'base::saturated_cast', - 'base::strict_cast', 'base::ClampCeil', 'base::ClampFloor', + 'base::ClampRound', 'base::IsTypeInRangeForNumericType', 'base::IsValueInRangeForNumericType', 'base::IsValueNegative', 'base::MakeStrictNum', - 'base::ClampRound', 'base::SafeUnsignedAbs', + 'base::saturated_cast', + 'base::strict_cast', 'base::StrictNumeric', # //base/synchronization/lock.h. 'base::AutoLock', - 'base::AutoUnlock', 'base::AutoTryLock', + 'base::AutoUnlock', 'base::Lock', # //base/synchronization/waitable_event.h. 'base::WaitableEvent', # //base/numerics/checked_math.h. + 'base::CheckAdd', + 'base::CheckAnd', + 'base::CheckDiv', 'base::CheckedNumeric', - 'base::IsValidForType', - 'base::ValueOrDieForType', - 'base::ValueOrDefaultForType', - 'base::MakeCheckedNum', + 'base::CheckLsh', 'base::CheckMax', 'base::CheckMin', - 'base::CheckAdd', - 'base::CheckSub', - 'base::CheckMul', - 'base::CheckDiv', 'base::CheckMod', - 'base::CheckLsh', - 'base::CheckRsh', - 'base::CheckAnd', + 'base::CheckMul', 'base::CheckOr', + 'base::CheckRsh', + 'base::CheckSub', 'base::CheckXor', + 'base::IsValidForType', + 'base::MakeCheckedNum', + 'base::ValueOrDefaultForType', + 'base::ValueOrDieForType', # //base/numerics/clamped_math.h. 'base::ClampAdd', 'base::ClampedNumeric', - 'base::ClampMin', 'base::ClampMax', + 'base::ClampMin', 'base::ClampSub', 'base::MakeClampedNum', @@ -291,32 +292,32 @@ _CONFIG = [ 'base::AtomicSequenceNumber', # Task traits - 'base::TaskTraits', 'base::MayBlock', + 'base::SingleThreadTaskRunnerThreadMode', 'base::TaskPriority', 'base::TaskShutdownBehavior', - 'base::WithBaseSyncPrimitives', + 'base::TaskTraits', 'base::ThreadPolicy', 'base::ThreadPool', - 'base::SingleThreadTaskRunnerThreadMode', + 'base::WithBaseSyncPrimitives', # Byte order - 'base::BigEndian(Reader|Writer)', 'base::(numerics::)?((I|U)(8|16|32|64)|(Float|Double))(To|From)(Big|Little|Native)Endian', 'base::(numerics::)?ByteSwap', + 'base::BigEndian(Reader|Writer)', # (Cryptographic) random number generation - 'base::RandUint64', - 'base::RandInt', - 'base::RandGenerator', - 'base::RandDouble', 'base::RandBytes', 'base::RandBytesAsString', + 'base::RandDouble', + 'base::RandGenerator', + 'base::RandInt', + 'base::RandUint64', # Feature list checking. + "base::GetFieldTrial.*", 'base::Feature.*', 'base::FEATURE_.+', - "base::GetFieldTrial.*", 'base::features::.+', 'features::.+', @@ -385,9 +386,9 @@ _CONFIG = [ 'partition_alloc::internal::kAlignment', # PartitionAlloc - 'base::PartitionFree', - 'base::PartitionAllocZeroFill', 'base::PartitionAllocReturnNull', + 'base::PartitionAllocZeroFill', + 'base::PartitionFree', # For TaskObserver. 'base::PendingTask', @@ -397,20 +398,20 @@ _CONFIG = [ 'cc::CategorizedWorkerPool', 'cc::ColorFilter', 'cc::DrawLooper', - 'cc::PathEffect', 'cc::InspectablePaintRecorder', 'cc::InspectableRecordPaintCanvas', + 'cc::NodeId', + 'cc::NodeInfo', 'cc::PaintCanvas', 'cc::PaintFlags', 'cc::PaintImage', 'cc::PaintImageBuilder', 'cc::PaintRecord', - 'cc::RecordPaintCanvas', 'cc::PaintShader', 'cc::PaintWorkletInput', + 'cc::PathEffect', + 'cc::RecordPaintCanvas', 'cc::RefCountedBuffer', - 'cc::NodeId', - 'cc::NodeInfo', 'cc::UsePaintCache', # Chromium geometry types. @@ -420,8 +421,8 @@ _CONFIG = [ 'gfx::Outsets', 'gfx::OutsetsF', 'gfx::Point', - 'gfx::PointF', 'gfx::Point3F', + 'gfx::PointF', 'gfx::QuadF', 'gfx::Quaternion', 'gfx::Rect', @@ -443,25 +444,25 @@ _CONFIG = [ 'gfx::DotProduct', 'gfx::IntersectRects', 'gfx::MapRect', + 'gfx::MapRect', + 'gfx::MaximumCoveredRect', 'gfx::PointAtOffsetFromOrigin', 'gfx::PointFToSkPoint', 'gfx::PointToSkIPoint', - 'gfx::MapRect', - 'gfx::MaximumCoveredRect', 'gfx::RectFToSkRect', 'gfx::RectToSkIRect', 'gfx::RectToSkRect', 'gfx::ScaleInsets', + 'gfx::ScalePoint', + 'gfx::ScaleRect', + 'gfx::ScaleSize', 'gfx::ScaleToCeiledSize', 'gfx::ScaleToEnclosedRect', 'gfx::ScaleToEnclosingRect', 'gfx::ScaleToFlooredSize', + 'gfx::ScaleToRoundedPoint', 'gfx::ScaleToRoundedRect', 'gfx::ScaleToRoundedSize', - 'gfx::ScaleRect', - 'gfx::ScaleSize', - 'gfx::ScalePoint', - 'gfx::ScaleToRoundedPoint', 'gfx::ScaleVector2d', 'gfx::ScaleVector3d', 'gfx::SizeFToSkSize', @@ -534,17 +535,17 @@ _CONFIG = [ 'cc::ViewportLayers', # cc::Layer helper enums. - 'cc::HORIZONTAL', - 'cc::VERTICAL', - 'cc::THUMB', - 'cc::TRACK_BUTTONS_TICKMARKS', 'cc::BrowserControlsState', 'cc::EventListenerClass', 'cc::EventListenerProperties', 'cc::HitTestOpaqueness', + 'cc::HORIZONTAL', + 'cc::THUMB', + 'cc::TRACK_BUTTONS_TICKMARKS', + 'cc::VERTICAL', # Animation - 'cc::AnimationHost', + "cc::AnimationHost", "cc::AnimationIdProvider", "cc::AnimationTimeline", "cc::FilterKeyframe", @@ -568,30 +569,30 @@ _CONFIG = [ 'cc::PaintHoldingReason', # Scrolling + 'cc::BrowserControlsOffsetTagsInfo', + 'cc::kManipulationInfoNone', 'cc::kManipulationInfoPinchZoom', 'cc::kManipulationInfoPrecisionTouchPad', + 'cc::kManipulationInfoScrollbar', 'cc::kManipulationInfoTouch', 'cc::kManipulationInfoWheel', - 'cc::kManipulationInfoScrollbar', - 'cc::kManipulationInfoNone', - 'cc::kPixelsPerLineStep', 'cc::kMinFractionToStepWhenPaging', 'cc::kPercentDeltaForDirectionalScroll', - 'cc::BrowserControlsOffsetTagsInfo', + 'cc::kPixelsPerLineStep', 'cc::MainThreadScrollingReason', 'cc::ManipulationInfo', + 'cc::ScrollOffsetAnimationCurve', 'cc::ScrollSnapAlign', 'cc::ScrollSnapType', - 'cc::ScrollOffsetAnimationCurve', 'cc::ScrollStateData', 'cc::ScrollUtils', 'cc::SnapAlignment', 'cc::SnapAreaData', 'cc::SnapAxis', 'cc::SnapContainerData', - 'cc::SnappedTargetData', 'cc::SnapFlingClient', 'cc::SnapFlingController', + 'cc::SnappedTargetData', 'cc::SnapPositionData', 'cc::SnapSelectionStrategy', 'cc::SnapStrictness', @@ -618,6 +619,7 @@ _CONFIG = [ 'url::.+', # Nested namespaces under the blink namespace + '[a-z_]+_names::.+', 'bindings::.+', 'canvas_heuristic_parameters::.+', 'compositor_target_property::.+', @@ -630,6 +632,7 @@ _CONFIG = [ 'event_handling_util::.+', 'event_util::.+', 'file_error::.+', + 'file_system_access_error::.+', 'geometry_util::.+', 'inspector_\\w+_event::.+', 'inspector_async_task::.+', @@ -641,7 +644,6 @@ _CONFIG = [ 'layout_text_control::.+', 'media_constraints_impl::.+', 'media_element_parser_helpers::.+', - 'file_system_access_error::.+', 'network_utils::.+', 'origin_trials::.+', 'paint_filter_builder::.+', @@ -656,22 +658,21 @@ _CONFIG = [ 'touch_action_util::.+', 'trace_event::.+', 'unicode::.+', - 'vector_math::.+', 'v8_compile_hints::.+', + 'vector_math::.+', 'web_core_test_support::.+', 'worker_pool::.+', 'xpath::.+', - '[a-z_]+_names::.+', # Third-party libraries that don't depend on non-Blink Chrome code # are OK. 'icu::.+', + 'inspector_protocol_encoding::.+', 'perfetto::.+', # tracing + 'snappy::.+', 'testing::.+', # googlemock / googletest 'v8::.+', 'v8_inspector::.+', - 'inspector_protocol_encoding::.+', - 'snappy::.+', # Inspector instrumentation and protocol 'probe::.+', @@ -691,14 +692,14 @@ _CONFIG = [ # CanonicalCookie and related headers 'net::CanonicalCookie', 'net::CookieInclusionStatus', - 'net::CookiePriority', 'net::CookiePartitionKey', + 'net::CookiePriority', 'net::CookieSameSite', 'net::CookieSourceScheme', # HTTP status codes - 'net::HTTP_.+', 'net::ERR_.*', + 'net::HTTP_.+', # For ConnectionInfo enumeration 'net::HttpConnectionInfo', @@ -728,9 +729,9 @@ _CONFIG = [ # Note that the Mojo callback helpers are explicitly forbidden: # Blink already has a signal for contexts being destroyed, and # other types of failures should be explicitly signalled. + '(?:.+::)?mojom::.+', 'mojo::(?!WrapCallback).+', 'mojo_base::BigBuffer.*', - '(?:.+::)?mojom::.+', 'service_manager::InterfaceProvider', # STL containers such as std::string and std::vector are discouraged @@ -748,10 +749,10 @@ _CONFIG = [ 'ui::Cursor', # UI Pointer and Hover - 'ui::PointerType', - 'ui::POINTER_TYPE_.*', - 'ui::HoverType', 'ui::HOVER_TYPE_.*', + 'ui::HoverType', + 'ui::POINTER_TYPE_.*', + 'ui::PointerType', # UI Keyconverter 'ui::DomCode', @@ -760,6 +761,10 @@ _CONFIG = [ # Accessibility base types and the non-Blink enums they # depend on. + 'ax::mojom::BoolAttribute', + 'ax::mojom::HasPopup', + 'ax::mojom::Restriction', + 'ax::mojom::State', 'ui::AXActionData', 'ui::AXEvent', 'ui::AXEventIntent', @@ -768,21 +773,17 @@ _CONFIG = [ 'ui::AXRelativeBounds', 'ui::AXTreeChecks', 'ui::AXTreeData', + 'ui::AXTreeID', + 'ui::AXTreeIDUnknown', 'ui::AXTreeSerializer', 'ui::AXTreeSource', 'ui::AXTreeUpdate', - 'ui::AXTreeID', - 'ui::AXTreeIDUnknown', - 'ui::kInvalidAXNodeID', - 'ui::kFirstGeneratedRendererNodeID', - 'ui::kLastGeneratedRendererNodeID', 'ui::kAXModeBasic', 'ui::kAXModeComplete', + 'ui::kFirstGeneratedRendererNodeID', + 'ui::kInvalidAXNodeID', + 'ui::kLastGeneratedRendererNodeID', 'ui::ToString', - 'ax::mojom::BoolAttribute', - 'ax::mojom::HasPopup', - 'ax::mojom::State', - 'ax::mojom::Restriction', # Accessibility helper functions - mostly used in Blink for # serialization. Please keep alphabetized. @@ -866,9 +867,9 @@ _CONFIG = [ 'allowed': [ # For the script streaming to be able to block when reading from a # mojo datapipe. + 'base::BlockingType', 'base::ScopedAllowBaseSyncPrimitives', 'base::ScopedBlockingCall', - 'base::BlockingType', ], }, { @@ -946,18 +947,18 @@ _CONFIG = [ 'allowed': [ 'cc::ActiveFrameSequenceTrackers', 'cc::ApplyViewportChangesArgs', - 'cc::LayerTreeSettings', - 'cc::PaintBenchmarkResult', - 'cc::RenderFrameMetadata', - 'cc::TaskGraphRunner', 'cc::ContentLayerClient', 'cc::DeadlinePolicy', 'cc::DisplayItemList', 'cc::DrawColorOp', 'cc::DrawImageOp', + 'cc::LayerTreeSettings', + 'cc::PaintBenchmarkResult', + 'cc::RenderFrameMetadata', + 'cc::RestoreOp', 'cc::SaveOp', 'cc::ScaleOp', - 'cc::RestoreOp', + 'cc::TaskGraphRunner', 'cc::TranslateOp', 'gfx::DisplayColorSpaces', 'gfx::FontRenderParams', @@ -1371,17 +1372,17 @@ _CONFIG = [ # display-related types. 'allowed': [ 'base::flat_map', + 'display::Display', 'gl::GpuPreference', 'gpu::ClientSharedImage', - 'gpu::SHARED_IMAGE_USAGE_.+', 'gpu::gles2::GLES2Interface', - 'gpu::raster::RasterInterface', 'gpu::Mailbox', 'gpu::MailboxHolder', + 'gpu::raster::RasterInterface', + 'gpu::SHARED_IMAGE_USAGE_.+', 'gpu::SharedImageInterface', 'gpu::SyncToken', 'gpu::webgpu::ReservedTexture', - 'display::Display', 'media::IsOpaque', 'media::kNoTransformation', 'media::PaintCanvasVideoRenderer', @@ -1535,17 +1536,17 @@ _CONFIG = [ 'third_party/blink/renderer/modules/mediarecorder/', ], 'allowed': [ - # TODO(crbug.com/960665): Remove base::queue once it is replaced with a WTF equivalent. - 'base::queue', 'base::ClampMul', 'base::MakeFixedFlatMap', + 'base::NumberToString', + # TODO(crbug.com/960665): Remove base::queue once it is replaced with a WTF equivalent. + 'base::queue', 'base::SharedMemory', 'base::StringPiece', - 'base::NumberToString', 'base::ThreadTaskRunnerHandle', - 'media::.+', 'libopus::.+', 'libyuv::.+', + 'media::.+', 'video_track_recorder::.+', ], 'inclass_allowed': [ @@ -1621,8 +1622,8 @@ _CONFIG = [ ], 'allowed': [ 'base::ClampMul', - 'base::IsAligned', 'base::DoNothingWithBoundArgs', + 'base::IsAligned', 'base::PlatformThreadRef', 'base::WrapRefCounted', 'cc::kNumYUVPlanes', @@ -1630,17 +1631,17 @@ _CONFIG = [ 'cc::YUVIndex', 'cc::YUVSubsampling', 'gpu::kNullSurfaceHandle', - 'gpu::SHARED_IMAGE_.+', - 'gpu::raster::RasterInterface', 'gpu::Mailbox', 'gpu::MailboxHolder', + 'gpu::raster::RasterInterface', + 'gpu::SHARED_IMAGE_.+', 'gpu::SharedImageInterface', 'gpu::SyncToken', - 'viz::RasterContextProvider', - 'viz::ReleaseCallback', - 'media::.+', 'libgav1::.+', 'libyuv::.+', + 'media::.+', + 'viz::RasterContextProvider', + 'viz::ReleaseCallback', ] }, { diff --git a/ui/aura/demo/demo_main.cc b/ui/aura/demo/demo_main.cc index 3e973fc16aee3..c425d2fc3d466 100644 --- a/ui/aura/demo/demo_main.cc +++ b/ui/aura/demo/demo_main.cc @@ -191,7 +191,7 @@ int DemoMain() { auto context_factory = std::make_unique<ui::InProcessContextFactory>( &host_frame_sink_manager, &frame_sink_manager, /*output_to_window=*/true); - base::PowerMonitor::Initialize( + base::PowerMonitor::GetInstance()->Initialize( std::make_unique<base::PowerMonitorDeviceSource>()); std::unique_ptr<aura::Env> env = aura::Env::CreateInstance(); diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc index 5180a4eb06156..fa62b0791c183 100644 --- a/ui/compositor/compositor.cc +++ b/ui/compositor/compositor.cc @@ -267,8 +267,10 @@ Compositor::Compositor(const viz::FrameSinkId& frame_sink_id, // See: http://crbug.com/956264. host_->SetVisible(true); - if (base::PowerMonitor::IsInitialized()) - base::PowerMonitor::AddPowerSuspendObserver(this); + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->IsInitialized()) { + power_monitor->AddPowerSuspendObserver(this); + } if (command_line->HasSwitch(switches::kUISlowAnimations)) { slow_animations_ = std::make_unique<ScopedAnimationDurationScaleMode>( @@ -281,8 +283,10 @@ Compositor::Compositor(const viz::FrameSinkId& frame_sink_id, Compositor::~Compositor() { TRACE_EVENT0("shutdown,viz", "Compositor::destructor"); - if (base::PowerMonitor::IsInitialized()) - base::PowerMonitor::RemovePowerSuspendObserver(this); + if (auto* power_monitor = base::PowerMonitor::GetInstance(); + power_monitor->IsInitialized()) { + power_monitor->RemovePowerSuspendObserver(this); + } for (auto& observer : observer_list_) observer.OnCompositingShuttingDown(this); diff --git a/ui/gl/swap_chain_presenter.cc b/ui/gl/swap_chain_presenter.cc index 17788e5d16b16..b44e59ecdcbb8 100644 --- a/ui/gl/swap_chain_presenter.cc +++ b/ui/gl/swap_chain_presenter.cc @@ -504,11 +504,11 @@ SwapChainPresenter::SwapChainPresenter( d3d11_device_(d3d11_device), dcomp_device_(dcomp_device), is_on_battery_power_( - base::PowerMonitor::AddPowerStateObserverAndReturnOnBatteryState( - this)) {} + base::PowerMonitor::GetInstance() + ->AddPowerStateObserverAndReturnOnBatteryState(this)) {} SwapChainPresenter::~SwapChainPresenter() { - base::PowerMonitor::RemovePowerStateObserver(this); + base::PowerMonitor::GetInstance()->RemovePowerStateObserver(this); } DXGI_FORMAT SwapChainPresenter::GetSwapChainFormat( diff --git a/ui/gl/vsync_thread_win.cc b/ui/gl/vsync_thread_win.cc index 3657b00c853f1..8031c4d48fa1b 100644 --- a/ui/gl/vsync_thread_win.cc +++ b/ui/gl/vsync_thread_win.cc @@ -177,8 +177,8 @@ VSyncThreadWin::VSyncThreadWin(Microsoft::WRL::ComPtr<IDXGIDevice> dxgi_device) vsync_provider_(gfx::kNullAcceleratedWidget), dxgi_adapter_(GetAdapter(dxgi_device.Get())), original_adapter_luid_(GetLuid(dxgi_adapter_.Get())) { - is_suspended_ = - base::PowerMonitor::AddPowerSuspendObserverAndReturnSuspendedState(this); + is_suspended_ = base::PowerMonitor::GetInstance() + ->AddPowerSuspendObserverAndReturnSuspendedState(this); vsync_thread_.StartWithOptions( base::Thread::Options(base::ThreadType::kDisplayCritical)); }