[email protected] | df6c419 | 2012-03-02 23:13:40 | [diff] [blame] | 1 | // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. | ||||
4 | |||||
5 | #include "base/system_monitor/system_monitor.h" | ||||
6 | |||||
[email protected] | 04b4c67 | 2012-05-21 22:24:14 | [diff] [blame] | 7 | #include <utility> |
8 | |||||
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 9 | #include "base/logging.h" |
[email protected] | 495cad9 | 2013-07-18 08:12:40 | [diff] [blame] | 10 | #include "base/message_loop/message_loop.h" |
[email protected] | 8f9a3a5 | 2013-06-28 15:14:18 | [diff] [blame] | 11 | #include "base/time/time.h" |
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 12 | |
13 | namespace base { | ||||
14 | |||||
15 | static SystemMonitor* g_system_monitor = NULL; | ||||
16 | |||||
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 17 | SystemMonitor::SystemMonitor() |
[email protected] | 6c5905b7 | 2013-04-03 19:06:51 | [diff] [blame] | 18 | : devices_changed_observer_list_( |
19 | new ObserverListThreadSafe<DevicesChangedObserver>()) { | ||||
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 20 | DCHECK(!g_system_monitor); |
21 | g_system_monitor = this; | ||||
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 22 | } |
23 | |||||
24 | SystemMonitor::~SystemMonitor() { | ||||
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 25 | DCHECK_EQ(this, g_system_monitor); |
26 | g_system_monitor = NULL; | ||||
27 | } | ||||
28 | |||||
29 | // static | ||||
30 | SystemMonitor* SystemMonitor::Get() { | ||||
31 | return g_system_monitor; | ||||
32 | } | ||||
33 | |||||
[email protected] | 515be83 | 2012-07-31 01:16:35 | [diff] [blame] | 34 | void SystemMonitor::ProcessDevicesChanged(DeviceType device_type) { |
35 | NotifyDevicesChanged(device_type); | ||||
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 36 | } |
37 | |||||
[email protected] | cd1cd4c0 | 2011-11-15 01:59:49 | [diff] [blame] | 38 | void SystemMonitor::AddDevicesChangedObserver(DevicesChangedObserver* obs) { |
39 | devices_changed_observer_list_->AddObserver(obs); | ||||
40 | } | ||||
41 | |||||
42 | void SystemMonitor::RemoveDevicesChangedObserver(DevicesChangedObserver* obs) { | ||||
43 | devices_changed_observer_list_->RemoveObserver(obs); | ||||
44 | } | ||||
45 | |||||
[email protected] | 515be83 | 2012-07-31 01:16:35 | [diff] [blame] | 46 | void SystemMonitor::NotifyDevicesChanged(DeviceType device_type) { |
47 | DVLOG(1) << "DevicesChanged with device type " << device_type; | ||||
[email protected] | cd1cd4c0 | 2011-11-15 01:59:49 | [diff] [blame] | 48 | devices_changed_observer_list_->Notify( |
reillyg | 9a77a72 | 2015-02-09 20:18:33 | [diff] [blame] | 49 | FROM_HERE, &DevicesChangedObserver::OnDevicesChanged, device_type); |
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 50 | } |
51 | |||||
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 52 | } // namespace base |