| OLD | NEW |
| 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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 using usb::UsageType; | 52 using usb::UsageType; |
| 53 | 53 |
| 54 typedef std::vector<scoped_refptr<UsbDevice> > DeviceVector; | 54 typedef std::vector<scoped_refptr<UsbDevice> > DeviceVector; |
| 55 typedef scoped_ptr<DeviceVector> ScopedDeviceVector; | 55 typedef scoped_ptr<DeviceVector> ScopedDeviceVector; |
| 56 | 56 |
| 57 namespace { | 57 namespace { |
| 58 | 58 |
| 59 const char kDataKey[] = "data"; | 59 const char kDataKey[] = "data"; |
| 60 const char kResultCodeKey[] = "resultCode"; | 60 const char kResultCodeKey[] = "resultCode"; |
| 61 | 61 |
| 62 const char kErrorInitService[] = "Failed to initialize USB service."; |
| 63 |
| 62 const char kErrorOpen[] = "Failed to open device."; | 64 const char kErrorOpen[] = "Failed to open device."; |
| 63 const char kErrorCancelled[] = "Transfer was cancelled."; | 65 const char kErrorCancelled[] = "Transfer was cancelled."; |
| 64 const char kErrorDisconnect[] = "Device disconnected."; | 66 const char kErrorDisconnect[] = "Device disconnected."; |
| 65 const char kErrorGeneric[] = "Transfer failed."; | 67 const char kErrorGeneric[] = "Transfer failed."; |
| 66 const char kErrorNotSupported[] = "Not supported on this platform."; | 68 const char kErrorNotSupported[] = "Not supported on this platform."; |
| 67 const char kErrorOverflow[] = "Inbound transfer overflow."; | 69 const char kErrorOverflow[] = "Inbound transfer overflow."; |
| 68 const char kErrorStalled[] = "Transfer stalled."; | 70 const char kErrorStalled[] = "Transfer stalled."; |
| 69 const char kErrorTimeout[] = "Transfer timed out."; | 71 const char kErrorTimeout[] = "Transfer timed out."; |
| 70 const char kErrorTransferLength[] = "Transfer length is insufficient."; | 72 const char kErrorTransferLength[] = "Transfer length is insufficient."; |
| 71 | 73 |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 UsbDevicePermission::CheckParam param( | 407 UsbDevicePermission::CheckParam param( |
| 406 vendor_id, product_id, UsbDevicePermissionData::UNSPECIFIED_INTERFACE); | 408 vendor_id, product_id, UsbDevicePermissionData::UNSPECIFIED_INTERFACE); |
| 407 if (!PermissionsData::CheckAPIPermissionWithParam( | 409 if (!PermissionsData::CheckAPIPermissionWithParam( |
| 408 GetExtension(), APIPermission::kUsbDevice, ¶m)) { | 410 GetExtension(), APIPermission::kUsbDevice, ¶m)) { |
| 409 LOG(WARNING) << "Insufficient permissions to access device."; | 411 LOG(WARNING) << "Insufficient permissions to access device."; |
| 410 CompleteWithError(kErrorPermissionDenied); | 412 CompleteWithError(kErrorPermissionDenied); |
| 411 return NULL; | 413 return NULL; |
| 412 } | 414 } |
| 413 | 415 |
| 414 UsbService* service = UsbService::GetInstance(); | 416 UsbService* service = UsbService::GetInstance(); |
| 417 if (!service) { |
| 418 CompleteWithError(kErrorInitService); |
| 419 return NULL; |
| 420 } |
| 415 scoped_refptr<UsbDevice> device; | 421 scoped_refptr<UsbDevice> device; |
| 416 | 422 |
| 417 device = service->GetDeviceById(input_device.device); | 423 device = service->GetDeviceById(input_device.device); |
| 418 | 424 |
| 419 if (!device) { | 425 if (!device) { |
| 420 CompleteWithError(kErrorNoDevice); | 426 CompleteWithError(kErrorNoDevice); |
| 421 return NULL; | 427 return NULL; |
| 422 } | 428 } |
| 423 | 429 |
| 424 if (device->vendor_id() != input_device.vendor_id || | 430 if (device->vendor_id() != input_device.vendor_id || |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 530 UsbDevicePermissionData::ANY_INTERFACE; | 536 UsbDevicePermissionData::ANY_INTERFACE; |
| 531 UsbDevicePermission::CheckParam param(vendor_id, product_id, interface_id); | 537 UsbDevicePermission::CheckParam param(vendor_id, product_id, interface_id); |
| 532 if (!PermissionsData::CheckAPIPermissionWithParam( | 538 if (!PermissionsData::CheckAPIPermissionWithParam( |
| 533 GetExtension(), APIPermission::kUsbDevice, ¶m)) { | 539 GetExtension(), APIPermission::kUsbDevice, ¶m)) { |
| 534 LOG(WARNING) << "Insufficient permissions to access device."; | 540 LOG(WARNING) << "Insufficient permissions to access device."; |
| 535 CompleteWithError(kErrorPermissionDenied); | 541 CompleteWithError(kErrorPermissionDenied); |
| 536 return; | 542 return; |
| 537 } | 543 } |
| 538 | 544 |
| 539 UsbService *service = UsbService::GetInstance(); | 545 UsbService *service = UsbService::GetInstance(); |
| 546 if (!service) { |
| 547 CompleteWithError(kErrorInitService); |
| 548 return; |
| 549 } |
| 550 |
| 540 ScopedDeviceVector devices(new DeviceVector()); | 551 ScopedDeviceVector devices(new DeviceVector()); |
| 541 service->GetDevices(devices.get()); | 552 service->GetDevices(devices.get()); |
| 542 | 553 |
| 543 for (DeviceVector::iterator it = devices->begin(); | 554 for (DeviceVector::iterator it = devices->begin(); |
| 544 it != devices->end();) { | 555 it != devices->end();) { |
| 545 if ((*it)->vendor_id() != vendor_id || (*it)->product_id() != product_id) { | 556 if ((*it)->vendor_id() != vendor_id || (*it)->product_id() != product_id) { |
| 546 it = devices->erase(it); | 557 it = devices->erase(it); |
| 547 } else { | 558 } else { |
| 548 ++it; | 559 ++it; |
| 549 } | 560 } |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 617 UsbDevicePermission::CheckParam param( | 628 UsbDevicePermission::CheckParam param( |
| 618 vendor_id, product_id, UsbDevicePermissionData::UNSPECIFIED_INTERFACE); | 629 vendor_id, product_id, UsbDevicePermissionData::UNSPECIFIED_INTERFACE); |
| 619 if (!PermissionsData::CheckAPIPermissionWithParam( | 630 if (!PermissionsData::CheckAPIPermissionWithParam( |
| 620 GetExtension(), APIPermission::kUsbDevice, ¶m)) { | 631 GetExtension(), APIPermission::kUsbDevice, ¶m)) { |
| 621 LOG(WARNING) << "Insufficient permissions to access device."; | 632 LOG(WARNING) << "Insufficient permissions to access device."; |
| 622 CompleteWithError(kErrorPermissionDenied); | 633 CompleteWithError(kErrorPermissionDenied); |
| 623 return; | 634 return; |
| 624 } | 635 } |
| 625 | 636 |
| 626 UsbService* service = UsbService::GetInstance(); | 637 UsbService* service = UsbService::GetInstance(); |
| 638 if (!service) { |
| 639 CompleteWithError(kErrorInitService); |
| 640 return; |
| 641 } |
| 642 |
| 627 DeviceVector devices; | 643 DeviceVector devices; |
| 628 service->GetDevices(&devices); | 644 service->GetDevices(&devices); |
| 629 | 645 |
| 630 for (DeviceVector::iterator it = devices.begin(); it != devices.end();) { | 646 for (DeviceVector::iterator it = devices.begin(); it != devices.end();) { |
| 631 if ((*it)->vendor_id() != vendor_id || (*it)->product_id() != product_id) { | 647 if ((*it)->vendor_id() != vendor_id || (*it)->product_id() != product_id) { |
| 632 it = devices.erase(it); | 648 it = devices.erase(it); |
| 633 } else { | 649 } else { |
| 634 ++it; | 650 ++it; |
| 635 } | 651 } |
| 636 } | 652 } |
| (...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1143 SetResult(new base::FundamentalValue(false)); | 1159 SetResult(new base::FundamentalValue(false)); |
| 1144 CompleteWithError(kErrorResetDevice); | 1160 CompleteWithError(kErrorResetDevice); |
| 1145 return; | 1161 return; |
| 1146 } | 1162 } |
| 1147 | 1163 |
| 1148 SetResult(new base::FundamentalValue(true)); | 1164 SetResult(new base::FundamentalValue(true)); |
| 1149 AsyncWorkCompleted(); | 1165 AsyncWorkCompleted(); |
| 1150 } | 1166 } |
| 1151 | 1167 |
| 1152 } // namespace extensions | 1168 } // namespace extensions |
| OLD | NEW |