| Index: services/video_capture/service_unittest.cc
|
| diff --git a/services/video_capture/service_unittest.cc b/services/video_capture/service_unittest.cc
|
| index 76d299c7d169e5bc809cbac86e857b5bce70ee7d..c3abcf76f74ed0243e09d0c0a72d27bacd4585ef 100644
|
| --- a/services/video_capture/service_unittest.cc
|
| +++ b/services/video_capture/service_unittest.cc
|
| @@ -6,18 +6,17 @@
|
| #include "base/run_loop.h"
|
| #include "services/shell/public/cpp/service_test.h"
|
| #include "services/video_capture/public/interfaces/video_capture_device_factory.mojom.h"
|
| +#include "services/video_capture/public/interfaces/video_capture_service.mojom.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
|
|
| using testing::Exactly;
|
| using testing::_;
|
| +using testing::Invoke;
|
| +using testing::InvokeWithoutArgs;
|
|
|
| namespace video_capture {
|
|
|
| -ACTION_P(RunClosure, closure) {
|
| - closure.Run();
|
| -}
|
| -
|
| -class MockClient {
|
| +class MockDeviceDescriptorReceiver {
|
| public:
|
| // Use forwarding method to work around gmock not supporting move-only types.
|
| void HandleEnumerateDeviceDescriptorsCallback(
|
| @@ -38,26 +37,47 @@ class VideoCaptureServiceTest : public shell::test::ServiceTest {
|
|
|
| void SetUp() override {
|
| ServiceTest::SetUp();
|
| - connector()->ConnectToInterface("mojo:video_capture", &factory_);
|
| + connector()->ConnectToInterface("mojo:video_capture", &service_);
|
| + service_->ConnectToFakeDeviceFactory(mojo::GetProxy(&factory_));
|
| }
|
|
|
| protected:
|
| + mojom::VideoCaptureServicePtr service_;
|
| mojom::VideoCaptureDeviceFactoryPtr factory_;
|
| - MockClient client_;
|
| + MockDeviceDescriptorReceiver descriptor_receiver_;
|
| };
|
|
|
| // Tests that an answer arrives from the service when calling
|
| // EnumerateDeviceDescriptors().
|
| TEST_F(VideoCaptureServiceTest, EnumerateDeviceDescriptorsCallbackArrives) {
|
| base::RunLoop wait_loop;
|
| - EXPECT_CALL(client_, OnEnumerateDeviceDescriptorsCallback(_))
|
| + EXPECT_CALL(descriptor_receiver_, OnEnumerateDeviceDescriptorsCallback(_))
|
| + .Times(Exactly(1))
|
| + .WillOnce(InvokeWithoutArgs([&wait_loop]() { wait_loop.Quit(); }));
|
| +
|
| + factory_->EnumerateDeviceDescriptors(base::Bind(
|
| + &MockDeviceDescriptorReceiver::HandleEnumerateDeviceDescriptorsCallback,
|
| + base::Unretained(&descriptor_receiver_)));
|
| + wait_loop.Run();
|
| +}
|
| +
|
| +TEST_F(VideoCaptureServiceTest, FakeDeviceFactoryEnumeratesOneDevice) {
|
| + base::RunLoop wait_loop;
|
| + size_t num_devices_enumerated = 0;
|
| + EXPECT_CALL(descriptor_receiver_, OnEnumerateDeviceDescriptorsCallback(_))
|
| .Times(Exactly(1))
|
| - .WillOnce(RunClosure(wait_loop.QuitClosure()));
|
| + .WillOnce(Invoke([&wait_loop, &num_devices_enumerated](
|
| + const std::vector<mojom::VideoCaptureDeviceDescriptorPtr>&
|
| + descriptors) {
|
| + num_devices_enumerated = descriptors.size();
|
| + wait_loop.Quit();
|
| + }));
|
|
|
| - factory_->EnumerateDeviceDescriptors(
|
| - base::Bind(&MockClient::HandleEnumerateDeviceDescriptorsCallback,
|
| - base::Unretained(&client_)));
|
| + factory_->EnumerateDeviceDescriptors(base::Bind(
|
| + &MockDeviceDescriptorReceiver::HandleEnumerateDeviceDescriptorsCallback,
|
| + base::Unretained(&descriptor_receiver_)));
|
| wait_loop.Run();
|
| + ASSERT_EQ(1u, num_devices_enumerated);
|
| }
|
|
|
| } // namespace video_capture
|
|
|