1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/system_monitor/system_monitor.h"
9 #include "base/logging.h"
10 #include "base/message_loop/message_loop.h"
11 #include "base/time/time.h"
15 static SystemMonitor
* g_system_monitor
= NULL
;
17 SystemMonitor::SystemMonitor()
18 : devices_changed_observer_list_(
19 new ObserverListThreadSafe
<DevicesChangedObserver
>()) {
20 DCHECK(!g_system_monitor
);
21 g_system_monitor
= this;
24 SystemMonitor::~SystemMonitor() {
25 DCHECK_EQ(this, g_system_monitor
);
26 g_system_monitor
= NULL
;
30 SystemMonitor
* SystemMonitor::Get() {
31 return g_system_monitor
;
34 void SystemMonitor::ProcessDevicesChanged(DeviceType device_type
) {
35 NotifyDevicesChanged(device_type
);
38 void SystemMonitor::AddDevicesChangedObserver(DevicesChangedObserver
* obs
) {
39 devices_changed_observer_list_
->AddObserver(obs
);
42 void SystemMonitor::RemoveDevicesChangedObserver(DevicesChangedObserver
* obs
) {
43 devices_changed_observer_list_
->RemoveObserver(obs
);
46 void SystemMonitor::NotifyDevicesChanged(DeviceType device_type
) {
47 DVLOG(1) << "DevicesChanged with device type " << device_type
;
48 devices_changed_observer_list_
->Notify(
49 &DevicesChangedObserver::OnDevicesChanged
, device_type
);