xref: /aosp_15_r20/external/cronet/base/system/system_monitor.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "base/system/system_monitor.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include <utility>
8*6777b538SAndroid Build Coastguard Worker 
9*6777b538SAndroid Build Coastguard Worker #include "base/logging.h"
10*6777b538SAndroid Build Coastguard Worker #include "base/time/time.h"
11*6777b538SAndroid Build Coastguard Worker 
12*6777b538SAndroid Build Coastguard Worker namespace base {
13*6777b538SAndroid Build Coastguard Worker 
14*6777b538SAndroid Build Coastguard Worker static SystemMonitor* g_system_monitor = nullptr;
15*6777b538SAndroid Build Coastguard Worker 
SystemMonitor()16*6777b538SAndroid Build Coastguard Worker SystemMonitor::SystemMonitor()
17*6777b538SAndroid Build Coastguard Worker     : devices_changed_observer_list_(
18*6777b538SAndroid Build Coastguard Worker           new ObserverListThreadSafe<DevicesChangedObserver>()) {
19*6777b538SAndroid Build Coastguard Worker   DCHECK(!g_system_monitor);
20*6777b538SAndroid Build Coastguard Worker   g_system_monitor = this;
21*6777b538SAndroid Build Coastguard Worker }
22*6777b538SAndroid Build Coastguard Worker 
~SystemMonitor()23*6777b538SAndroid Build Coastguard Worker SystemMonitor::~SystemMonitor() {
24*6777b538SAndroid Build Coastguard Worker   DCHECK_EQ(this, g_system_monitor);
25*6777b538SAndroid Build Coastguard Worker   g_system_monitor = nullptr;
26*6777b538SAndroid Build Coastguard Worker }
27*6777b538SAndroid Build Coastguard Worker 
28*6777b538SAndroid Build Coastguard Worker // static
Get()29*6777b538SAndroid Build Coastguard Worker SystemMonitor* SystemMonitor::Get() {
30*6777b538SAndroid Build Coastguard Worker   return g_system_monitor;
31*6777b538SAndroid Build Coastguard Worker }
32*6777b538SAndroid Build Coastguard Worker 
ProcessDevicesChanged(DeviceType device_type)33*6777b538SAndroid Build Coastguard Worker void SystemMonitor::ProcessDevicesChanged(DeviceType device_type) {
34*6777b538SAndroid Build Coastguard Worker   NotifyDevicesChanged(device_type);
35*6777b538SAndroid Build Coastguard Worker }
36*6777b538SAndroid Build Coastguard Worker 
AddDevicesChangedObserver(DevicesChangedObserver * obs)37*6777b538SAndroid Build Coastguard Worker void SystemMonitor::AddDevicesChangedObserver(DevicesChangedObserver* obs) {
38*6777b538SAndroid Build Coastguard Worker   devices_changed_observer_list_->AddObserver(obs);
39*6777b538SAndroid Build Coastguard Worker }
40*6777b538SAndroid Build Coastguard Worker 
RemoveDevicesChangedObserver(DevicesChangedObserver * obs)41*6777b538SAndroid Build Coastguard Worker void SystemMonitor::RemoveDevicesChangedObserver(DevicesChangedObserver* obs) {
42*6777b538SAndroid Build Coastguard Worker   devices_changed_observer_list_->RemoveObserver(obs);
43*6777b538SAndroid Build Coastguard Worker }
44*6777b538SAndroid Build Coastguard Worker 
NotifyDevicesChanged(DeviceType device_type)45*6777b538SAndroid Build Coastguard Worker void SystemMonitor::NotifyDevicesChanged(DeviceType device_type) {
46*6777b538SAndroid Build Coastguard Worker   DVLOG(1) << "DevicesChanged with device type " << device_type;
47*6777b538SAndroid Build Coastguard Worker   devices_changed_observer_list_->Notify(
48*6777b538SAndroid Build Coastguard Worker       FROM_HERE, &DevicesChangedObserver::OnDevicesChanged, device_type);
49*6777b538SAndroid Build Coastguard Worker }
50*6777b538SAndroid Build Coastguard Worker 
51*6777b538SAndroid Build Coastguard Worker }  // namespace base
52