Roll ANGLE edd84e41482..cd1db9e6c937.
[chromium-blink-merge.git] / base / system_monitor / system_monitor.cc
blob11dd000a16e44c6672004a3f5251d8cf29a32c32
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"
7 #include <utility>
9 #include "base/logging.h"
10 #include "base/message_loop/message_loop.h"
11 #include "base/time/time.h"
13 namespace base {
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;
29 // static
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);
52 } // namespace base