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

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

Issue 1316203006: Convert DeviceManagerDelegate to PermissionProvider mojo interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add comment and move ctor. Created 5 years, 3 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
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 <set> 5 #include <set>
6 #include <string> 6 #include <string>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "base/run_loop.h" 12 #include "base/run_loop.h"
13 #include "base/thread_task_runner_handle.h" 13 #include "base/thread_task_runner_handle.h"
14 #include "device/core/device_client.h" 14 #include "device/core/device_client.h"
15 #include "device/devices_app/usb/device_impl.h" 15 #include "device/devices_app/usb/device_impl.h"
16 #include "device/devices_app/usb/device_manager_impl.h" 16 #include "device/devices_app/usb/device_manager_impl.h"
17 #include "device/devices_app/usb/public/cpp/device_manager_delegate.h"
18 #include "device/usb/mock_usb_device.h" 17 #include "device/usb/mock_usb_device.h"
19 #include "device/usb/mock_usb_device_handle.h" 18 #include "device/usb/mock_usb_device_handle.h"
20 #include "device/usb/mock_usb_service.h" 19 #include "device/usb/mock_usb_service.h"
21 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
22 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h" 21 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h"
23 22
24 using ::testing::Invoke; 23 using ::testing::Invoke;
25 using ::testing::_; 24 using ::testing::_;
26 25
27 namespace device { 26 namespace device {
28 namespace usb { 27 namespace usb {
29 28
30 namespace { 29 namespace {
31 30
32 class TestDeviceManagerDelegate : public DeviceManagerDelegate { 31 class TestPermissionProvider : public PermissionProvider {
33 public: 32 public:
34 TestDeviceManagerDelegate() {} 33 TestPermissionProvider(mojo::InterfaceRequest<PermissionProvider> request)
35 ~TestDeviceManagerDelegate() override {} 34 : binding_(this, request.Pass()) {}
35 ~TestPermissionProvider() override {}
36
37 void HasDevicePermission(
38 mojo::Array<mojo::String> requested_guids,
39 const HasDevicePermissionCallback& callback) override {
40 // Permission to access all devices granted.
41 callback.Run(requested_guids.Pass());
42 }
36 43
37 private: 44 private:
38 // DeviceManagerDelegate implementation: 45 mojo::StrongBinding<PermissionProvider> binding_;
39 bool IsDeviceAllowed(const DeviceInfo& device_info) override { return true; }
40 }; 46 };
41 47
42 class TestDeviceClient : public DeviceClient { 48 class TestDeviceClient : public DeviceClient {
43 public: 49 public:
44 TestDeviceClient() {} 50 TestDeviceClient() {}
45 ~TestDeviceClient() override {} 51 ~TestDeviceClient() override {}
46 52
47 MockUsbService& mock_usb_service() { return mock_usb_service_; } 53 MockUsbService& mock_usb_service() { return mock_usb_service_; }
48 54
49 private: 55 private:
50 // DeviceClient implementation: 56 // DeviceClient implementation:
51 UsbService* GetUsbService() override { return &mock_usb_service_; } 57 UsbService* GetUsbService() override { return &mock_usb_service_; }
52 58
53 MockUsbService mock_usb_service_; 59 MockUsbService mock_usb_service_;
54 }; 60 };
55 61
56 class USBDeviceManagerImplTest : public testing::Test { 62 class USBDeviceManagerImplTest : public testing::Test {
57 public: 63 public:
58 USBDeviceManagerImplTest() 64 USBDeviceManagerImplTest()
59 : device_client_(new TestDeviceClient), 65 : device_client_(new TestDeviceClient),
60 message_loop_(new base::MessageLoop) {} 66 message_loop_(new base::MessageLoop) {}
61 ~USBDeviceManagerImplTest() override {} 67 ~USBDeviceManagerImplTest() override {}
62 68
63 protected: 69 protected:
64 MockUsbService& mock_usb_service() { 70 MockUsbService& mock_usb_service() {
65 return device_client_->mock_usb_service(); 71 return device_client_->mock_usb_service();
66 } 72 }
67 73
68 DeviceManagerPtr ConnectToDeviceManager() { 74 DeviceManagerPtr ConnectToDeviceManager() {
75 PermissionProviderPtr permission_provider;
76 new TestPermissionProvider(mojo::GetProxy(&permission_provider));
69 DeviceManagerPtr device_manager; 77 DeviceManagerPtr device_manager;
70 new DeviceManagerImpl( 78 new DeviceManagerImpl(mojo::GetProxy(&device_manager),
71 mojo::GetProxy(&device_manager), 79 permission_provider.Pass(),
72 scoped_ptr<DeviceManagerDelegate>(new TestDeviceManagerDelegate), 80 base::ThreadTaskRunnerHandle::Get());
73 base::ThreadTaskRunnerHandle::Get());
74 return device_manager.Pass(); 81 return device_manager.Pass();
75 } 82 }
76 83
77 private: 84 private:
78 scoped_ptr<TestDeviceClient> device_client_; 85 scoped_ptr<TestDeviceClient> device_client_;
79 scoped_ptr<base::MessageLoop> message_loop_; 86 scoped_ptr<base::MessageLoop> message_loop_;
80 }; 87 };
81 88
82 class MockOpenCallback { 89 class MockOpenCallback {
83 public: 90 public:
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 scoped_refptr<MockUsbDevice> device2 = 236 scoped_refptr<MockUsbDevice> device2 =
230 new MockUsbDevice(0x1234, 0x567a, "ACME", "Frobinator Mk II", "MNOPQR"); 237 new MockUsbDevice(0x1234, 0x567a, "ACME", "Frobinator Mk II", "MNOPQR");
231 scoped_refptr<MockUsbDevice> device3 = 238 scoped_refptr<MockUsbDevice> device3 =
232 new MockUsbDevice(0x1234, 0x567b, "ACME", "Frobinator Xtreme", "STUVWX"); 239 new MockUsbDevice(0x1234, 0x567b, "ACME", "Frobinator Xtreme", "STUVWX");
233 240
234 mock_usb_service().AddDevice(device0); 241 mock_usb_service().AddDevice(device0);
235 242
236 DeviceManagerPtr device_manager = ConnectToDeviceManager(); 243 DeviceManagerPtr device_manager = ConnectToDeviceManager();
237 244
238 { 245 {
239 std::set<std::string> added_guids; 246 // Call GetDevices once to make sure the device manager is up and running
240 std::set<std::string> removed_guids; 247 // or else we could end up waiting forever for device changes as the next
241 added_guids.insert(device0->guid()); 248 // block races with the ServiceThreadHelper startup.
249 std::set<std::string> guids;
250 guids.insert(device0->guid());
242 base::RunLoop loop; 251 base::RunLoop loop;
243 device_manager->GetDeviceChanges(base::Bind(&ExpectDeviceChangesAndThen, 252 device_manager->GetDevices(
244 added_guids, removed_guids, 253 nullptr, base::Bind(&ExpectDevicesAndThen, guids, loop.QuitClosure()));
245 loop.QuitClosure()));
246 loop.Run(); 254 loop.Run();
247 } 255 }
248 256
249 mock_usb_service().AddDevice(device1); 257 mock_usb_service().AddDevice(device1);
250 mock_usb_service().AddDevice(device2); 258 mock_usb_service().AddDevice(device2);
251 mock_usb_service().RemoveDevice(device1); 259 mock_usb_service().RemoveDevice(device1);
252 260
253 { 261 {
254 std::set<std::string> added_guids; 262 std::set<std::string> added_guids;
255 std::set<std::string> removed_guids; 263 std::set<std::string> removed_guids;
(...skipping 18 matching lines...) Expand all
274 base::RunLoop loop; 282 base::RunLoop loop;
275 device_manager->GetDeviceChanges(base::Bind(&ExpectDeviceChangesAndThen, 283 device_manager->GetDeviceChanges(base::Bind(&ExpectDeviceChangesAndThen,
276 added_guids, removed_guids, 284 added_guids, removed_guids,
277 loop.QuitClosure())); 285 loop.QuitClosure()));
278 loop.Run(); 286 loop.Run();
279 } 287 }
280 } 288 }
281 289
282 } // namespace usb 290 } // namespace usb
283 } // namespace device 291 } // namespace device
OLDNEW
« no previous file with comments | « device/devices_app/usb/device_manager_impl.cc ('k') | device/devices_app/usb/public/cpp/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698