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_linux.h" | 5 #include "device/base/device_monitor_linux.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "base/threading/thread_restrictions.h" | 12 #include "base/threading/thread_restrictions.h" |
13 #include "device/udev_linux/udev.h" | 13 #include "device/udev_linux/udev.h" |
14 | 14 |
15 namespace device { | 15 namespace device { |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 i = udev_list_entry_get_next(i)) { | 104 i = udev_list_entry_get_next(i)) { |
105 ScopedUdevDevicePtr device( | 105 ScopedUdevDevicePtr device( |
106 udev_device_new_from_syspath(udev_.get(), udev_list_entry_get_name(i))); | 106 udev_device_new_from_syspath(udev_.get(), udev_list_entry_get_name(i))); |
107 if (device) | 107 if (device) |
108 callback.Run(device.get()); | 108 callback.Run(device.get()); |
109 } | 109 } |
110 } | 110 } |
111 | 111 |
112 void DeviceMonitorLinux::WillDestroyCurrentMessageLoop() { | 112 void DeviceMonitorLinux::WillDestroyCurrentMessageLoop() { |
113 DCHECK(thread_checker_.CalledOnValidThread()); | 113 DCHECK(thread_checker_.CalledOnValidThread()); |
114 FOR_EACH_OBSERVER(Observer, observers_, WillDestroyMonitorMessageLoop()); | 114 for (auto& observer : observers_) |
| 115 observer.WillDestroyMonitorMessageLoop(); |
115 g_device_monitor_linux_ptr.Get().reset(nullptr); | 116 g_device_monitor_linux_ptr.Get().reset(nullptr); |
116 } | 117 } |
117 | 118 |
118 DeviceMonitorLinux::~DeviceMonitorLinux() { | 119 DeviceMonitorLinux::~DeviceMonitorLinux() { |
119 DCHECK(thread_checker_.CalledOnValidThread()); | 120 DCHECK(thread_checker_.CalledOnValidThread()); |
120 base::MessageLoop::current()->RemoveDestructionObserver(this); | 121 base::MessageLoop::current()->RemoveDestructionObserver(this); |
121 close(monitor_fd_); | 122 close(monitor_fd_); |
122 } | 123 } |
123 | 124 |
124 void DeviceMonitorLinux::OnMonitorCanReadWithoutBlocking() { | 125 void DeviceMonitorLinux::OnMonitorCanReadWithoutBlocking() { |
125 DCHECK(thread_checker_.CalledOnValidThread()); | 126 DCHECK(thread_checker_.CalledOnValidThread()); |
126 | 127 |
127 ScopedUdevDevicePtr device(udev_monitor_receive_device(monitor_.get())); | 128 ScopedUdevDevicePtr device(udev_monitor_receive_device(monitor_.get())); |
128 if (!device) | 129 if (!device) |
129 return; | 130 return; |
130 | 131 |
131 std::string action(udev_device_get_action(device.get())); | 132 std::string action(udev_device_get_action(device.get())); |
132 if (action == kUdevActionAdd) | 133 if (action == kUdevActionAdd) { |
133 FOR_EACH_OBSERVER(Observer, observers_, OnDeviceAdded(device.get())); | 134 for (auto& observer : observers_) |
134 else if (action == kUdevActionRemove) | 135 observer.OnDeviceAdded(device.get()); |
135 FOR_EACH_OBSERVER(Observer, observers_, OnDeviceRemoved(device.get())); | 136 } else if (action == kUdevActionRemove) { |
| 137 for (auto& observer : observers_) |
| 138 observer.OnDeviceRemoved(device.get()); |
| 139 } |
136 } | 140 } |
137 | 141 |
138 } // namespace device | 142 } // namespace device |
OLD | NEW |