[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 | |||||
Sebastien Marchand | 0f56c3cd | 2018-10-05 15:29:27 | [diff] [blame] | 5 | #include "base/system/system_monitor.h" |
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 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] | 8f9a3a5 | 2013-06-28 15:14:18 | [diff] [blame] | 10 | #include "base/time/time.h" |
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 11 | |
12 | namespace base { | ||||
13 | |||||
Ivan Kotenkov | a16212a5 | 2017-11-08 12:37:33 | [diff] [blame] | 14 | static SystemMonitor* g_system_monitor = nullptr; |
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 15 | |
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 16 | SystemMonitor::SystemMonitor() |
Sebastien Marchand | 0f56c3cd | 2018-10-05 15:29:27 | [diff] [blame] | 17 | : devices_changed_observer_list_( |
[email protected] | 6c5905b7 | 2013-04-03 19:06:51 | [diff] [blame] | 18 | new ObserverListThreadSafe<DevicesChangedObserver>()) { |
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 19 | DCHECK(!g_system_monitor); |
20 | g_system_monitor = this; | ||||
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 21 | } |
22 | |||||
23 | SystemMonitor::~SystemMonitor() { | ||||
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 24 | DCHECK_EQ(this, g_system_monitor); |
Ivan Kotenkov | a16212a5 | 2017-11-08 12:37:33 | [diff] [blame] | 25 | g_system_monitor = nullptr; |
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 26 | } |
27 | |||||
28 | // static | ||||
29 | SystemMonitor* SystemMonitor::Get() { | ||||
30 | return g_system_monitor; | ||||
31 | } | ||||
32 | |||||
[email protected] | 515be83 | 2012-07-31 01:16:35 | [diff] [blame] | 33 | void SystemMonitor::ProcessDevicesChanged(DeviceType device_type) { |
34 | NotifyDevicesChanged(device_type); | ||||
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 35 | } |
36 | |||||
[email protected] | cd1cd4c0 | 2011-11-15 01:59:49 | [diff] [blame] | 37 | void SystemMonitor::AddDevicesChangedObserver(DevicesChangedObserver* obs) { |
38 | devices_changed_observer_list_->AddObserver(obs); | ||||
39 | } | ||||
40 | |||||
41 | void SystemMonitor::RemoveDevicesChangedObserver(DevicesChangedObserver* obs) { | ||||
42 | devices_changed_observer_list_->RemoveObserver(obs); | ||||
43 | } | ||||
44 | |||||
[email protected] | 515be83 | 2012-07-31 01:16:35 | [diff] [blame] | 45 | void SystemMonitor::NotifyDevicesChanged(DeviceType device_type) { |
46 | DVLOG(1) << "DevicesChanged with device type " << device_type; | ||||
[email protected] | cd1cd4c0 | 2011-11-15 01:59:49 | [diff] [blame] | 47 | devices_changed_observer_list_->Notify( |
reillyg | 9a77a72 | 2015-02-09 20:18:33 | [diff] [blame] | 48 | FROM_HERE, &DevicesChangedObserver::OnDevicesChanged, device_type); |
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 49 | } |
50 | |||||
[email protected] | e41d7dd | 2011-05-18 07:29:56 | [diff] [blame] | 51 | } // namespace base |