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

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

Issue 16316004: Separate usb device handle from usb device. (deprecate) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix the threading mess Created 7 years, 5 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 #include "chrome/browser/extensions/extension_apitest.h" 6 #include "chrome/browser/extensions/extension_apitest.h"
7 #include "chrome/browser/ui/browser.h" 7 #include "chrome/browser/ui/browser.h"
8 #include "chrome/browser/usb/usb_service.h" 8 #include "chrome/browser/usb/usb_service.h"
9 #include "chrome/browser/usb/usb_service_factory.h" 9 #include "chrome/browser/usb/usb_service_factory.h"
10 #include "chrome/common/chrome_switches.h" 10 #include "chrome/common/chrome_switches.h"
11 #include "net/base/io_buffer.h" 11 #include "net/base/io_buffer.h"
12 #include "testing/gmock/include/gmock/gmock.h" 12 #include "testing/gmock/include/gmock/gmock.h"
13 13
14 using testing::AnyNumber; 14 using testing::AnyNumber;
15 using testing::_; 15 using testing::_;
16 16
17 namespace { 17 namespace {
18 18
19 ACTION(InvokeUsbCallback) { 19 ACTION(InvokeUsbCallback) { ::std::tr1::get<0>(args).Run(); }
20 ::std::tr1::get<0>(args).Run();
21 }
22 20
23 ACTION_TEMPLATE(InvokeUsbTransferCallback, 21 ACTION_TEMPLATE(InvokeUsbTransferCallback, HAS_1_TEMPLATE_PARAMS(int, k),
24 HAS_1_TEMPLATE_PARAMS(int, k),
25 AND_1_VALUE_PARAMS(p1)) { 22 AND_1_VALUE_PARAMS(p1)) {
26 ::std::tr1::get<k>(args).Run(p1, new net::IOBuffer(1), 1); 23 ::std::tr1::get<k>(args).Run(p1, new net::IOBuffer(1), 1);
27 } 24 }
28 25
29 ACTION_TEMPLATE(InvokeUsbResultCallback, 26 ACTION_TEMPLATE(InvokeUsbResultCallback, HAS_1_TEMPLATE_PARAMS(int, k),
30 HAS_1_TEMPLATE_PARAMS(int, k),
31 AND_1_VALUE_PARAMS(p1)) { 27 AND_1_VALUE_PARAMS(p1)) {
32 ::std::tr1::get<k>(args).Run(p1); 28 ::std::tr1::get<k>(args).Run(p1);
33 } 29 }
34 30
35 // MSVC erroneously thinks that at least one of the arguments for the transfer 31 // MSVC erroneously thinks that at least one of the arguments for the transfer
36 // methods differ by const or volatility and emits a warning about the old 32 // methods differ by const or volatility and emits a warning about the old
37 // standards-noncompliant behaviour of their compiler. 33 // standards-noncompliant behaviour of their compiler.
38 #if defined(OS_WIN) 34 #if defined(OS_WIN)
39 #pragma warning(push) 35 #pragma warning(push)
40 #pragma warning(disable:4373) 36 #pragma warning(disable:4373)
41 #endif 37 #endif
42 class MockUsbDevice : public UsbDevice { 38 class MockUsbDevice : public UsbDeviceHandle {
43 public: 39 public:
44 MockUsbDevice() : UsbDevice() {} 40 MockUsbDevice() : UsbDeviceHandle() {}
45 41
46 MOCK_METHOD1(Close, void(const base::Callback<void()>& callback)); 42 MOCK_METHOD1(Close, void(const base::Callback<void()>& callback));
47 43
48 MOCK_METHOD10(ControlTransfer, void(const UsbEndpointDirection direction, 44 MOCK_METHOD10(ControlTransfer,
49 const TransferRequestType request_type, const TransferRecipient recipient, 45 void(const UsbEndpointDirection direction,
50 const uint8 request, const uint16 value, const uint16 index, 46 const TransferRequestType request_type,
51 net::IOBuffer* buffer, const size_t length, const unsigned int timeout, 47 const TransferRecipient recipient, const uint8 request,
52 const UsbTransferCallback& callback)); 48 const uint16 value, const uint16 index,
49 net::IOBuffer* buffer, const size_t length,
50 const unsigned int timeout,
51 const UsbTransferCallback& callback));
53 52
54 MOCK_METHOD6(BulkTransfer, void(const UsbEndpointDirection direction, 53 MOCK_METHOD6(BulkTransfer,
55 const uint8 endpoint, net::IOBuffer* buffer, const size_t length, 54 void(const UsbEndpointDirection direction, const uint8 endpoint,
56 const unsigned int timeout, const UsbTransferCallback& callback)); 55 net::IOBuffer* buffer, const size_t length,
56 const unsigned int timeout,
57 const UsbTransferCallback& callback));
57 58
58 MOCK_METHOD6(InterruptTransfer, void(const UsbEndpointDirection direction, 59 MOCK_METHOD6(InterruptTransfer,
59 const uint8 endpoint, net::IOBuffer* buffer, const size_t length, 60 void(const UsbEndpointDirection direction, const uint8 endpoint,
60 const unsigned int timeout, const UsbTransferCallback& callback)); 61 net::IOBuffer* buffer, const size_t length,
62 const unsigned int timeout,
63 const UsbTransferCallback& callback));
61 64
62 MOCK_METHOD8(IsochronousTransfer, void(const UsbEndpointDirection direction, 65 MOCK_METHOD8(IsochronousTransfer,
63 const uint8 endpoint, net::IOBuffer* buffer, const size_t length, 66 void(const UsbEndpointDirection direction, const uint8 endpoint,
64 const unsigned int packets, const unsigned int packet_length, 67 net::IOBuffer* buffer, const size_t length,
65 const unsigned int timeout, const UsbTransferCallback& callback)); 68 const unsigned int packets,
69 const unsigned int packet_length,
70 const unsigned int timeout,
71 const UsbTransferCallback& callback));
66 72
67 MOCK_METHOD1(ResetDevice, void(const base::Callback<void(bool)>& callback)); 73 MOCK_METHOD1(ResetDevice, void(const base::Callback<void(bool)>& callback));
68 74
69 MOCK_METHOD2(ListInterfaces, void(UsbConfigDescriptor* config, 75 MOCK_METHOD2(ListInterfaces, void(UsbConfigDescriptor* config,
70 const UsbInterfaceCallback& callback)); 76 const UsbInterfaceCallback& callback));
71 77
72 protected: 78 protected:
73 virtual ~MockUsbDevice() {} 79 virtual ~MockUsbDevice() {}
80 virtual void InternalClose() {}
74 }; 81 };
75 #if defined(OS_WIN) 82 #if defined(OS_WIN)
76 #pragma warning(pop) 83 #pragma warning(pop)
77 #endif 84 #endif
78 85
79 class UsbApiTest : public ExtensionApiTest { 86 class UsbApiTest : public ExtensionApiTest {
80 public: 87 public:
81 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 88 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
82 ExtensionApiTest::SetUpCommandLine(command_line); 89 ExtensionApiTest::SetUpCommandLine(command_line);
83 command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis); 90 command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis);
(...skipping 24 matching lines...) Expand all
108 115
109 IN_PROC_BROWSER_TEST_F(UsbApiTest, ListInterfaces) { 116 IN_PROC_BROWSER_TEST_F(UsbApiTest, ListInterfaces) {
110 EXPECT_CALL(*mock_device_.get(), ListInterfaces(_, _)) 117 EXPECT_CALL(*mock_device_.get(), ListInterfaces(_, _))
111 .WillOnce(InvokeUsbResultCallback<1>(false)); 118 .WillOnce(InvokeUsbResultCallback<1>(false));
112 EXPECT_CALL(*mock_device_.get(), Close(_)).Times(AnyNumber()); 119 EXPECT_CALL(*mock_device_.get(), Close(_)).Times(AnyNumber());
113 ASSERT_TRUE(RunExtensionTest("usb/list_interfaces")); 120 ASSERT_TRUE(RunExtensionTest("usb/list_interfaces"));
114 } 121 }
115 122
116 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferEvent) { 123 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferEvent) {
117 EXPECT_CALL(*mock_device_.get(), 124 EXPECT_CALL(*mock_device_.get(),
118 ControlTransfer(USB_DIRECTION_OUTBOUND, 125 ControlTransfer(USB_DIRECTION_OUTBOUND, UsbDeviceHandle::STANDARD,
119 UsbDevice::STANDARD, 126 UsbDeviceHandle::DEVICE, 1, 2, 3, _, 1, _, _))
120 UsbDevice::DEVICE,
121 1,
122 2,
123 3,
124 _,
125 1,
126 _,
127 _))
128 .WillOnce(InvokeUsbTransferCallback<9>(USB_TRANSFER_COMPLETED)); 127 .WillOnce(InvokeUsbTransferCallback<9>(USB_TRANSFER_COMPLETED));
129 EXPECT_CALL(*mock_device_.get(), 128 EXPECT_CALL(*mock_device_.get(),
130 BulkTransfer(USB_DIRECTION_OUTBOUND, 1, _, 1, _, _)) 129 BulkTransfer(USB_DIRECTION_OUTBOUND, 1, _, 1, _, _))
131 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_COMPLETED)); 130 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_COMPLETED));
132 EXPECT_CALL(*mock_device_.get(), 131 EXPECT_CALL(*mock_device_.get(),
133 InterruptTransfer(USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) 132 InterruptTransfer(USB_DIRECTION_OUTBOUND, 2, _, 1, _, _))
134 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_COMPLETED)); 133 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_COMPLETED));
135 EXPECT_CALL(*mock_device_.get(), 134 EXPECT_CALL(*mock_device_.get(),
136 IsochronousTransfer(USB_DIRECTION_OUTBOUND, 3, _, 1, 1, 1, _, _)) 135 IsochronousTransfer(USB_DIRECTION_OUTBOUND, 3, _, 1, 1, 1, _, _))
137 .WillOnce(InvokeUsbTransferCallback<7>(USB_TRANSFER_COMPLETED)); 136 .WillOnce(InvokeUsbTransferCallback<7>(USB_TRANSFER_COMPLETED));
(...skipping 14 matching lines...) Expand all
152 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_ERROR)) 151 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_ERROR))
153 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_TIMEOUT)); 152 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_TIMEOUT));
154 EXPECT_CALL(*mock_device_.get(), Close(_)).Times(AnyNumber()); 153 EXPECT_CALL(*mock_device_.get(), Close(_)).Times(AnyNumber());
155 ASSERT_TRUE(RunExtensionTest("usb/transfer_failure")); 154 ASSERT_TRUE(RunExtensionTest("usb/transfer_failure"));
156 } 155 }
157 156
158 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) { 157 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) {
159 EXPECT_CALL(*mock_device_.get(), Close(_)).Times(AnyNumber()); 158 EXPECT_CALL(*mock_device_.get(), Close(_)).Times(AnyNumber());
160 ASSERT_TRUE(RunExtensionTest("usb/invalid_length_transfer")); 159 ASSERT_TRUE(RunExtensionTest("usb/invalid_length_transfer"));
161 } 160 }
162
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/usb/usb_api.cc ('k') | chrome/browser/extensions/api/usb/usb_device_resource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698