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

Side by Side Diff: device/usb/mojo/device_manager_impl_unittest.cc

Issue 2821723002: Move classes in the device.usb Mojo namespace to device.mojom (Closed)
Patch Set: mcasas@ nits Created 3 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
« no previous file with comments | « device/usb/mojo/device_manager_impl.cc ('k') | device/usb/mojo/type_converters.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "device/usb/mojo/device_manager_impl.h" 5 #include "device/usb/mojo/device_manager_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <set> 10 #include <set>
(...skipping 12 matching lines...) Expand all
23 #include "device/usb/mock_usb_service.h" 23 #include "device/usb/mock_usb_service.h"
24 #include "device/usb/mojo/device_impl.h" 24 #include "device/usb/mojo/device_impl.h"
25 #include "device/usb/mojo/mock_permission_provider.h" 25 #include "device/usb/mojo/mock_permission_provider.h"
26 #include "mojo/public/cpp/bindings/binding.h" 26 #include "mojo/public/cpp/bindings/binding.h"
27 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
28 28
29 using ::testing::Invoke; 29 using ::testing::Invoke;
30 using ::testing::_; 30 using ::testing::_;
31 31
32 namespace device { 32 namespace device {
33
34 using mojom::UsbDevicePtr;
35 using mojom::UsbDeviceInfoPtr;
36 using mojom::UsbDeviceManagerClientPtr;
37 using mojom::UsbDeviceManagerPtr;
38 using mojom::UsbEnumerationOptionsPtr;
39
33 namespace usb { 40 namespace usb {
34 41
35 namespace { 42 namespace {
36 43
37 ACTION_P2(ExpectGuidAndThen, expected_guid, callback) { 44 ACTION_P2(ExpectGuidAndThen, expected_guid, callback) {
38 ASSERT_TRUE(arg0); 45 ASSERT_TRUE(arg0);
39 EXPECT_EQ(expected_guid, arg0->guid); 46 EXPECT_EQ(expected_guid, arg0->guid);
40 if (!callback.is_null()) 47 if (!callback.is_null())
41 callback.Run(); 48 callback.Run();
42 }; 49 };
43 50
44 class USBDeviceManagerImplTest : public testing::Test { 51 class USBDeviceManagerImplTest : public testing::Test {
45 public: 52 public:
46 USBDeviceManagerImplTest() : message_loop_(new base::MessageLoop) {} 53 USBDeviceManagerImplTest() : message_loop_(new base::MessageLoop) {}
47 ~USBDeviceManagerImplTest() override {} 54 ~USBDeviceManagerImplTest() override {}
48 55
49 protected: 56 protected:
50 DeviceManagerPtr ConnectToDeviceManager() { 57 UsbDeviceManagerPtr ConnectToDeviceManager() {
51 DeviceManagerPtr device_manager; 58 UsbDeviceManagerPtr device_manager;
52 DeviceManagerImpl::Create(permission_provider_.GetWeakPtr(), 59 DeviceManagerImpl::Create(permission_provider_.GetWeakPtr(),
53 mojo::MakeRequest(&device_manager)); 60 mojo::MakeRequest(&device_manager));
54 return device_manager; 61 return device_manager;
55 } 62 }
56 63
57 MockDeviceClient device_client_; 64 MockDeviceClient device_client_;
58 65
59 private: 66 private:
60 MockPermissionProvider permission_provider_; 67 MockPermissionProvider permission_provider_;
61 std::unique_ptr<base::MessageLoop> message_loop_; 68 std::unique_ptr<base::MessageLoop> message_loop_;
62 }; 69 };
63 70
64 class MockDeviceManagerClient : public DeviceManagerClient { 71 class MockDeviceManagerClient : public mojom::UsbDeviceManagerClient {
65 public: 72 public:
66 MockDeviceManagerClient() : binding_(this) {} 73 MockDeviceManagerClient() : binding_(this) {}
67 ~MockDeviceManagerClient() {} 74 ~MockDeviceManagerClient() {}
68 75
69 DeviceManagerClientPtr CreateInterfacePtrAndBind() { 76 UsbDeviceManagerClientPtr CreateInterfacePtrAndBind() {
70 return binding_.CreateInterfacePtrAndBind(); 77 return binding_.CreateInterfacePtrAndBind();
71 } 78 }
72 79
73 MOCK_METHOD1(DoOnDeviceAdded, void(DeviceInfo*)); 80 MOCK_METHOD1(DoOnDeviceAdded, void(mojom::UsbDeviceInfo*));
74 void OnDeviceAdded(DeviceInfoPtr device_info) { 81 void OnDeviceAdded(UsbDeviceInfoPtr device_info) {
75 DoOnDeviceAdded(device_info.get()); 82 DoOnDeviceAdded(device_info.get());
76 } 83 }
77 84
78 MOCK_METHOD1(DoOnDeviceRemoved, void(DeviceInfo*)); 85 MOCK_METHOD1(DoOnDeviceRemoved, void(mojom::UsbDeviceInfo*));
79 void OnDeviceRemoved(DeviceInfoPtr device_info) { 86 void OnDeviceRemoved(UsbDeviceInfoPtr device_info) {
80 DoOnDeviceRemoved(device_info.get()); 87 DoOnDeviceRemoved(device_info.get());
81 } 88 }
82 89
83 private: 90 private:
84 mojo::Binding<DeviceManagerClient> binding_; 91 mojo::Binding<mojom::UsbDeviceManagerClient> binding_;
85 }; 92 };
86 93
87 void ExpectDevicesAndThen(const std::set<std::string>& expected_guids, 94 void ExpectDevicesAndThen(const std::set<std::string>& expected_guids,
88 const base::Closure& continuation, 95 const base::Closure& continuation,
89 std::vector<DeviceInfoPtr> results) { 96 std::vector<UsbDeviceInfoPtr> results) {
90 EXPECT_EQ(expected_guids.size(), results.size()); 97 EXPECT_EQ(expected_guids.size(), results.size());
91 std::set<std::string> actual_guids; 98 std::set<std::string> actual_guids;
92 for (size_t i = 0; i < results.size(); ++i) 99 for (size_t i = 0; i < results.size(); ++i)
93 actual_guids.insert(results[i]->guid); 100 actual_guids.insert(results[i]->guid);
94 EXPECT_EQ(expected_guids, actual_guids); 101 EXPECT_EQ(expected_guids, actual_guids);
95 continuation.Run(); 102 continuation.Run();
96 } 103 }
97 104
98 } // namespace 105 } // namespace
99 106
100 // Test basic GetDevices functionality to ensure that all mock devices are 107 // Test basic GetDevices functionality to ensure that all mock devices are
101 // returned by the service. 108 // returned by the service.
102 TEST_F(USBDeviceManagerImplTest, GetDevices) { 109 TEST_F(USBDeviceManagerImplTest, GetDevices) {
103 scoped_refptr<MockUsbDevice> device0 = 110 scoped_refptr<MockUsbDevice> device0 =
104 new MockUsbDevice(0x1234, 0x5678, "ACME", "Frobinator", "ABCDEF"); 111 new MockUsbDevice(0x1234, 0x5678, "ACME", "Frobinator", "ABCDEF");
105 scoped_refptr<MockUsbDevice> device1 = 112 scoped_refptr<MockUsbDevice> device1 =
106 new MockUsbDevice(0x1234, 0x5679, "ACME", "Frobinator+", "GHIJKL"); 113 new MockUsbDevice(0x1234, 0x5679, "ACME", "Frobinator+", "GHIJKL");
107 scoped_refptr<MockUsbDevice> device2 = 114 scoped_refptr<MockUsbDevice> device2 =
108 new MockUsbDevice(0x1234, 0x567a, "ACME", "Frobinator Mk II", "MNOPQR"); 115 new MockUsbDevice(0x1234, 0x567a, "ACME", "Frobinator Mk II", "MNOPQR");
109 116
110 device_client_.usb_service()->AddDevice(device0); 117 device_client_.usb_service()->AddDevice(device0);
111 device_client_.usb_service()->AddDevice(device1); 118 device_client_.usb_service()->AddDevice(device1);
112 device_client_.usb_service()->AddDevice(device2); 119 device_client_.usb_service()->AddDevice(device2);
113 120
114 DeviceManagerPtr device_manager = ConnectToDeviceManager(); 121 UsbDeviceManagerPtr device_manager = ConnectToDeviceManager();
115 122
116 EnumerationOptionsPtr options = EnumerationOptions::New(); 123 UsbEnumerationOptionsPtr options = mojom::UsbEnumerationOptions::New();
117 UsbDeviceFilter filter; 124 UsbDeviceFilter filter;
118 filter.vendor_id = 0x1234; 125 filter.vendor_id = 0x1234;
119 options->filters.emplace(); 126 options->filters.emplace();
120 options->filters->push_back(filter); 127 options->filters->push_back(filter);
121 128
122 std::set<std::string> guids; 129 std::set<std::string> guids;
123 guids.insert(device0->guid()); 130 guids.insert(device0->guid());
124 guids.insert(device1->guid()); 131 guids.insert(device1->guid());
125 guids.insert(device2->guid()); 132 guids.insert(device2->guid());
126 133
127 base::RunLoop loop; 134 base::RunLoop loop;
128 device_manager->GetDevices( 135 device_manager->GetDevices(
129 std::move(options), 136 std::move(options),
130 base::Bind(&ExpectDevicesAndThen, guids, loop.QuitClosure())); 137 base::Bind(&ExpectDevicesAndThen, guids, loop.QuitClosure()));
131 loop.Run(); 138 loop.Run();
132 } 139 }
133 140
134 // Test requesting a single Device by GUID. 141 // Test requesting a single Device by GUID.
135 TEST_F(USBDeviceManagerImplTest, GetDevice) { 142 TEST_F(USBDeviceManagerImplTest, GetDevice) {
136 scoped_refptr<MockUsbDevice> mock_device = 143 scoped_refptr<MockUsbDevice> mock_device =
137 new MockUsbDevice(0x1234, 0x5678, "ACME", "Frobinator", "ABCDEF"); 144 new MockUsbDevice(0x1234, 0x5678, "ACME", "Frobinator", "ABCDEF");
138 145
139 device_client_.usb_service()->AddDevice(mock_device); 146 device_client_.usb_service()->AddDevice(mock_device);
140 147
141 DeviceManagerPtr device_manager = ConnectToDeviceManager(); 148 UsbDeviceManagerPtr device_manager = ConnectToDeviceManager();
142 149
143 { 150 {
144 base::RunLoop loop; 151 base::RunLoop loop;
145 DevicePtr device; 152 UsbDevicePtr device;
146 device_manager->GetDevice(mock_device->guid(), mojo::MakeRequest(&device)); 153 device_manager->GetDevice(mock_device->guid(), mojo::MakeRequest(&device));
147 // Close is a no-op if the device hasn't been opened but ensures that the 154 // Close is a no-op if the device hasn't been opened but ensures that the
148 // pipe was successfully connected. 155 // pipe was successfully connected.
149 device->Close(loop.QuitClosure()); 156 device->Close(loop.QuitClosure());
150 loop.Run(); 157 loop.Run();
151 } 158 }
152 159
153 DevicePtr bad_device; 160 UsbDevicePtr bad_device;
154 device_manager->GetDevice("not a real guid", mojo::MakeRequest(&bad_device)); 161 device_manager->GetDevice("not a real guid", mojo::MakeRequest(&bad_device));
155 162
156 { 163 {
157 base::RunLoop loop; 164 base::RunLoop loop;
158 bad_device.set_connection_error_handler(loop.QuitClosure()); 165 bad_device.set_connection_error_handler(loop.QuitClosure());
159 loop.Run(); 166 loop.Run();
160 } 167 }
161 } 168 }
162 169
163 // Test requesting device enumeration updates with GetDeviceChanges. 170 // Test requesting device enumeration updates with GetDeviceChanges.
164 TEST_F(USBDeviceManagerImplTest, Client) { 171 TEST_F(USBDeviceManagerImplTest, Client) {
165 scoped_refptr<MockUsbDevice> device0 = 172 scoped_refptr<MockUsbDevice> device0 =
166 new MockUsbDevice(0x1234, 0x5678, "ACME", "Frobinator", "ABCDEF"); 173 new MockUsbDevice(0x1234, 0x5678, "ACME", "Frobinator", "ABCDEF");
167 scoped_refptr<MockUsbDevice> device1 = 174 scoped_refptr<MockUsbDevice> device1 =
168 new MockUsbDevice(0x1234, 0x5679, "ACME", "Frobinator+", "GHIJKL"); 175 new MockUsbDevice(0x1234, 0x5679, "ACME", "Frobinator+", "GHIJKL");
169 scoped_refptr<MockUsbDevice> device2 = 176 scoped_refptr<MockUsbDevice> device2 =
170 new MockUsbDevice(0x1234, 0x567a, "ACME", "Frobinator Mk II", "MNOPQR"); 177 new MockUsbDevice(0x1234, 0x567a, "ACME", "Frobinator Mk II", "MNOPQR");
171 scoped_refptr<MockUsbDevice> device3 = 178 scoped_refptr<MockUsbDevice> device3 =
172 new MockUsbDevice(0x1234, 0x567b, "ACME", "Frobinator Xtreme", "STUVWX"); 179 new MockUsbDevice(0x1234, 0x567b, "ACME", "Frobinator Xtreme", "STUVWX");
173 180
174 device_client_.usb_service()->AddDevice(device0); 181 device_client_.usb_service()->AddDevice(device0);
175 182
176 DeviceManagerPtr device_manager = ConnectToDeviceManager(); 183 UsbDeviceManagerPtr device_manager = ConnectToDeviceManager();
177 MockDeviceManagerClient mock_client; 184 MockDeviceManagerClient mock_client;
178 device_manager->SetClient(mock_client.CreateInterfacePtrAndBind()); 185 device_manager->SetClient(mock_client.CreateInterfacePtrAndBind());
179 186
180 { 187 {
181 // Call GetDevices once to make sure the device manager is up and running 188 // Call GetDevices once to make sure the device manager is up and running
182 // and the client is set or else we could block forever waiting for calls. 189 // and the client is set or else we could block forever waiting for calls.
183 std::set<std::string> guids; 190 std::set<std::string> guids;
184 guids.insert(device0->guid()); 191 guids.insert(device0->guid());
185 base::RunLoop loop; 192 base::RunLoop loop;
186 device_manager->GetDevices( 193 device_manager->GetDevices(
(...skipping 20 matching lines...) Expand all
207 .WillOnce(ExpectGuidAndThen(device0->guid(), barrier)) 214 .WillOnce(ExpectGuidAndThen(device0->guid(), barrier))
208 .WillOnce(ExpectGuidAndThen(device2->guid(), barrier)); 215 .WillOnce(ExpectGuidAndThen(device2->guid(), barrier));
209 EXPECT_CALL(mock_client, DoOnDeviceAdded(_)) 216 EXPECT_CALL(mock_client, DoOnDeviceAdded(_))
210 .WillOnce(ExpectGuidAndThen(device3->guid(), barrier)); 217 .WillOnce(ExpectGuidAndThen(device3->guid(), barrier));
211 loop.Run(); 218 loop.Run();
212 } 219 }
213 } 220 }
214 221
215 } // namespace usb 222 } // namespace usb
216 } // namespace device 223 } // namespace device
OLDNEW
« no previous file with comments | « device/usb/mojo/device_manager_impl.cc ('k') | device/usb/mojo/type_converters.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698