| Index: components/usb_service/usb_service_impl.cc
|
| diff --git a/components/usb_service/usb_service_impl.cc b/components/usb_service/usb_service_impl.cc
|
| index a77749e7d4da3a245481aacbeb296bfe4e98ecaf..051bead8634bcadc6504934a32b63791e788cc24 100644
|
| --- a/components/usb_service/usb_service_impl.cc
|
| +++ b/components/usb_service/usb_service_impl.cc
|
| @@ -9,11 +9,11 @@
|
|
|
| #include "base/lazy_instance.h"
|
| #include "base/message_loop/message_loop.h"
|
| +#include "base/single_thread_task_runner.h"
|
| #include "base/stl_util.h"
|
| #include "components/usb_service/usb_context.h"
|
| #include "components/usb_service/usb_device_impl.h"
|
| #include "components/usb_service/usb_error.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| #include "third_party/libusb/src/libusb/libusb.h"
|
|
|
| namespace usb_service {
|
| @@ -32,7 +32,9 @@ class UsbServiceImpl
|
| : public UsbService,
|
| private base::MessageLoop::DestructionObserver {
|
| public:
|
| - explicit UsbServiceImpl(PlatformUsbContext context);
|
| + explicit UsbServiceImpl(
|
| + PlatformUsbContext context,
|
| + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
|
| virtual ~UsbServiceImpl();
|
|
|
| private:
|
| @@ -48,6 +50,8 @@ class UsbServiceImpl
|
| void RefreshDevices();
|
|
|
| scoped_refptr<UsbContext> context_;
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
|
| + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
|
|
|
| // TODO(ikarienator): Figure out a better solution.
|
| uint32 next_unique_id_;
|
| @@ -85,8 +89,12 @@ void UsbServiceImpl::WillDestroyCurrentMessageLoop() {
|
| g_usb_service_instance.Get().reset(NULL);
|
| }
|
|
|
| -UsbServiceImpl::UsbServiceImpl(PlatformUsbContext context)
|
| - : context_(new UsbContext(context)), next_unique_id_(0) {
|
| +UsbServiceImpl::UsbServiceImpl(
|
| + PlatformUsbContext context,
|
| + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner)
|
| + : context_(new UsbContext(context)),
|
| + ui_task_runner_(ui_task_runner),
|
| + next_unique_id_(0) {
|
| base::MessageLoop::current()->AddDestructionObserver(this);
|
| }
|
|
|
| @@ -124,6 +132,7 @@ void UsbServiceImpl::RefreshDevices() {
|
| continue;
|
| }
|
| UsbDeviceImpl* new_device = new UsbDeviceImpl(context_,
|
| + ui_task_runner_,
|
| platform_devices[i],
|
| descriptor.idVendor,
|
| descriptor.idProduct,
|
| @@ -153,7 +162,8 @@ void UsbServiceImpl::RefreshDevices() {
|
| }
|
|
|
| // static
|
| -UsbService* UsbService::GetInstance() {
|
| +UsbService* UsbService::GetInstance(
|
| + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
|
| UsbService* instance = g_usb_service_instance.Get().get();
|
| if (!instance) {
|
| PlatformUsbContext context = NULL;
|
| @@ -166,7 +176,7 @@ UsbService* UsbService::GetInstance() {
|
| if (!context)
|
| return NULL;
|
|
|
| - instance = new UsbServiceImpl(context);
|
| + instance = new UsbServiceImpl(context, ui_task_runner);
|
| g_usb_service_instance.Get().reset(instance);
|
| }
|
| return instance;
|
|
|