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

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

Issue 258783002: Extracted UsbService as interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed chromeos issue. Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/extensions/api/usb/usb_api.h" 5 #include "chrome/browser/extensions/api/usb/usb_api.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 "Number of packets must be a positive number less than 4,194,304."; 105 "Number of packets must be a positive number less than 4,194,304.";
106 const char kErrorInvalidPacketLength[] = "Packet length must be a " 106 const char kErrorInvalidPacketLength[] = "Packet length must be a "
107 "positive number less than 65,536."; 107 "positive number less than 65,536.";
108 const char kErrorResetDevice[] = 108 const char kErrorResetDevice[] =
109 "Error resetting the device. The device has been closed."; 109 "Error resetting the device. The device has been closed.";
110 110
111 const size_t kMaxTransferLength = 100 * 1024 * 1024; 111 const size_t kMaxTransferLength = 100 * 1024 * 1024;
112 const int kMaxPackets = 4 * 1024 * 1024; 112 const int kMaxPackets = 4 * 1024 * 1024;
113 const int kMaxPacketLength = 64 * 1024; 113 const int kMaxPacketLength = 64 * 1024;
114 114
115 UsbDevice* g_device_for_test = NULL;
116
117 bool ConvertDirectionToApi(const UsbEndpointDirection& input, 115 bool ConvertDirectionToApi(const UsbEndpointDirection& input,
118 Direction* output) { 116 Direction* output) {
119 switch (input) { 117 switch (input) {
120 case usb_service::USB_DIRECTION_INBOUND: 118 case usb_service::USB_DIRECTION_INBOUND:
121 *output = usb::DIRECTION_IN; 119 *output = usb::DIRECTION_IN;
122 return true; 120 return true;
123 case usb_service::USB_DIRECTION_OUTBOUND: 121 case usb_service::USB_DIRECTION_OUTBOUND:
124 *output = usb::DIRECTION_OUT; 122 *output = usb::DIRECTION_OUT;
125 return true; 123 return true;
126 default: 124 default:
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 return manager_ != NULL; 410 return manager_ != NULL;
413 } 411 }
414 412
415 bool UsbAsyncApiFunction::Respond() { 413 bool UsbAsyncApiFunction::Respond() {
416 return error_.empty(); 414 return error_.empty();
417 } 415 }
418 416
419 scoped_refptr<UsbDevice> 417 scoped_refptr<UsbDevice>
420 UsbAsyncApiFunction::GetDeviceOrOrCompleteWithError( 418 UsbAsyncApiFunction::GetDeviceOrOrCompleteWithError(
421 const Device& input_device) { 419 const Device& input_device) {
422 if (g_device_for_test)
423 return g_device_for_test;
424
425 const uint16_t vendor_id = input_device.vendor_id; 420 const uint16_t vendor_id = input_device.vendor_id;
426 const uint16_t product_id = input_device.product_id; 421 const uint16_t product_id = input_device.product_id;
427 UsbDevicePermission::CheckParam param( 422 UsbDevicePermission::CheckParam param(
428 vendor_id, product_id, UsbDevicePermissionData::UNSPECIFIED_INTERFACE); 423 vendor_id, product_id, UsbDevicePermissionData::UNSPECIFIED_INTERFACE);
429 if (!PermissionsData::CheckAPIPermissionWithParam( 424 if (!PermissionsData::CheckAPIPermissionWithParam(
430 GetExtension(), APIPermission::kUsbDevice, &param)) { 425 GetExtension(), APIPermission::kUsbDevice, &param)) {
431 LOG(WARNING) << "Insufficient permissions to access device."; 426 LOG(WARNING) << "Insufficient permissions to access device.";
432 CompleteWithError(kErrorPermissionDenied); 427 CompleteWithError(kErrorPermissionDenied);
433 return NULL; 428 return NULL;
434 } 429 }
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 533
539 bool UsbFindDevicesFunction::Prepare() { 534 bool UsbFindDevicesFunction::Prepare() {
540 parameters_ = FindDevices::Params::Create(*args_); 535 parameters_ = FindDevices::Params::Create(*args_);
541 EXTENSION_FUNCTION_VALIDATE(parameters_.get()); 536 EXTENSION_FUNCTION_VALIDATE(parameters_.get());
542 return true; 537 return true;
543 } 538 }
544 539
545 void UsbFindDevicesFunction::AsyncWorkStart() { 540 void UsbFindDevicesFunction::AsyncWorkStart() {
546 scoped_ptr<base::ListValue> result(new base::ListValue()); 541 scoped_ptr<base::ListValue> result(new base::ListValue());
547 542
548 if (g_device_for_test) {
549 UsbDeviceResource* const resource = new UsbDeviceResource(
550 extension_->id(),
551 g_device_for_test->Open());
552
553 result->Append(PopulateConnectionHandle(manager_->Add(resource), 0, 0));
554 SetResult(result.release());
555 AsyncWorkCompleted();
556 return;
557 }
558
559 const uint16_t vendor_id = parameters_->options.vendor_id; 543 const uint16_t vendor_id = parameters_->options.vendor_id;
560 const uint16_t product_id = parameters_->options.product_id; 544 const uint16_t product_id = parameters_->options.product_id;
561 int interface_id = parameters_->options.interface_id.get() ? 545 int interface_id = parameters_->options.interface_id.get() ?
562 *parameters_->options.interface_id.get() : 546 *parameters_->options.interface_id.get() :
563 UsbDevicePermissionData::ANY_INTERFACE; 547 UsbDevicePermissionData::ANY_INTERFACE;
564 UsbDevicePermission::CheckParam param(vendor_id, product_id, interface_id); 548 UsbDevicePermission::CheckParam param(vendor_id, product_id, interface_id);
565 if (!PermissionsData::CheckAPIPermissionWithParam( 549 if (!PermissionsData::CheckAPIPermissionWithParam(
566 GetExtension(), APIPermission::kUsbDevice, &param)) { 550 GetExtension(), APIPermission::kUsbDevice, &param)) {
567 LOG(WARNING) << "Insufficient permissions to access device."; 551 LOG(WARNING) << "Insufficient permissions to access device.";
568 CompleteWithError(kErrorPermissionDenied); 552 CompleteWithError(kErrorPermissionDenied);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 SetResult(result); 603 SetResult(result);
620 AsyncWorkCompleted(); 604 AsyncWorkCompleted();
621 } 605 }
622 606
623 UsbGetDevicesFunction::UsbGetDevicesFunction() { 607 UsbGetDevicesFunction::UsbGetDevicesFunction() {
624 } 608 }
625 609
626 UsbGetDevicesFunction::~UsbGetDevicesFunction() { 610 UsbGetDevicesFunction::~UsbGetDevicesFunction() {
627 } 611 }
628 612
629 void UsbGetDevicesFunction::SetDeviceForTest(UsbDevice* device) {
630 g_device_for_test = device;
631 }
632
633 bool UsbGetDevicesFunction::Prepare() { 613 bool UsbGetDevicesFunction::Prepare() {
634 parameters_ = GetDevices::Params::Create(*args_); 614 parameters_ = GetDevices::Params::Create(*args_);
635 EXTENSION_FUNCTION_VALIDATE(parameters_.get()); 615 EXTENSION_FUNCTION_VALIDATE(parameters_.get());
636 return true; 616 return true;
637 } 617 }
638 618
639 void UsbGetDevicesFunction::AsyncWorkStart() { 619 void UsbGetDevicesFunction::AsyncWorkStart() {
640 scoped_ptr<base::ListValue> result(new base::ListValue()); 620 scoped_ptr<base::ListValue> result(new base::ListValue());
641 621
642 if (g_device_for_test) {
643 result->Append(PopulateDevice(g_device_for_test));
644 SetResult(result.release());
645 AsyncWorkCompleted();
646 return;
647 }
648
649 const uint16_t vendor_id = parameters_->options.vendor_id; 622 const uint16_t vendor_id = parameters_->options.vendor_id;
650 const uint16_t product_id = parameters_->options.product_id; 623 const uint16_t product_id = parameters_->options.product_id;
651 UsbDevicePermission::CheckParam param( 624 UsbDevicePermission::CheckParam param(
652 vendor_id, product_id, UsbDevicePermissionData::UNSPECIFIED_INTERFACE); 625 vendor_id, product_id, UsbDevicePermissionData::UNSPECIFIED_INTERFACE);
653 if (!PermissionsData::CheckAPIPermissionWithParam( 626 if (!PermissionsData::CheckAPIPermissionWithParam(
654 GetExtension(), APIPermission::kUsbDevice, &param)) { 627 GetExtension(), APIPermission::kUsbDevice, &param)) {
655 LOG(WARNING) << "Insufficient permissions to access device."; 628 LOG(WARNING) << "Insufficient permissions to access device.";
656 CompleteWithError(kErrorPermissionDenied); 629 CompleteWithError(kErrorPermissionDenied);
657 return; 630 return;
658 } 631 }
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
1182 SetResult(new base::FundamentalValue(false)); 1155 SetResult(new base::FundamentalValue(false));
1183 CompleteWithError(kErrorResetDevice); 1156 CompleteWithError(kErrorResetDevice);
1184 return; 1157 return;
1185 } 1158 }
1186 1159
1187 SetResult(new base::FundamentalValue(true)); 1160 SetResult(new base::FundamentalValue(true));
1188 AsyncWorkCompleted(); 1161 AsyncWorkCompleted();
1189 } 1162 }
1190 1163
1191 } // namespace extensions 1164 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/usb/usb_api.h ('k') | chrome/browser/extensions/api/usb/usb_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698