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 WorkerSystemMonitor::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 WorkerSystemMonitor::~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 WorkerSystemMonitor* 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 Workervoid 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 Workervoid 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 Workervoid 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 Workervoid 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