| Index: device/usb/usb_service_win.cc
|
| diff --git a/device/usb/usb_service_win.cc b/device/usb/usb_service_win.cc
|
| index 8cc9c0c9a2e16938b5af892a012e172f4d4493b1..848766ebdc11de56ebdff7fdccabf459cc49ac04 100644
|
| --- a/device/usb/usb_service_win.cc
|
| +++ b/device/usb/usb_service_win.cc
|
| @@ -170,12 +170,12 @@ bool GetHubDevicePath(const std::string& instance_id,
|
|
|
| } // namespace
|
|
|
| -class UsbServiceWin::BlockingThreadHelper {
|
| +class UsbServiceWin::BlockingTaskHelper {
|
| public:
|
| - explicit BlockingThreadHelper(base::WeakPtr<UsbServiceWin> service)
|
| + explicit BlockingTaskHelper(base::WeakPtr<UsbServiceWin> service)
|
| : service_task_runner_(base::ThreadTaskRunnerHandle::Get()),
|
| service_(service) {}
|
| - ~BlockingThreadHelper() {}
|
| + ~BlockingTaskHelper() {}
|
|
|
| void EnumerateDevices() {
|
| ScopedDevInfo dev_info(
|
| @@ -276,9 +276,8 @@ class UsbServiceWin::BlockingThreadHelper {
|
| base::WeakPtr<UsbServiceWin> service_;
|
| };
|
|
|
| -UsbServiceWin::UsbServiceWin(
|
| - scoped_refptr<base::SequencedTaskRunner> blocking_task_runner)
|
| - : UsbService(blocking_task_runner),
|
| +UsbServiceWin::UsbServiceWin()
|
| + : UsbService(CreateBlockingTaskRunner()),
|
| device_observer_(this),
|
| weak_factory_(this) {
|
| DeviceMonitorWin* device_monitor =
|
| @@ -286,13 +285,20 @@ UsbServiceWin::UsbServiceWin(
|
| if (device_monitor)
|
| device_observer_.Add(device_monitor);
|
|
|
| - helper_ = new BlockingThreadHelper(weak_factory_.GetWeakPtr());
|
| - blocking_task_runner->PostTask(
|
| - FROM_HERE, base::Bind(&BlockingThreadHelper::EnumerateDevices,
|
| - base::Unretained(helper_)));
|
| + helper_ = base::MakeUnique<BlockingTaskHelper>(weak_factory_.GetWeakPtr());
|
| + blocking_task_runner()->PostTask(
|
| + FROM_HERE, base::Bind(&BlockingTaskHelper::EnumerateDevices,
|
| + base::Unretained(helper_.get())));
|
| +}
|
| +
|
| +UsbServiceWin::~UsbServiceWin() {
|
| + DCHECK(!helper_);
|
| }
|
|
|
| -UsbServiceWin::~UsbServiceWin() {}
|
| +void UsbServiceWin::Shutdown() {
|
| + blocking_task_runner()->DeleteSoon(FROM_HERE, helper_.release());
|
| + UsbService::Shutdown();
|
| +}
|
|
|
| void UsbServiceWin::GetDevices(const GetDevicesCallback& callback) {
|
| DCHECK(CalledOnValidThread());
|
| @@ -305,8 +311,8 @@ void UsbServiceWin::GetDevices(const GetDevicesCallback& callback) {
|
| void UsbServiceWin::OnDeviceAdded(const GUID& class_guid,
|
| const std::string& device_path) {
|
| blocking_task_runner()->PostTask(
|
| - FROM_HERE, base::Bind(&BlockingThreadHelper::EnumerateDevicePath,
|
| - base::Unretained(helper_), device_path));
|
| + FROM_HERE, base::Bind(&BlockingTaskHelper::EnumerateDevicePath,
|
| + base::Unretained(helper_.get()), device_path));
|
| }
|
|
|
| void UsbServiceWin::OnDeviceRemoved(const GUID& class_guid,
|
|
|