OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "device/core/device_monitor_win.h" | 5 #include "device/core/device_monitor_win.h" |
6 | 6 |
| 7 #include <dbt.h> |
7 #include <windows.h> | 8 #include <windows.h> |
8 #include <dbt.h> | 9 |
9 #include <map> | 10 #include <map> |
| 11 #include <memory> |
10 | 12 |
11 #include "base/at_exit.h" | 13 #include "base/at_exit.h" |
12 #include "base/bind.h" | 14 #include "base/bind.h" |
13 #include "base/macros.h" | 15 #include "base/macros.h" |
14 #include "base/memory/scoped_ptr.h" | |
15 #include "base/strings/string_util.h" | 16 #include "base/strings/string_util.h" |
16 #include "base/strings/sys_string_conversions.h" | 17 #include "base/strings/sys_string_conversions.h" |
17 #include "base/win/message_window.h" | 18 #include "base/win/message_window.h" |
18 | 19 |
19 namespace device { | 20 namespace device { |
20 | 21 |
21 class DeviceMonitorMessageWindow; | 22 class DeviceMonitorMessageWindow; |
22 | 23 |
23 namespace { | 24 namespace { |
24 | 25 |
(...skipping 23 matching lines...) Expand all Loading... |
48 base::Unretained(g_message_window))); | 49 base::Unretained(g_message_window))); |
49 } else { | 50 } else { |
50 delete g_message_window; | 51 delete g_message_window; |
51 g_message_window = nullptr; | 52 g_message_window = nullptr; |
52 } | 53 } |
53 } | 54 } |
54 return g_message_window; | 55 return g_message_window; |
55 } | 56 } |
56 | 57 |
57 DeviceMonitorWin* GetForDeviceInterface(const GUID& device_interface) { | 58 DeviceMonitorWin* GetForDeviceInterface(const GUID& device_interface) { |
58 scoped_ptr<DeviceMonitorWin>& device_monitor = | 59 std::unique_ptr<DeviceMonitorWin>& device_monitor = |
59 device_monitors_[device_interface]; | 60 device_monitors_[device_interface]; |
60 if (!device_monitor) { | 61 if (!device_monitor) { |
61 device_monitor.reset(new DeviceMonitorWin()); | 62 device_monitor.reset(new DeviceMonitorWin()); |
62 } | 63 } |
63 return device_monitor.get(); | 64 return device_monitor.get(); |
64 } | 65 } |
65 | 66 |
66 DeviceMonitorWin* GetForAllInterfaces() { return &all_device_monitor_; } | 67 DeviceMonitorWin* GetForAllInterfaces() { return &all_device_monitor_; } |
67 | 68 |
68 private: | 69 private: |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 device_path); | 132 device_path); |
132 } else { | 133 } else { |
133 return false; | 134 return false; |
134 } | 135 } |
135 *result = NULL; | 136 *result = NULL; |
136 return true; | 137 return true; |
137 } | 138 } |
138 return false; | 139 return false; |
139 } | 140 } |
140 | 141 |
141 std::map<GUID, scoped_ptr<DeviceMonitorWin>, CompareGUID> device_monitors_; | 142 std::map<GUID, std::unique_ptr<DeviceMonitorWin>, CompareGUID> |
| 143 device_monitors_; |
142 DeviceMonitorWin all_device_monitor_; | 144 DeviceMonitorWin all_device_monitor_; |
143 scoped_ptr<base::win::MessageWindow> window_; | 145 std::unique_ptr<base::win::MessageWindow> window_; |
144 HDEVNOTIFY notify_handle_ = NULL; | 146 HDEVNOTIFY notify_handle_ = NULL; |
145 | 147 |
146 DISALLOW_COPY_AND_ASSIGN(DeviceMonitorMessageWindow); | 148 DISALLOW_COPY_AND_ASSIGN(DeviceMonitorMessageWindow); |
147 }; | 149 }; |
148 | 150 |
149 void DeviceMonitorWin::Observer::OnDeviceAdded(const GUID& class_guid, | 151 void DeviceMonitorWin::Observer::OnDeviceAdded(const GUID& class_guid, |
150 const std::string& device_path) { | 152 const std::string& device_path) { |
151 } | 153 } |
152 | 154 |
153 void DeviceMonitorWin::Observer::OnDeviceRemoved( | 155 void DeviceMonitorWin::Observer::OnDeviceRemoved( |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 OnDeviceAdded(class_guid, device_path)); | 198 OnDeviceAdded(class_guid, device_path)); |
197 } | 199 } |
198 | 200 |
199 void DeviceMonitorWin::NotifyDeviceRemoved(const GUID& class_guid, | 201 void DeviceMonitorWin::NotifyDeviceRemoved(const GUID& class_guid, |
200 const std::string& device_path) { | 202 const std::string& device_path) { |
201 FOR_EACH_OBSERVER(Observer, observer_list_, | 203 FOR_EACH_OBSERVER(Observer, observer_list_, |
202 OnDeviceRemoved(class_guid, device_path)); | 204 OnDeviceRemoved(class_guid, device_path)); |
203 } | 205 } |
204 | 206 |
205 } // namespace device | 207 } // namespace device |
OLD | NEW |