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

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

Issue 1843163003: [Extensions] Convert APIs to use movable types [14] (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 <numeric> 8 #include <numeric>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 case device::USB_USAGE_FEEDBACK: 310 case device::USB_USAGE_FEEDBACK:
311 return usb::USAGE_TYPE_FEEDBACK; 311 return usb::USAGE_TYPE_FEEDBACK;
312 case device::USB_USAGE_EXPLICIT_FEEDBACK: 312 case device::USB_USAGE_EXPLICIT_FEEDBACK:
313 return usb::USAGE_TYPE_EXPLICITFEEDBACK; 313 return usb::USAGE_TYPE_EXPLICITFEEDBACK;
314 default: 314 default:
315 NOTREACHED(); 315 NOTREACHED();
316 return usb::USAGE_TYPE_NONE; 316 return usb::USAGE_TYPE_NONE;
317 } 317 }
318 } 318 }
319 319
320 void ConvertEndpointDescriptor(const UsbEndpointDescriptor& input, 320 EndpointDescriptor ConvertEndpointDescriptor(
321 EndpointDescriptor* output) { 321 const UsbEndpointDescriptor& input) {
322 output->address = input.address; 322 EndpointDescriptor output;
323 output->type = ConvertTransferTypeToApi(input.transfer_type); 323 output.address = input.address;
324 output->direction = ConvertDirectionToApi(input.direction); 324 output.type = ConvertTransferTypeToApi(input.transfer_type);
325 output->maximum_packet_size = input.maximum_packet_size; 325 output.direction = ConvertDirectionToApi(input.direction);
326 output->synchronization = 326 output.maximum_packet_size = input.maximum_packet_size;
327 output.synchronization =
327 ConvertSynchronizationTypeToApi(input.synchronization_type); 328 ConvertSynchronizationTypeToApi(input.synchronization_type);
328 output->usage = ConvertUsageTypeToApi(input.usage_type); 329 output.usage = ConvertUsageTypeToApi(input.usage_type);
329 output->polling_interval.reset(new int(input.polling_interval)); 330 output.polling_interval.reset(new int(input.polling_interval));
330 output->extra_data.assign(input.extra_data.begin(), input.extra_data.end()); 331 output.extra_data.assign(input.extra_data.begin(), input.extra_data.end());
332 return output;
331 } 333 }
332 334
333 void ConvertInterfaceDescriptor(const UsbInterfaceDescriptor& input, 335 InterfaceDescriptor ConvertInterfaceDescriptor(
334 InterfaceDescriptor* output) { 336 const UsbInterfaceDescriptor& input) {
335 output->interface_number = input.interface_number; 337 InterfaceDescriptor output;
336 output->alternate_setting = input.alternate_setting; 338 output.interface_number = input.interface_number;
337 output->interface_class = input.interface_class; 339 output.alternate_setting = input.alternate_setting;
338 output->interface_subclass = input.interface_subclass; 340 output.interface_class = input.interface_class;
339 output->interface_protocol = input.interface_protocol; 341 output.interface_subclass = input.interface_subclass;
340 for (const UsbEndpointDescriptor& input_endpoint : input.endpoints) { 342 output.interface_protocol = input.interface_protocol;
341 linked_ptr<EndpointDescriptor> endpoint(new EndpointDescriptor); 343 for (const UsbEndpointDescriptor& input_endpoint : input.endpoints)
342 ConvertEndpointDescriptor(input_endpoint, endpoint.get()); 344 output.endpoints.push_back(ConvertEndpointDescriptor(input_endpoint));
343 output->endpoints.push_back(endpoint); 345 output.extra_data.assign(input.extra_data.begin(), input.extra_data.end());
344 } 346 return output;
345 output->extra_data.assign(input.extra_data.begin(), input.extra_data.end());
346 } 347 }
347 348
348 void ConvertConfigDescriptor(const UsbConfigDescriptor& input, 349 ConfigDescriptor ConvertConfigDescriptor(const UsbConfigDescriptor& input) {
349 ConfigDescriptor* output) { 350 ConfigDescriptor output;
350 output->configuration_value = input.configuration_value; 351 output.configuration_value = input.configuration_value;
351 output->self_powered = input.self_powered; 352 output.self_powered = input.self_powered;
352 output->remote_wakeup = input.remote_wakeup; 353 output.remote_wakeup = input.remote_wakeup;
353 output->max_power = input.maximum_power; 354 output.max_power = input.maximum_power;
354 for (const UsbInterfaceDescriptor& input_interface : input.interfaces) { 355 for (const UsbInterfaceDescriptor& input_interface : input.interfaces)
355 linked_ptr<InterfaceDescriptor> interface(new InterfaceDescriptor); 356 output.interfaces.push_back(ConvertInterfaceDescriptor(input_interface));
356 ConvertInterfaceDescriptor(input_interface, interface.get()); 357 output.extra_data.assign(input.extra_data.begin(), input.extra_data.end());
357 output->interfaces.push_back(interface); 358 return output;
358 }
359 output->extra_data.assign(input.extra_data.begin(), input.extra_data.end());
360 } 359 }
361 360
362 void ConvertDeviceFilter(const usb::DeviceFilter& input, 361 void ConvertDeviceFilter(const usb::DeviceFilter& input,
363 UsbDeviceFilter* output) { 362 UsbDeviceFilter* output) {
364 if (input.vendor_id) { 363 if (input.vendor_id) {
365 output->SetVendorId(*input.vendor_id); 364 output->SetVendorId(*input.vendor_id);
366 } 365 }
367 if (input.product_id) { 366 if (input.product_id) {
368 output->SetProductId(*input.product_id); 367 output->SetProductId(*input.product_id);
369 } 368 }
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 } 549 }
551 550
552 ExtensionFunction::ResponseAction UsbGetDevicesFunction::Run() { 551 ExtensionFunction::ResponseAction UsbGetDevicesFunction::Run() {
553 scoped_ptr<extensions::api::usb::GetDevices::Params> parameters = 552 scoped_ptr<extensions::api::usb::GetDevices::Params> parameters =
554 GetDevices::Params::Create(*args_); 553 GetDevices::Params::Create(*args_);
555 EXTENSION_FUNCTION_VALIDATE(parameters.get()); 554 EXTENSION_FUNCTION_VALIDATE(parameters.get());
556 555
557 if (parameters->options.filters) { 556 if (parameters->options.filters) {
558 filters_.resize(parameters->options.filters->size()); 557 filters_.resize(parameters->options.filters->size());
559 for (size_t i = 0; i < parameters->options.filters->size(); ++i) { 558 for (size_t i = 0; i < parameters->options.filters->size(); ++i) {
560 ConvertDeviceFilter(*parameters->options.filters->at(i).get(), 559 ConvertDeviceFilter(parameters->options.filters->at(i), &filters_[i]);
561 &filters_[i]);
562 } 560 }
563 } 561 }
564 if (parameters->options.vendor_id) { 562 if (parameters->options.vendor_id) {
565 filters_.resize(filters_.size() + 1); 563 filters_.resize(filters_.size() + 1);
566 filters_.back().SetVendorId(*parameters->options.vendor_id); 564 filters_.back().SetVendorId(*parameters->options.vendor_id);
567 if (parameters->options.product_id) { 565 if (parameters->options.product_id) {
568 filters_.back().SetProductId(*parameters->options.product_id); 566 filters_.back().SetProductId(*parameters->options.product_id);
569 } 567 }
570 } 568 }
571 569
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 610
613 bool multiple = false; 611 bool multiple = false;
614 if (parameters->options.multiple) { 612 if (parameters->options.multiple) {
615 multiple = *parameters->options.multiple; 613 multiple = *parameters->options.multiple;
616 } 614 }
617 615
618 std::vector<UsbDeviceFilter> filters; 616 std::vector<UsbDeviceFilter> filters;
619 if (parameters->options.filters) { 617 if (parameters->options.filters) {
620 filters.resize(parameters->options.filters->size()); 618 filters.resize(parameters->options.filters->size());
621 for (size_t i = 0; i < parameters->options.filters->size(); ++i) { 619 for (size_t i = 0; i < parameters->options.filters->size(); ++i) {
622 ConvertDeviceFilter(*parameters->options.filters->at(i).get(), 620 ConvertDeviceFilter(parameters->options.filters->at(i), &filters[i]);
623 &filters[i]);
624 } 621 }
625 } 622 }
626 623
627 prompt_ = ExtensionsAPIClient::Get()->CreateDevicePermissionsPrompt( 624 prompt_ = ExtensionsAPIClient::Get()->CreateDevicePermissionsPrompt(
628 GetAssociatedWebContents()); 625 GetAssociatedWebContents());
629 if (!prompt_) { 626 if (!prompt_) {
630 return RespondNow(Error(kErrorNotSupported)); 627 return RespondNow(Error(kErrorNotSupported));
631 } 628 }
632 629
633 prompt_->AskForUsbDevices( 630 prompt_->AskForUsbDevices(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 673
677 if (!HasDevicePermission(device)) { 674 if (!HasDevicePermission(device)) {
678 // This function must act as if there is no such device. Otherwise it can be 675 // This function must act as if there is no such device. Otherwise it can be
679 // used to fingerprint unauthorized devices. 676 // used to fingerprint unauthorized devices.
680 return RespondNow(Error(kErrorNoDevice)); 677 return RespondNow(Error(kErrorNoDevice));
681 } 678 }
682 679
683 scoped_ptr<base::ListValue> configs(new base::ListValue()); 680 scoped_ptr<base::ListValue> configs(new base::ListValue());
684 const UsbConfigDescriptor* active_config = device->GetActiveConfiguration(); 681 const UsbConfigDescriptor* active_config = device->GetActiveConfiguration();
685 for (const UsbConfigDescriptor& config : device->configurations()) { 682 for (const UsbConfigDescriptor& config : device->configurations()) {
686 ConfigDescriptor api_config; 683 ConfigDescriptor api_config = ConvertConfigDescriptor(config);
687 ConvertConfigDescriptor(config, &api_config);
688 if (active_config && 684 if (active_config &&
689 config.configuration_value == active_config->configuration_value) { 685 config.configuration_value == active_config->configuration_value) {
690 api_config.active = true; 686 api_config.active = true;
691 } 687 }
692 configs->Append(api_config.ToValue()); 688 configs->Append(api_config.ToValue());
693 } 689 }
694 return RespondNow(OneArgument(std::move(configs))); 690 return RespondNow(OneArgument(std::move(configs)));
695 } 691 }
696 692
697 UsbRequestAccessFunction::UsbRequestAccessFunction() { 693 UsbRequestAccessFunction::UsbRequestAccessFunction() {
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 801
806 scoped_refptr<UsbDeviceHandle> device_handle = 802 scoped_refptr<UsbDeviceHandle> device_handle =
807 GetDeviceHandle(parameters->handle); 803 GetDeviceHandle(parameters->handle);
808 if (!device_handle.get()) { 804 if (!device_handle.get()) {
809 return RespondNow(Error(kErrorNoConnection)); 805 return RespondNow(Error(kErrorNoConnection));
810 } 806 }
811 807
812 const UsbConfigDescriptor* config_descriptor = 808 const UsbConfigDescriptor* config_descriptor =
813 device_handle->GetDevice()->GetActiveConfiguration(); 809 device_handle->GetDevice()->GetActiveConfiguration();
814 if (config_descriptor) { 810 if (config_descriptor) {
815 ConfigDescriptor config; 811 ConfigDescriptor config = ConvertConfigDescriptor(*config_descriptor);
816 ConvertConfigDescriptor(*config_descriptor, &config);
817 config.active = true; 812 config.active = true;
818 return RespondNow(OneArgument(config.ToValue())); 813 return RespondNow(OneArgument(config.ToValue()));
819 } else { 814 } else {
820 return RespondNow(Error(kErrorNotConfigured)); 815 return RespondNow(Error(kErrorNotConfigured));
821 } 816 }
822 } 817 }
823 818
824 UsbListInterfacesFunction::UsbListInterfacesFunction() { 819 UsbListInterfacesFunction::UsbListInterfacesFunction() {
825 } 820 }
826 821
827 UsbListInterfacesFunction::~UsbListInterfacesFunction() { 822 UsbListInterfacesFunction::~UsbListInterfacesFunction() {
828 } 823 }
829 824
830 ExtensionFunction::ResponseAction UsbListInterfacesFunction::Run() { 825 ExtensionFunction::ResponseAction UsbListInterfacesFunction::Run() {
831 scoped_ptr<extensions::api::usb::ListInterfaces::Params> parameters = 826 scoped_ptr<extensions::api::usb::ListInterfaces::Params> parameters =
832 ListInterfaces::Params::Create(*args_); 827 ListInterfaces::Params::Create(*args_);
833 EXTENSION_FUNCTION_VALIDATE(parameters.get()); 828 EXTENSION_FUNCTION_VALIDATE(parameters.get());
834 829
835 scoped_refptr<UsbDeviceHandle> device_handle = 830 scoped_refptr<UsbDeviceHandle> device_handle =
836 GetDeviceHandle(parameters->handle); 831 GetDeviceHandle(parameters->handle);
837 if (!device_handle.get()) { 832 if (!device_handle.get()) {
838 return RespondNow(Error(kErrorNoConnection)); 833 return RespondNow(Error(kErrorNoConnection));
839 } 834 }
840 835
841 const UsbConfigDescriptor* config_descriptor = 836 const UsbConfigDescriptor* config_descriptor =
842 device_handle->GetDevice()->GetActiveConfiguration(); 837 device_handle->GetDevice()->GetActiveConfiguration();
843 if (config_descriptor) { 838 if (config_descriptor) {
844 ConfigDescriptor config; 839 ConfigDescriptor config = ConvertConfigDescriptor(*config_descriptor);
845 ConvertConfigDescriptor(*config_descriptor, &config);
846 840
847 scoped_ptr<base::ListValue> result(new base::ListValue); 841 scoped_ptr<base::ListValue> result(new base::ListValue);
848 for (size_t i = 0; i < config.interfaces.size(); ++i) { 842 for (size_t i = 0; i < config.interfaces.size(); ++i) {
849 result->Append(config.interfaces[i]->ToValue()); 843 result->Append(config.interfaces[i].ToValue());
850 } 844 }
851 845
852 return RespondNow(OneArgument(std::move(result))); 846 return RespondNow(OneArgument(std::move(result)));
853 } else { 847 } else {
854 return RespondNow(Error(kErrorNotConfigured)); 848 return RespondNow(Error(kErrorNotConfigured));
855 } 849 }
856 } 850 }
857 851
858 UsbCloseDeviceFunction::UsbCloseDeviceFunction() { 852 UsbCloseDeviceFunction::UsbCloseDeviceFunction() {
859 } 853 }
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
1260 1254
1261 scoped_ptr<base::ListValue> error_args(new base::ListValue()); 1255 scoped_ptr<base::ListValue> error_args(new base::ListValue());
1262 error_args->AppendBoolean(false); 1256 error_args->AppendBoolean(false);
1263 // Using ErrorWithArguments is discouraged but required to maintain 1257 // Using ErrorWithArguments is discouraged but required to maintain
1264 // compatibility with existing applications. 1258 // compatibility with existing applications.
1265 Respond(ErrorWithArguments(std::move(error_args), kErrorResetDevice)); 1259 Respond(ErrorWithArguments(std::move(error_args), kErrorResetDevice));
1266 } 1260 }
1267 } 1261 }
1268 1262
1269 } // namespace extensions 1263 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698