Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Side by Side Diff: device/hid/input_service_linux.cc

Issue 2014933002: Move DeviceMonitorLinux to //device/core. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added comment for boolean parameter. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « device/hid/input_service_linux.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/hid/input_service_linux.h" 5 #include "device/hid/input_service_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/macros.h" 12 #include "base/macros.h"
13 #include "base/scoped_observer.h"
13 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
14 #include "base/strings/string_util.h" 15 #include "base/strings/string_util.h"
15 #include "base/threading/thread_restrictions.h" 16 #include "base/threading/thread_restrictions.h"
17 #include "device/core/device_monitor_linux.h"
16 #include "device/udev_linux/udev.h" 18 #include "device/udev_linux/udev.h"
17 19
18 namespace device { 20 namespace device {
19 21
20 namespace { 22 namespace {
21 23
22 const char kSubsystemHid[] = "hid"; 24 const char kSubsystemHid[] = "hid";
23 const char kSubsystemInput[] = "input"; 25 const char kSubsystemInput[] = "input";
24 const char kSubsystemMisc[] = "misc"; 26 const char kSubsystemMisc[] = "misc";
25 const char kTypeBluetooth[] = "bluetooth"; 27 const char kTypeBluetooth[] = "bluetooth";
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 base::TrimString(name, "\"", &result); 84 base::TrimString(name, "\"", &result);
83 return result; 85 return result;
84 } 86 }
85 87
86 class InputServiceLinuxImpl : public InputServiceLinux, 88 class InputServiceLinuxImpl : public InputServiceLinux,
87 public DeviceMonitorLinux::Observer { 89 public DeviceMonitorLinux::Observer {
88 public: 90 public:
89 // Implements DeviceMonitorLinux::Observer: 91 // Implements DeviceMonitorLinux::Observer:
90 void OnDeviceAdded(udev_device* device) override; 92 void OnDeviceAdded(udev_device* device) override;
91 void OnDeviceRemoved(udev_device* device) override; 93 void OnDeviceRemoved(udev_device* device) override;
94 void WillDestroyMonitorMessageLoop() override;
92 95
93 private: 96 private:
94 friend class InputServiceLinux; 97 friend class InputServiceLinux;
95 98
96 InputServiceLinuxImpl(); 99 InputServiceLinuxImpl();
97 ~InputServiceLinuxImpl() override; 100 ~InputServiceLinuxImpl() override;
98 101
102 ScopedObserver<DeviceMonitorLinux, DeviceMonitorLinux::Observer> observer_;
103
99 DISALLOW_COPY_AND_ASSIGN(InputServiceLinuxImpl); 104 DISALLOW_COPY_AND_ASSIGN(InputServiceLinuxImpl);
100 }; 105 };
101 106
102 InputServiceLinuxImpl::InputServiceLinuxImpl() { 107 InputServiceLinuxImpl::InputServiceLinuxImpl() : observer_(this) {
103 base::ThreadRestrictions::AssertIOAllowed(); 108 base::ThreadRestrictions::AssertIOAllowed();
104 base::MessageLoop::current()->AddDestructionObserver(this);
105 109
106 DeviceMonitorLinux::GetInstance()->AddObserver(this); 110 DeviceMonitorLinux* monitor = DeviceMonitorLinux::GetInstance();
107 DeviceMonitorLinux::GetInstance()->Enumerate(base::Bind( 111 observer_.Add(monitor);
108 &InputServiceLinuxImpl::OnDeviceAdded, base::Unretained(this))); 112 monitor->Enumerate(base::Bind(&InputServiceLinuxImpl::OnDeviceAdded,
113 base::Unretained(this)));
109 } 114 }
110 115
111 InputServiceLinuxImpl::~InputServiceLinuxImpl() { 116 InputServiceLinuxImpl::~InputServiceLinuxImpl() {
112 if (DeviceMonitorLinux::HasInstance())
113 DeviceMonitorLinux::GetInstance()->RemoveObserver(this);
114 base::MessageLoop::current()->RemoveDestructionObserver(this);
115 } 117 }
116 118
117 void InputServiceLinuxImpl::OnDeviceAdded(udev_device* device) { 119 void InputServiceLinuxImpl::OnDeviceAdded(udev_device* device) {
118 DCHECK(CalledOnValidThread()); 120 DCHECK(CalledOnValidThread());
119 if (!device) 121 if (!device)
120 return; 122 return;
121 const char* devnode = udev_device_get_devnode(device); 123 const char* devnode = udev_device_get_devnode(device);
122 if (!devnode) 124 if (!devnode)
123 return; 125 return;
124 126
(...skipping 29 matching lines...) Expand all
154 156
155 void InputServiceLinuxImpl::OnDeviceRemoved(udev_device* device) { 157 void InputServiceLinuxImpl::OnDeviceRemoved(udev_device* device) {
156 DCHECK(CalledOnValidThread()); 158 DCHECK(CalledOnValidThread());
157 if (!device) 159 if (!device)
158 return; 160 return;
159 const char* devnode = udev_device_get_devnode(device); 161 const char* devnode = udev_device_get_devnode(device);
160 if (devnode) 162 if (devnode)
161 RemoveDevice(devnode); 163 RemoveDevice(devnode);
162 } 164 }
163 165
166 void InputServiceLinuxImpl::WillDestroyMonitorMessageLoop() {
167 DCHECK(CalledOnValidThread());
168 g_input_service_linux_ptr.Get().reset(nullptr);
169 }
170
164 } // namespace 171 } // namespace
165 172
166 InputServiceLinux::InputDeviceInfo::InputDeviceInfo() 173 InputServiceLinux::InputDeviceInfo::InputDeviceInfo()
167 : subsystem(SUBSYSTEM_UNKNOWN), 174 : subsystem(SUBSYSTEM_UNKNOWN),
168 type(TYPE_UNKNOWN), 175 type(TYPE_UNKNOWN),
169 is_accelerometer(false), 176 is_accelerometer(false),
170 is_joystick(false), 177 is_joystick(false),
171 is_key(false), 178 is_key(false),
172 is_keyboard(false), 179 is_keyboard(false),
173 is_mouse(false), 180 is_mouse(false),
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 bool InputServiceLinux::GetDeviceInfo(const std::string& id, 232 bool InputServiceLinux::GetDeviceInfo(const std::string& id,
226 InputDeviceInfo* info) const { 233 InputDeviceInfo* info) const {
227 DCHECK(CalledOnValidThread()); 234 DCHECK(CalledOnValidThread());
228 DeviceMap::const_iterator it = devices_.find(id); 235 DeviceMap::const_iterator it = devices_.find(id);
229 if (it == devices_.end()) 236 if (it == devices_.end())
230 return false; 237 return false;
231 *info = it->second; 238 *info = it->second;
232 return true; 239 return true;
233 } 240 }
234 241
235 void InputServiceLinux::WillDestroyCurrentMessageLoop() {
236 DCHECK(CalledOnValidThread());
237 g_input_service_linux_ptr.Get().reset(NULL);
238 }
239
240 void InputServiceLinux::AddDevice(const InputDeviceInfo& info) { 242 void InputServiceLinux::AddDevice(const InputDeviceInfo& info) {
241 devices_[info.id] = info; 243 devices_[info.id] = info;
242 FOR_EACH_OBSERVER(Observer, observers_, OnInputDeviceAdded(info)); 244 FOR_EACH_OBSERVER(Observer, observers_, OnInputDeviceAdded(info));
243 } 245 }
244 246
245 void InputServiceLinux::RemoveDevice(const std::string& id) { 247 void InputServiceLinux::RemoveDevice(const std::string& id) {
246 devices_.erase(id); 248 devices_.erase(id);
247 FOR_EACH_OBSERVER(Observer, observers_, OnInputDeviceRemoved(id)); 249 FOR_EACH_OBSERVER(Observer, observers_, OnInputDeviceRemoved(id));
248 } 250 }
249 251
250 bool InputServiceLinux::CalledOnValidThread() const { 252 bool InputServiceLinux::CalledOnValidThread() const {
251 return thread_checker_.CalledOnValidThread(); 253 return thread_checker_.CalledOnValidThread();
252 } 254 }
253 255
254 } // namespace device 256 } // namespace device
OLDNEW
« no previous file with comments | « device/hid/input_service_linux.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698