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

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

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