Index: device/usb/device_manager_impl_unittest.cc |
diff --git a/device/usb/device_manager_impl_unittest.cc b/device/usb/device_manager_impl_unittest.cc |
index 785461934ad47c3c7e8cf421ad3244b008ad2194..f0ce167d15410c537fccb8258e1a49a8a04e57c0 100644 |
--- a/device/usb/device_manager_impl_unittest.cc |
+++ b/device/usb/device_manager_impl_unittest.cc |
@@ -10,7 +10,6 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/message_loop/message_loop.h" |
#include "base/run_loop.h" |
-#include "base/thread_task_runner_handle.h" |
#include "device/core/device_client.h" |
#include "device/usb/device_impl.h" |
#include "device/usb/device_manager_impl.h" |
@@ -18,6 +17,7 @@ |
#include "device/usb/mock_usb_device_handle.h" |
#include "device/usb/mock_usb_service.h" |
#include "device/usb/public/cpp/device_manager_delegate.h" |
+#include "device/usb/public/cpp/device_manager_factory.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "third_party/mojo/src/mojo/public/cpp/bindings/error_handler.h" |
#include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h" |
@@ -30,27 +30,51 @@ |
namespace { |
+bool DefaultDelegateFilter(const DeviceInfo& device_info) { |
+ return true; |
+} |
+ |
class TestDeviceManagerDelegate : public DeviceManagerDelegate { |
public: |
- TestDeviceManagerDelegate() {} |
+ using Filter = base::Callback<bool(const DeviceInfo&)>; |
+ |
+ TestDeviceManagerDelegate(const Filter& filter) : filter_(filter) {} |
~TestDeviceManagerDelegate() override {} |
+ void set_filter(const Filter& filter) { filter_ = filter; } |
+ |
private: |
// DeviceManagerDelegate implementation: |
- bool IsDeviceAllowed(const DeviceInfo& device_info) override { return true; } |
+ bool IsDeviceAllowed(const DeviceInfo& device_info) override { |
+ return filter_.Run(device_info); |
+ } |
+ |
+ Filter filter_; |
}; |
class TestDeviceClient : public DeviceClient { |
public: |
- TestDeviceClient() {} |
+ TestDeviceClient() : delegate_filter_(base::Bind(&DefaultDelegateFilter)) {} |
~TestDeviceClient() override {} |
MockUsbService& mock_usb_service() { return mock_usb_service_; } |
+ |
+ void SetDelegateFilter(const TestDeviceManagerDelegate::Filter& filter) { |
+ delegate_filter_ = filter; |
+ } |
private: |
// DeviceClient implementation: |
UsbService* GetUsbService() override { return &mock_usb_service_; } |
+ void ConnectToUSBDeviceManager( |
+ mojo::InterfaceRequest<DeviceManager> request) override { |
+ new DeviceManagerImpl(request.Pass(), |
+ scoped_ptr<DeviceManagerDelegate>( |
+ new TestDeviceManagerDelegate(delegate_filter_))); |
+ } |
+ |
+ TestDeviceManagerDelegate::Filter delegate_filter_; |
MockUsbService mock_usb_service_; |
}; |
@@ -66,13 +90,8 @@ |
return device_client_->mock_usb_service(); |
} |
- DeviceManagerPtr ConnectToDeviceManager() { |
- DeviceManagerPtr device_manager; |
- new DeviceManagerImpl( |
- mojo::GetProxy(&device_manager), |
- scoped_ptr<DeviceManagerDelegate>(new TestDeviceManagerDelegate), |
- base::ThreadTaskRunnerHandle::Get()); |
- return device_manager.Pass(); |
+ void SetDelegateFilter(const TestDeviceManagerDelegate::Filter& filter) { |
+ device_client_->SetDelegateFilter(filter); |
} |
private: |
@@ -156,7 +175,9 @@ |
mock_usb_service().AddDevice(device1); |
mock_usb_service().AddDevice(device2); |
- DeviceManagerPtr device_manager = ConnectToDeviceManager(); |
+ DeviceManagerPtr device_manager; |
+ DeviceClient::Get()->ConnectToUSBDeviceManager( |
+ mojo::GetProxy(&device_manager)); |
EnumerationOptionsPtr options = EnumerationOptions::New(); |
options->filters = mojo::Array<DeviceFilterPtr>::New(1); |
@@ -188,7 +209,9 @@ |
mock_usb_service().AddDevice(mock_device); |
- DeviceManagerPtr device_manager = ConnectToDeviceManager(); |
+ DeviceManagerPtr device_manager; |
+ DeviceClient::Get()->ConnectToUSBDeviceManager( |
+ mojo::GetProxy(&device_manager)); |
// Should be called on the mock as a result of OpenDevice() below. |
EXPECT_CALL(*mock_device.get(), Open(_)); |