Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(375)

Side by Side Diff: extensions/browser/api/usb/usb_api.cc

Issue 2025103003: ExtensionFunction: don't pass ownership of base::Value by raw pointer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « extensions/browser/api/storage/storage_api.cc ('k') | extensions/browser/api/vpn_provider/vpn_provider_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698