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

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

Issue 10824298: Adding tests for USB extension API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: MSVC fix for warning about the old version of their compiler being broken. Created 8 years, 4 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 <vector> 7 #include <vector>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "chrome/browser/extensions/api/usb/usb_device_resource.h" 10 #include "chrome/browser/extensions/api/usb/usb_device_resource.h"
11 #include "chrome/browser/extensions/extension_system.h" 11 #include "chrome/browser/extensions/extension_system.h"
12 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
13 #include "chrome/browser/usb/usb_service.h" 13 #include "chrome/browser/usb/usb_service.h"
14 #include "chrome/browser/usb/usb_service_factory.h" 14 #include "chrome/browser/usb/usb_service_factory.h"
15 #include "chrome/common/extensions/api/experimental_usb.h" 15 #include "chrome/common/extensions/api/experimental_usb.h"
16 16
17 namespace BulkTransfer = extensions::api::experimental_usb::BulkTransfer; 17 namespace BulkTransfer = extensions::api::experimental_usb::BulkTransfer;
18 namespace CloseDevice = extensions::api::experimental_usb::CloseDevice; 18 namespace CloseDevice = extensions::api::experimental_usb::CloseDevice;
19 namespace ControlTransfer = extensions::api::experimental_usb::ControlTransfer; 19 namespace ControlTransfer = extensions::api::experimental_usb::ControlTransfer;
20 namespace FindDevice = extensions::api::experimental_usb::FindDevice; 20 namespace FindDevice = extensions::api::experimental_usb::FindDevice;
21 namespace InterruptTransfer = 21 namespace InterruptTransfer =
22 extensions::api::experimental_usb::InterruptTransfer; 22 extensions::api::experimental_usb::InterruptTransfer;
23 namespace IsochronousTransfer = 23 namespace IsochronousTransfer =
24 extensions::api::experimental_usb::IsochronousTransfer; 24 extensions::api::experimental_usb::IsochronousTransfer;
25 using extensions::api::experimental_usb::Device; 25 using extensions::api::experimental_usb::Device;
26 using std::vector; 26 using std::vector;
27 27
28 namespace {
29
30 static UsbDevice* device_for_test_ = NULL;
31
32 } // namespace
33
28 namespace extensions { 34 namespace extensions {
29 35
30 UsbAsyncApiFunction::UsbAsyncApiFunction() 36 UsbAsyncApiFunction::UsbAsyncApiFunction()
31 : manager_(NULL) { 37 : manager_(NULL) {
32 } 38 }
33 39
34 UsbAsyncApiFunction::~UsbAsyncApiFunction() { 40 UsbAsyncApiFunction::~UsbAsyncApiFunction() {
35 } 41 }
36 42
37 bool UsbAsyncApiFunction::PrePrepare() { 43 bool UsbAsyncApiFunction::PrePrepare() {
38 manager_ = ExtensionSystem::Get(profile())->usb_device_resource_manager(); 44 manager_ = ExtensionSystem::Get(profile())->usb_device_resource_manager();
39 return manager_ != NULL; 45 return manager_ != NULL;
40 } 46 }
41 47
42 UsbFindDeviceFunction::UsbFindDeviceFunction() : event_notifier_(NULL) {} 48 UsbFindDeviceFunction::UsbFindDeviceFunction() : event_notifier_(NULL) {}
43 49
44 UsbFindDeviceFunction::~UsbFindDeviceFunction() {} 50 UsbFindDeviceFunction::~UsbFindDeviceFunction() {}
45 51
52 void UsbFindDeviceFunction::SetDeviceForTest(UsbDevice* device) {
53 device_for_test_ = device;
54 }
55
46 bool UsbFindDeviceFunction::Prepare() { 56 bool UsbFindDeviceFunction::Prepare() {
47 parameters_ = FindDevice::Params::Create(*args_); 57 parameters_ = FindDevice::Params::Create(*args_);
48 EXTENSION_FUNCTION_VALIDATE(parameters_.get()); 58 EXTENSION_FUNCTION_VALIDATE(parameters_.get());
49 event_notifier_ = CreateEventNotifier(DeprecatedExtractSrcId(2)); 59 event_notifier_ = CreateEventNotifier(DeprecatedExtractSrcId(2));
50 return true; 60 return true;
51 } 61 }
52 62
53 void UsbFindDeviceFunction::Work() { 63 void UsbFindDeviceFunction::Work() {
54 UsbService* const service = 64 UsbDevice* device = NULL;
55 UsbServiceFactory::GetInstance()->GetForProfile(profile()); 65 if (device_for_test_) {
56 DCHECK(service) << "No UsbService associated with profile."; 66 device = device_for_test_;
67 } else {
68 UsbService* const service = UsbServiceFactory::GetInstance()->GetForProfile(
69 profile());
70 device = service->FindDevice(parameters_->vendor_id,
71 parameters_->product_id);
72 }
57 73
58 UsbDevice* const device = service->FindDevice(parameters_->vendor_id,
59 parameters_->product_id);
60 if (!device) { 74 if (!device) {
61 SetResult(base::Value::CreateNullValue()); 75 SetResult(base::Value::CreateNullValue());
62 return; 76 return;
63 } 77 }
64 78
65 UsbDeviceResource* const resource = new UsbDeviceResource(event_notifier_, 79 UsbDeviceResource* const resource = new UsbDeviceResource(event_notifier_,
66 device); 80 device);
67 81
68 Device result; 82 Device result;
69 result.handle = manager_->Add(resource); 83 result.handle = manager_->Add(resource);
(...skipping 10 matching lines...) Expand all
80 94
81 UsbCloseDeviceFunction::~UsbCloseDeviceFunction() {} 95 UsbCloseDeviceFunction::~UsbCloseDeviceFunction() {}
82 96
83 bool UsbCloseDeviceFunction::Prepare() { 97 bool UsbCloseDeviceFunction::Prepare() {
84 parameters_ = CloseDevice::Params::Create(*args_); 98 parameters_ = CloseDevice::Params::Create(*args_);
85 EXTENSION_FUNCTION_VALIDATE(parameters_.get()); 99 EXTENSION_FUNCTION_VALIDATE(parameters_.get());
86 return true; 100 return true;
87 } 101 }
88 102
89 void UsbCloseDeviceFunction::Work() { 103 void UsbCloseDeviceFunction::Work() {
104 UsbDeviceResource* const device = manager_->Get(parameters_->device.handle);
105 if (device)
106 device->Close();
107
90 manager_->Remove(parameters_->device.handle); 108 manager_->Remove(parameters_->device.handle);
91 } 109 }
92 110
93 bool UsbCloseDeviceFunction::Respond() { 111 bool UsbCloseDeviceFunction::Respond() {
94 return true; 112 return true;
95 } 113 }
96 114
97 UsbControlTransferFunction::UsbControlTransferFunction() {} 115 UsbControlTransferFunction::UsbControlTransferFunction() {}
98 116
99 UsbControlTransferFunction::~UsbControlTransferFunction() {} 117 UsbControlTransferFunction::~UsbControlTransferFunction() {}
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 if (device) { 190 if (device) {
173 device->IsochronousTransfer(parameters_->transfer_info); 191 device->IsochronousTransfer(parameters_->transfer_info);
174 } 192 }
175 } 193 }
176 194
177 bool UsbIsochronousTransferFunction::Respond() { 195 bool UsbIsochronousTransferFunction::Respond() {
178 return true; 196 return true;
179 } 197 }
180 198
181 } // namespace extensions 199 } // 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