| OLD | NEW |
| 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 "extensions/browser/api/usb/usb_api.h" | 5 #include "extensions/browser/api/usb/usb_api.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <numeric> | 9 #include <numeric> |
| 10 #include <string> | 10 #include <string> |
| 11 #include <utility> | 11 #include <utility> |
| 12 #include <vector> | 12 #include <vector> |
| 13 | 13 |
| 14 #include "base/barrier_closure.h" | 14 #include "base/barrier_closure.h" |
| 15 #include "base/memory/ptr_util.h" |
| 15 #include "device/core/device_client.h" | 16 #include "device/core/device_client.h" |
| 16 #include "device/usb/usb_descriptors.h" | 17 #include "device/usb/usb_descriptors.h" |
| 17 #include "device/usb/usb_device_handle.h" | 18 #include "device/usb/usb_device_handle.h" |
| 18 #include "device/usb/usb_service.h" | 19 #include "device/usb/usb_service.h" |
| 19 #include "extensions/browser/api/device_permissions_manager.h" | 20 #include "extensions/browser/api/device_permissions_manager.h" |
| 20 #include "extensions/browser/api/device_permissions_prompt.h" | 21 #include "extensions/browser/api/device_permissions_prompt.h" |
| 21 #include "extensions/browser/api/extensions_api_client.h" | 22 #include "extensions/browser/api/extensions_api_client.h" |
| 22 #include "extensions/browser/api/usb/usb_device_resource.h" | 23 #include "extensions/browser/api/usb/usb_device_resource.h" |
| 23 #include "extensions/browser/api/usb/usb_guid_map.h" | 24 #include "extensions/browser/api/usb/usb_guid_map.h" |
| 24 #include "extensions/browser/extension_system.h" | 25 #include "extensions/browser/extension_system.h" |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 case device::USB_TRANSFER_OVERFLOW: | 242 case device::USB_TRANSFER_OVERFLOW: |
| 242 return kErrorOverflow; | 243 return kErrorOverflow; |
| 243 case device::USB_TRANSFER_LENGTH_SHORT: | 244 case device::USB_TRANSFER_LENGTH_SHORT: |
| 244 return kErrorTransferLength; | 245 return kErrorTransferLength; |
| 245 default: | 246 default: |
| 246 NOTREACHED(); | 247 NOTREACHED(); |
| 247 return ""; | 248 return ""; |
| 248 } | 249 } |
| 249 } | 250 } |
| 250 | 251 |
| 251 base::Value* PopulateConnectionHandle(int handle, | 252 std::unique_ptr<base::Value> PopulateConnectionHandle(int handle, |
| 252 int vendor_id, | 253 int vendor_id, |
| 253 int product_id) { | 254 int product_id) { |
| 254 ConnectionHandle result; | 255 ConnectionHandle result; |
| 255 result.handle = handle; | 256 result.handle = handle; |
| 256 result.vendor_id = vendor_id; | 257 result.vendor_id = vendor_id; |
| 257 result.product_id = product_id; | 258 result.product_id = product_id; |
| 258 return result.ToValue().release(); | 259 return result.ToValue(); |
| 259 } | 260 } |
| 260 | 261 |
| 261 TransferType ConvertTransferTypeToApi(const UsbTransferType& input) { | 262 TransferType ConvertTransferTypeToApi(const UsbTransferType& input) { |
| 262 switch (input) { | 263 switch (input) { |
| 263 case device::USB_TRANSFER_CONTROL: | 264 case device::USB_TRANSFER_CONTROL: |
| 264 return usb::TRANSFER_TYPE_CONTROL; | 265 return usb::TRANSFER_TYPE_CONTROL; |
| 265 case device::USB_TRANSFER_INTERRUPT: | 266 case device::USB_TRANSFER_INTERRUPT: |
| 266 return usb::TRANSFER_TYPE_INTERRUPT; | 267 return usb::TRANSFER_TYPE_INTERRUPT; |
| 267 case device::USB_TRANSFER_ISOCHRONOUS: | 268 case device::USB_TRANSFER_ISOCHRONOUS: |
| 268 return usb::TRANSFER_TYPE_ISOCHRONOUS; | 269 return usb::TRANSFER_TYPE_ISOCHRONOUS; |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 605 | 606 |
| 606 UsbGetUserSelectedDevicesFunction::~UsbGetUserSelectedDevicesFunction() { | 607 UsbGetUserSelectedDevicesFunction::~UsbGetUserSelectedDevicesFunction() { |
| 607 } | 608 } |
| 608 | 609 |
| 609 ExtensionFunction::ResponseAction UsbGetUserSelectedDevicesFunction::Run() { | 610 ExtensionFunction::ResponseAction UsbGetUserSelectedDevicesFunction::Run() { |
| 610 std::unique_ptr<extensions::api::usb::GetUserSelectedDevices::Params> | 611 std::unique_ptr<extensions::api::usb::GetUserSelectedDevices::Params> |
| 611 parameters = GetUserSelectedDevices::Params::Create(*args_); | 612 parameters = GetUserSelectedDevices::Params::Create(*args_); |
| 612 EXTENSION_FUNCTION_VALIDATE(parameters.get()); | 613 EXTENSION_FUNCTION_VALIDATE(parameters.get()); |
| 613 | 614 |
| 614 if (!user_gesture()) { | 615 if (!user_gesture()) { |
| 615 return RespondNow(OneArgument(new base::ListValue())); | 616 return RespondNow(OneArgument(base::MakeUnique<base::ListValue>())); |
| 616 } | 617 } |
| 617 | 618 |
| 618 bool multiple = false; | 619 bool multiple = false; |
| 619 if (parameters->options.multiple) { | 620 if (parameters->options.multiple) { |
| 620 multiple = *parameters->options.multiple; | 621 multiple = *parameters->options.multiple; |
| 621 } | 622 } |
| 622 | 623 |
| 623 std::vector<UsbDeviceFilter> filters; | 624 std::vector<UsbDeviceFilter> filters; |
| 624 if (parameters->options.filters) { | 625 if (parameters->options.filters) { |
| 625 filters.resize(parameters->options.filters->size()); | 626 filters.resize(parameters->options.filters->size()); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 700 UsbRequestAccessFunction::UsbRequestAccessFunction() { | 701 UsbRequestAccessFunction::UsbRequestAccessFunction() { |
| 701 } | 702 } |
| 702 | 703 |
| 703 UsbRequestAccessFunction::~UsbRequestAccessFunction() { | 704 UsbRequestAccessFunction::~UsbRequestAccessFunction() { |
| 704 } | 705 } |
| 705 | 706 |
| 706 ExtensionFunction::ResponseAction UsbRequestAccessFunction::Run() { | 707 ExtensionFunction::ResponseAction UsbRequestAccessFunction::Run() { |
| 707 std::unique_ptr<extensions::api::usb::RequestAccess::Params> parameters = | 708 std::unique_ptr<extensions::api::usb::RequestAccess::Params> parameters = |
| 708 RequestAccess::Params::Create(*args_); | 709 RequestAccess::Params::Create(*args_); |
| 709 EXTENSION_FUNCTION_VALIDATE(parameters.get()); | 710 EXTENSION_FUNCTION_VALIDATE(parameters.get()); |
| 710 return RespondNow(OneArgument(new base::FundamentalValue(true))); | 711 return RespondNow( |
| 712 OneArgument(base::MakeUnique<base::FundamentalValue>(true))); |
| 711 } | 713 } |
| 712 | 714 |
| 713 UsbOpenDeviceFunction::UsbOpenDeviceFunction() { | 715 UsbOpenDeviceFunction::UsbOpenDeviceFunction() { |
| 714 } | 716 } |
| 715 | 717 |
| 716 UsbOpenDeviceFunction::~UsbOpenDeviceFunction() { | 718 UsbOpenDeviceFunction::~UsbOpenDeviceFunction() { |
| 717 } | 719 } |
| 718 | 720 |
| 719 ExtensionFunction::ResponseAction UsbOpenDeviceFunction::Run() { | 721 ExtensionFunction::ResponseAction UsbOpenDeviceFunction::Run() { |
| 720 std::unique_ptr<extensions::api::usb::OpenDevice::Params> parameters = | 722 std::unique_ptr<extensions::api::usb::OpenDevice::Params> parameters = |
| (...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1244 return RespondNow(Error(kErrorNoConnection)); | 1246 return RespondNow(Error(kErrorNoConnection)); |
| 1245 } | 1247 } |
| 1246 | 1248 |
| 1247 device_handle->ResetDevice( | 1249 device_handle->ResetDevice( |
| 1248 base::Bind(&UsbResetDeviceFunction::OnComplete, this)); | 1250 base::Bind(&UsbResetDeviceFunction::OnComplete, this)); |
| 1249 return RespondLater(); | 1251 return RespondLater(); |
| 1250 } | 1252 } |
| 1251 | 1253 |
| 1252 void UsbResetDeviceFunction::OnComplete(bool success) { | 1254 void UsbResetDeviceFunction::OnComplete(bool success) { |
| 1253 if (success) { | 1255 if (success) { |
| 1254 Respond(OneArgument(new base::FundamentalValue(true))); | 1256 Respond(OneArgument(base::MakeUnique<base::FundamentalValue>(true))); |
| 1255 } else { | 1257 } else { |
| 1256 scoped_refptr<UsbDeviceHandle> device_handle = | 1258 scoped_refptr<UsbDeviceHandle> device_handle = |
| 1257 GetDeviceHandle(parameters_->handle); | 1259 GetDeviceHandle(parameters_->handle); |
| 1258 if (device_handle.get()) { | 1260 if (device_handle.get()) { |
| 1259 device_handle->Close(); | 1261 device_handle->Close(); |
| 1260 } | 1262 } |
| 1261 ReleaseDeviceHandle(parameters_->handle); | 1263 ReleaseDeviceHandle(parameters_->handle); |
| 1262 | 1264 |
| 1263 std::unique_ptr<base::ListValue> error_args(new base::ListValue()); | 1265 std::unique_ptr<base::ListValue> error_args(new base::ListValue()); |
| 1264 error_args->AppendBoolean(false); | 1266 error_args->AppendBoolean(false); |
| 1265 // Using ErrorWithArguments is discouraged but required to maintain | 1267 // Using ErrorWithArguments is discouraged but required to maintain |
| 1266 // compatibility with existing applications. | 1268 // compatibility with existing applications. |
| 1267 Respond(ErrorWithArguments(std::move(error_args), kErrorResetDevice)); | 1269 Respond(ErrorWithArguments(std::move(error_args), kErrorResetDevice)); |
| 1268 } | 1270 } |
| 1269 } | 1271 } |
| 1270 | 1272 |
| 1271 } // namespace extensions | 1273 } // namespace extensions |
| OLD | NEW |