| Index: device/devices_app/usb/device_manager_impl.cc
|
| diff --git a/device/devices_app/usb/device_manager_impl.cc b/device/devices_app/usb/device_manager_impl.cc
|
| index 48c9361b69ca23a64321f2b3ae8b58949d8e117a..333df78bdb27cdd050b3dee24220d67746c1da15 100644
|
| --- a/device/devices_app/usb/device_manager_impl.cc
|
| +++ b/device/devices_app/usb/device_manager_impl.cc
|
| @@ -53,69 +53,14 @@ void GetDevicesOnServiceThread(
|
|
|
| void GetDeviceOnServiceThread(
|
| const mojo::String& guid,
|
| - const base::Callback<void(DeviceInfoPtr)>& callback,
|
| + const base::Callback<void(scoped_refptr<UsbDevice>)>& callback,
|
| scoped_refptr<base::TaskRunner> callback_task_runner) {
|
| - DeviceInfoPtr device_info;
|
| DCHECK(DeviceClient::Get());
|
| + scoped_refptr<UsbDevice> device;
|
| UsbService* usb_service = DeviceClient::Get()->GetUsbService();
|
| - if (usb_service) {
|
| - scoped_refptr<UsbDevice> device = usb_service->GetDevice(guid);
|
| - if (device)
|
| - device_info = DeviceInfo::From(*device);
|
| - }
|
| -
|
| - callback_task_runner->PostTask(
|
| - FROM_HERE, base::Bind(callback, base::Passed(&device_info)));
|
| -}
|
| -
|
| -void RunOpenDeviceCallback(const DeviceManager::OpenDeviceCallback& callback,
|
| - OpenDeviceError error) {
|
| - callback.Run(error);
|
| -}
|
| -
|
| -void OnOpenDeviceOnServiceThread(
|
| - mojo::InterfaceRequest<Device> device_request,
|
| - const DeviceManager::OpenDeviceCallback& callback,
|
| - scoped_refptr<base::TaskRunner> callback_task_runner,
|
| - scoped_refptr<UsbDeviceHandle> device_handle) {
|
| - if (!device_handle) {
|
| - callback_task_runner->PostTask(FROM_HERE,
|
| - base::Bind(&RunOpenDeviceCallback, callback,
|
| - OPEN_DEVICE_ERROR_ACCESS_DENIED));
|
| - return;
|
| - }
|
| -
|
| - // Owned by its MessagePipe.
|
| - new DeviceImpl(device_handle, device_request.Pass());
|
| -
|
| - callback_task_runner->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&RunOpenDeviceCallback, callback, OPEN_DEVICE_ERROR_OK));
|
| -}
|
| -
|
| -void OpenDeviceOnServiceThread(
|
| - const std::string& guid,
|
| - mojo::InterfaceRequest<Device> device_request,
|
| - const DeviceManager::OpenDeviceCallback& callback,
|
| - scoped_refptr<base::TaskRunner> callback_task_runner) {
|
| - DCHECK(DeviceClient::Get());
|
| - UsbService* usb_service = DeviceClient::Get()->GetUsbService();
|
| - if (!usb_service) {
|
| - callback_task_runner->PostTask(FROM_HERE,
|
| - base::Bind(&RunOpenDeviceCallback, callback,
|
| - OPEN_DEVICE_ERROR_NOT_FOUND));
|
| - return;
|
| - }
|
| - scoped_refptr<UsbDevice> device = usb_service->GetDevice(guid);
|
| - if (!device) {
|
| - callback_task_runner->PostTask(FROM_HERE,
|
| - base::Bind(&RunOpenDeviceCallback, callback,
|
| - OPEN_DEVICE_ERROR_NOT_FOUND));
|
| - return;
|
| - }
|
| - device->Open(base::Bind(&OnOpenDeviceOnServiceThread,
|
| - base::Passed(&device_request), callback,
|
| - callback_task_runner));
|
| + if (usb_service)
|
| + device = usb_service->GetDevice(guid);
|
| + callback_task_runner->PostTask(FROM_HERE, base::Bind(callback, device));
|
| }
|
|
|
| void FilterAndConvertDevicesAndThen(
|
| @@ -224,51 +169,42 @@ void DeviceManagerImpl::GetDeviceChanges(
|
| MaybeRunDeviceChangesCallback();
|
| }
|
|
|
| -void DeviceManagerImpl::OpenDevice(
|
| +void DeviceManagerImpl::GetDevice(
|
| const mojo::String& guid,
|
| - mojo::InterfaceRequest<Device> device_request,
|
| - const OpenDeviceCallback& callback) {
|
| - auto has_permission_callback = base::Bind(
|
| - &DeviceManagerImpl::OnGotDeviceInfoForOpen, weak_factory_.GetWeakPtr(),
|
| - base::Passed(&device_request), callback);
|
| + mojo::InterfaceRequest<Device> device_request) {
|
| + auto get_device_callback =
|
| + base::Bind(&DeviceManagerImpl::OnGetDevice, weak_factory_.GetWeakPtr(),
|
| + base::Passed(&device_request));
|
| service_task_runner_->PostTask(
|
| FROM_HERE,
|
| - base::Bind(&GetDeviceOnServiceThread, guid, has_permission_callback,
|
| + base::Bind(&GetDeviceOnServiceThread, guid, get_device_callback,
|
| base::ThreadTaskRunnerHandle::Get()));
|
| }
|
|
|
| -void DeviceManagerImpl::OnGotDeviceInfoForOpen(
|
| +void DeviceManagerImpl::OnGetDevice(
|
| mojo::InterfaceRequest<Device> device_request,
|
| - const OpenDeviceCallback& callback,
|
| - DeviceInfoPtr device_info) {
|
| - if (!device_info) {
|
| - callback.Run(OPEN_DEVICE_ERROR_NOT_FOUND);
|
| + scoped_refptr<UsbDevice> device) {
|
| + if (!device)
|
| return;
|
| - }
|
|
|
| mojo::Array<DeviceInfoPtr> requested_devices(1);
|
| - requested_devices[0] = device_info.Pass();
|
| + requested_devices[0] = DeviceInfo::From(*device);
|
| permission_provider_->HasDevicePermission(
|
| requested_devices.Pass(),
|
| - base::Bind(&DeviceManagerImpl::OnOpenDevicePermissionCheckComplete,
|
| - base::Unretained(this), base::Passed(&device_request),
|
| - callback));
|
| + base::Bind(&DeviceManagerImpl::OnGetDevicePermissionCheckComplete,
|
| + base::Unretained(this), device,
|
| + base::Passed(&device_request)));
|
| }
|
|
|
| -void DeviceManagerImpl::OnOpenDevicePermissionCheckComplete(
|
| +void DeviceManagerImpl::OnGetDevicePermissionCheckComplete(
|
| + scoped_refptr<UsbDevice> device,
|
| mojo::InterfaceRequest<Device> device_request,
|
| - const OpenDeviceCallback& callback,
|
| mojo::Array<mojo::String> allowed_guids) {
|
| - if (allowed_guids.size() == 0) {
|
| - callback.Run(OPEN_DEVICE_ERROR_ACCESS_DENIED);
|
| + if (allowed_guids.size() == 0)
|
| return;
|
| - }
|
|
|
| DCHECK(allowed_guids.size() == 1);
|
| - service_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&OpenDeviceOnServiceThread, allowed_guids[0],
|
| - base::Passed(&device_request), callback,
|
| - base::ThreadTaskRunnerHandle::Get()));
|
| + new DeviceImpl(device, device_request.Pass());
|
| }
|
|
|
| void DeviceManagerImpl::OnGetDevices(EnumerationOptionsPtr options,
|
|
|