Index: device/hid/hid_service.cc |
diff --git a/device/hid/hid_service.cc b/device/hid/hid_service.cc |
index 8aa7cd4a37755d0b618b233704d9b60a1dee9795..0e2f0d4c7716b4cda9ac777657487bb1204cc15f 100644 |
--- a/device/hid/hid_service.cc |
+++ b/device/hid/hid_service.cc |
@@ -20,13 +20,22 @@ |
namespace device { |
-namespace { |
- |
-// The instance will be reset when message loop destroys. |
-base::LazyInstance<scoped_ptr<HidService> >::Leaky g_hid_service_ptr = |
- LAZY_INSTANCE_INITIALIZER; |
+HidService* HidService::Create( |
+ scoped_refptr<base::MessageLoopProxy> ui_message_loop) { |
+#if defined(OS_LINUX) && defined(USE_UDEV) |
+ return new HidServiceLinux(ui_message_loop); |
+#elif defined(OS_MACOSX) |
+ return new HidServiceMac(); |
+#elif defined(OS_WIN) |
+ return new HidServiceWin(); |
+#else |
+ return NULL; |
+#endif |
+} |
-} // namespace |
+HidService::~HidService() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+} |
void HidService::GetDevices(std::vector<HidDeviceInfo>* devices) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
@@ -48,32 +57,9 @@ bool HidService::GetDeviceInfo(const HidDeviceId& device_id, |
return true; |
} |
-void HidService::WillDestroyCurrentMessageLoop() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- g_hid_service_ptr.Get().reset(NULL); |
-} |
- |
HidService::HidService() { |
base::ThreadRestrictions::AssertIOAllowed(); |
DCHECK(thread_checker_.CalledOnValidThread()); |
- base::MessageLoop::current()->AddDestructionObserver(this); |
-} |
- |
-HidService::~HidService() { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- base::MessageLoop::current()->RemoveDestructionObserver(this); |
-} |
- |
-HidService* HidService::CreateInstance() { |
-#if defined(OS_LINUX) && defined(USE_UDEV) |
- return new HidServiceLinux(); |
-#elif defined(OS_MACOSX) |
- return new HidServiceMac(); |
-#elif defined(OS_WIN) |
- return new HidServiceWin(); |
-#else |
- return NULL; |
-#endif |
} |
void HidService::AddDevice(const HidDeviceInfo& info) { |
@@ -94,10 +80,4 @@ const HidService::DeviceMap& HidService::GetDevicesNoEnumerate() const { |
return devices_; |
} |
-HidService* HidService::GetInstance() { |
- if (!g_hid_service_ptr.Get().get()) |
- g_hid_service_ptr.Get().reset(CreateInstance()); |
- return g_hid_service_ptr.Get().get(); |
-} |
- |
} // namespace device |