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

Side by Side Diff: services/video_capture/test/fake_device_descriptor_unittest.cc

Issue 2843333006: Reland [Mojo Video Capture] Adapt video_capture service to refactored video capture stack (Closed)
Patch Set: Fix for flaky test Created 3 years, 7 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "base/run_loop.h" 5 #include "base/run_loop.h"
6 #include "services/video_capture/test/fake_device_descriptor_test.h" 6 #include "services/video_capture/test/fake_device_descriptor_test.h"
7 #include "services/video_capture/test/mock_receiver.h" 7 #include "services/video_capture/test/mock_receiver.h"
8 8
9 using testing::_; 9 using testing::_;
10 using testing::InvokeWithoutArgs; 10 using testing::InvokeWithoutArgs;
11 11
12 namespace video_capture { 12 namespace video_capture {
13 13
14 class MockCreateDeviceProxyCallback { 14 class MockCreateDeviceProxyCallback {
15 public: 15 public:
16 MOCK_METHOD1(Run, void(mojom::DeviceAccessResultCode result_code)); 16 MOCK_METHOD1(Run, void(mojom::DeviceAccessResultCode result_code));
17 }; 17 };
18 18
19 // This alias ensures test output is easily attributed to this service's tests. 19 // This alias ensures test output is easily attributed to this service's tests.
20 // TODO(rockot/chfremer): Consider just renaming the type. 20 // TODO(rockot/chfremer): Consider just renaming the type.
21 using FakeVideoCaptureDeviceDescriptorTest = FakeDeviceDescriptorTest; 21 using FakeVideoCaptureDeviceDescriptorTest = FakeDeviceDescriptorTest;
22 22
23 // Tests that when requesting a second proxy for a device without closing the 23 // Tests that when requesting a second proxy for a device without closing the
24 // first one, the service revokes access to the first one by closing the 24 // first one, the service revokes access to the first one by closing the
25 // connection. 25 // connection.
26 TEST_F(FakeVideoCaptureDeviceDescriptorTest, 26 TEST_F(FakeVideoCaptureDeviceDescriptorTest, AccessIsRevokedOnSecondAccess) {
27 DISABLED_AccessIsRevokedOnSecondAccess) { 27 base::RunLoop wait_loop_1;
28 mojom::DevicePtr device_proxy_1; 28 mojom::DevicePtr device_proxy_1;
29 bool device_access_1_revoked = false; 29 bool device_access_1_revoked = false;
30 MockCreateDeviceProxyCallback create_device_proxy_callback_1; 30 MockCreateDeviceProxyCallback create_device_proxy_callback_1;
31 EXPECT_CALL(create_device_proxy_callback_1, 31 EXPECT_CALL(create_device_proxy_callback_1,
32 Run(mojom::DeviceAccessResultCode::SUCCESS)) 32 Run(mojom::DeviceAccessResultCode::SUCCESS))
33 .Times(1); 33 .Times(1);
34 factory_->CreateDevice( 34 factory_->CreateDevice(
35 fake_device_info_.descriptor.device_id, 35 fake_device_info_.descriptor.device_id,
36 mojo::MakeRequest(&device_proxy_1), 36 mojo::MakeRequest(&device_proxy_1),
37 base::Bind(&MockCreateDeviceProxyCallback::Run, 37 base::Bind(&MockCreateDeviceProxyCallback::Run,
38 base::Unretained(&create_device_proxy_callback_1))); 38 base::Unretained(&create_device_proxy_callback_1)));
39 device_proxy_1.set_connection_error_handler( 39 device_proxy_1.set_connection_error_handler(base::Bind(
40 base::Bind([](bool* access_revoked) { *access_revoked = true; }, 40 [](bool* access_revoked, base::RunLoop* wait_loop_1) {
41 &device_access_1_revoked)); 41 *access_revoked = true;
42 wait_loop_1->Quit();
43 },
44 &device_access_1_revoked, &wait_loop_1));
42 45
43 base::RunLoop wait_loop; 46 base::RunLoop wait_loop_2;
44 mojom::DevicePtr device_proxy_2; 47 mojom::DevicePtr device_proxy_2;
45 bool device_access_2_revoked = false; 48 bool device_access_2_revoked = false;
46 MockCreateDeviceProxyCallback create_device_proxy_callback_2; 49 MockCreateDeviceProxyCallback create_device_proxy_callback_2;
47 EXPECT_CALL(create_device_proxy_callback_2, 50 EXPECT_CALL(create_device_proxy_callback_2,
48 Run(mojom::DeviceAccessResultCode::SUCCESS)) 51 Run(mojom::DeviceAccessResultCode::SUCCESS))
49 .Times(1) 52 .Times(1)
50 .WillOnce(InvokeWithoutArgs([&wait_loop]() { wait_loop.Quit(); })); 53 .WillOnce(InvokeWithoutArgs([&wait_loop_2]() { wait_loop_2.Quit(); }));
51 factory_->CreateDevice( 54 factory_->CreateDevice(
52 fake_device_info_.descriptor.device_id, 55 fake_device_info_.descriptor.device_id,
53 mojo::MakeRequest(&device_proxy_2), 56 mojo::MakeRequest(&device_proxy_2),
54 base::Bind(&MockCreateDeviceProxyCallback::Run, 57 base::Bind(&MockCreateDeviceProxyCallback::Run,
55 base::Unretained(&create_device_proxy_callback_2))); 58 base::Unretained(&create_device_proxy_callback_2)));
56 device_proxy_2.set_connection_error_handler( 59 device_proxy_2.set_connection_error_handler(
57 base::Bind([](bool* access_revoked) { *access_revoked = true; }, 60 base::Bind([](bool* access_revoked) { *access_revoked = true; },
58 &device_access_2_revoked)); 61 &device_access_2_revoked));
59 wait_loop.Run(); 62 wait_loop_1.Run();
63 wait_loop_2.Run();
60 ASSERT_TRUE(device_access_1_revoked); 64 ASSERT_TRUE(device_access_1_revoked);
61 ASSERT_FALSE(device_access_2_revoked); 65 ASSERT_FALSE(device_access_2_revoked);
62 } 66 }
63 67
64 // Tests that a second proxy requested for a device can be used successfully. 68 // Tests that a second proxy requested for a device can be used successfully.
65 TEST_F(FakeVideoCaptureDeviceDescriptorTest, 69 TEST_F(FakeVideoCaptureDeviceDescriptorTest, CanUseSecondRequestedProxy) {
66 DISABLED_CanUseSecondRequestedProxy) {
67 mojom::DevicePtr device_proxy_1; 70 mojom::DevicePtr device_proxy_1;
68 factory_->CreateDevice( 71 factory_->CreateDevice(
69 fake_device_info_.descriptor.device_id, 72 fake_device_info_.descriptor.device_id,
70 mojo::MakeRequest(&device_proxy_1), 73 mojo::MakeRequest(&device_proxy_1),
71 base::Bind([](mojom::DeviceAccessResultCode result_code) {})); 74 base::Bind([](mojom::DeviceAccessResultCode result_code) {}));
72 75
73 base::RunLoop wait_loop; 76 base::RunLoop wait_loop;
74 mojom::DevicePtr device_proxy_2; 77 mojom::DevicePtr device_proxy_2;
75 factory_->CreateDevice( 78 factory_->CreateDevice(
76 fake_device_info_.descriptor.device_id, 79 fake_device_info_.descriptor.device_id,
77 mojo::MakeRequest(&device_proxy_2), 80 mojo::MakeRequest(&device_proxy_2),
78 base::Bind( 81 base::Bind(
79 [](base::RunLoop* wait_loop, 82 [](base::RunLoop* wait_loop,
80 mojom::DeviceAccessResultCode result_code) { wait_loop->Quit(); }, 83 mojom::DeviceAccessResultCode result_code) { wait_loop->Quit(); },
81 &wait_loop)); 84 &wait_loop));
82 wait_loop.Run(); 85 wait_loop.Run();
83 86
84 media::VideoCaptureParams arbitrary_requested_settings; 87 media::VideoCaptureParams arbitrary_requested_settings;
85 arbitrary_requested_settings.requested_format.frame_size.SetSize(640, 480); 88 arbitrary_requested_settings.requested_format.frame_size.SetSize(640, 480);
86 arbitrary_requested_settings.requested_format.frame_rate = 15; 89 arbitrary_requested_settings.requested_format.frame_rate = 15;
87 arbitrary_requested_settings.resolution_change_policy = 90 arbitrary_requested_settings.resolution_change_policy =
88 media::RESOLUTION_POLICY_FIXED_RESOLUTION; 91 media::RESOLUTION_POLICY_FIXED_RESOLUTION;
89 arbitrary_requested_settings.power_line_frequency = 92 arbitrary_requested_settings.power_line_frequency =
90 media::PowerLineFrequency::FREQUENCY_DEFAULT; 93 media::PowerLineFrequency::FREQUENCY_DEFAULT;
91 94
92 base::RunLoop wait_loop_2; 95 base::RunLoop wait_loop_2;
93 mojom::ReceiverPtr receiver_proxy; 96 mojom::ReceiverPtr receiver_proxy;
94 MockReceiver receiver(mojo::MakeRequest(&receiver_proxy)); 97 MockReceiver receiver(mojo::MakeRequest(&receiver_proxy));
95 EXPECT_CALL(receiver, OnIncomingCapturedVideoFramePtr(_)) 98 EXPECT_CALL(receiver, DoOnNewBufferHandle(_, _));
99 EXPECT_CALL(receiver, DoOnFrameReadyInBuffer(_, _, _, _))
96 .WillRepeatedly( 100 .WillRepeatedly(
97 InvokeWithoutArgs([&wait_loop_2]() { wait_loop_2.Quit(); })); 101 InvokeWithoutArgs([&wait_loop_2]() { wait_loop_2.Quit(); }));
98 102
99 device_proxy_2->Start(arbitrary_requested_settings, 103 device_proxy_2->Start(arbitrary_requested_settings,
100 std::move(receiver_proxy)); 104 std::move(receiver_proxy));
101 wait_loop_2.Run(); 105 wait_loop_2.Run();
102 } 106 }
103 107
104 } // namespace video_capture 108 } // namespace video_capture
OLDNEW
« no previous file with comments | « services/video_capture/service_impl.cc ('k') | services/video_capture/test/fake_device_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698