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 |