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

Side by Side Diff: content/renderer/media/video_capture_impl_unittest.cc

Issue 2395163002: VideoCapture: migrate VideoCapture renderer-->host messages to mojo, part 2 (Closed)
Patch Set: rockot@s comments on renaming and return types Created 4 years, 2 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/shared_memory.h" 8 #include "base/memory/shared_memory.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "content/child/child_process.h" 10 #include "content/child/child_process.h"
11 #include "content/common/media/video_capture_messages.h" 11 #include "content/common/media/video_capture_messages.h"
12 #include "content/common/video_capture.mojom.h" 12 #include "content/common/video_capture.mojom.h"
13 #include "content/renderer/media/video_capture_impl.h" 13 #include "content/renderer/media/video_capture_impl.h"
14 #include "media/base/bind_to_current_loop.h" 14 #include "media/base/bind_to_current_loop.h"
15 #include "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 using ::testing::_; 18 using ::testing::_;
19 using ::testing::SaveArg;
19 20
20 namespace content { 21 namespace content {
21 22
23 const int kSessionId = 1;
24
22 // Mock implementation of the Mojo service. TODO(mcasas): Replace completely 25 // Mock implementation of the Mojo service. TODO(mcasas): Replace completely
23 // MockVideoCaptureMessageFilter, https://crbug.com/651897 26 // MockVideoCaptureMessageFilter, https://crbug.com/651897
24 class MockMojoVideoCaptureHost : public mojom::VideoCaptureHost { 27 class MockMojoVideoCaptureHost : public mojom::VideoCaptureHost {
25 public: 28 public:
26 MockMojoVideoCaptureHost() = default; 29 MockMojoVideoCaptureHost() = default;
27 30
31 MOCK_METHOD3(Start, void(int32_t, int32_t, const media::VideoCaptureParams&));
28 MOCK_METHOD1(Stop, void(int32_t)); 32 MOCK_METHOD1(Stop, void(int32_t));
29 MOCK_METHOD1(Pause, void(int32_t)); 33 MOCK_METHOD1(Pause, void(int32_t));
34 MOCK_METHOD3(Resume,
35 void(int32_t, int32_t, const media::VideoCaptureParams&));
30 MOCK_METHOD1(RequestRefreshFrame, void(int32_t)); 36 MOCK_METHOD1(RequestRefreshFrame, void(int32_t));
31 37
32 private: 38 private:
33 DISALLOW_COPY_AND_ASSIGN(MockMojoVideoCaptureHost); 39 DISALLOW_COPY_AND_ASSIGN(MockMojoVideoCaptureHost);
34 }; 40 };
35 41
36 class MockVideoCaptureMessageFilter : public VideoCaptureMessageFilter { 42 class MockVideoCaptureMessageFilter : public VideoCaptureMessageFilter {
37 public: 43 public:
38 MockVideoCaptureMessageFilter() : VideoCaptureMessageFilter() {} 44 MockVideoCaptureMessageFilter() : VideoCaptureMessageFilter() {}
39 45
(...skipping 10 matching lines...) Expand all
50 class VideoCaptureImplTest : public ::testing::Test { 56 class VideoCaptureImplTest : public ::testing::Test {
51 public: 57 public:
52 class MockVideoCaptureImpl : public VideoCaptureImpl { 58 class MockVideoCaptureImpl : public VideoCaptureImpl {
53 public: 59 public:
54 MockVideoCaptureImpl(const media::VideoCaptureSessionId id, 60 MockVideoCaptureImpl(const media::VideoCaptureSessionId id,
55 VideoCaptureMessageFilter* filter) 61 VideoCaptureMessageFilter* filter)
56 : VideoCaptureImpl(id, filter, base::ThreadTaskRunnerHandle::Get()), 62 : VideoCaptureImpl(id, filter, base::ThreadTaskRunnerHandle::Get()),
57 received_buffer_count_(0) {} 63 received_buffer_count_(0) {}
58 ~MockVideoCaptureImpl() override {} 64 ~MockVideoCaptureImpl() override {}
59 65
60 // Override Send() to mimic device to send events.
61 void Send(IPC::Message* message) override { 66 void Send(IPC::Message* message) override {
62 // In this method, messages are sent to the according handlers as if
63 // we are the device.
64 bool handled = true; 67 bool handled = true;
65 IPC_BEGIN_MESSAGE_MAP(MockVideoCaptureImpl, *message) 68 IPC_BEGIN_MESSAGE_MAP(MockVideoCaptureImpl, *message)
66 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_Start, DeviceStartCapture)
67 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_BufferReady, 69 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_BufferReady,
68 DeviceReceiveEmptyBuffer) 70 DeviceReceiveEmptyBuffer)
69 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_GetDeviceSupportedFormats, 71 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_GetDeviceSupportedFormats,
70 DeviceGetSupportedFormats) 72 DeviceGetSupportedFormats)
71 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_GetDeviceFormatsInUse, 73 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_GetDeviceFormatsInUse,
72 DeviceGetFormatsInUse) 74 DeviceGetFormatsInUse)
73 IPC_MESSAGE_UNHANDLED(handled = false) 75 IPC_MESSAGE_UNHANDLED(handled = false)
74 IPC_END_MESSAGE_MAP() 76 IPC_END_MESSAGE_MAP()
75 EXPECT_TRUE(handled); 77 EXPECT_TRUE(handled);
76 delete message; 78 delete message;
77 } 79 }
78 80
79 void DeviceStartCapture(int device_id,
80 media::VideoCaptureSessionId session_id,
81 const media::VideoCaptureParams& params) {
82 OnStateChanged(VIDEO_CAPTURE_STATE_STARTED);
83 capture_params_ = params;
84 }
85
86 void DeviceReceiveEmptyBuffer(int device_id, 81 void DeviceReceiveEmptyBuffer(int device_id,
87 int buffer_id, 82 int buffer_id,
88 const gpu::SyncToken& release_sync_token, 83 const gpu::SyncToken& release_sync_token,
89 double consumer_resource_utilization) { 84 double consumer_resource_utilization) {
90 received_buffer_count_++; 85 received_buffer_count_++;
91 } 86 }
92 87
93 void DeviceGetSupportedFormats(int device_id, 88 void DeviceGetSupportedFormats(int device_id,
94 media::VideoCaptureSessionId session_id) { 89 media::VideoCaptureSessionId session_id) {
95 // When the mock message filter receives a request for the device 90 // When the mock message filter receives a request for the device
96 // supported formats, replies immediately with an empty format list. 91 // supported formats, replies immediately with an empty format list.
97 OnDeviceSupportedFormatsEnumerated(media::VideoCaptureFormats()); 92 OnDeviceSupportedFormatsEnumerated(media::VideoCaptureFormats());
98 } 93 }
99 94
100 void DeviceGetFormatsInUse(int device_id, 95 void DeviceGetFormatsInUse(int device_id,
101 media::VideoCaptureSessionId session_id) { 96 media::VideoCaptureSessionId session_id) {
102 OnDeviceFormatsInUseReceived(media::VideoCaptureFormats()); 97 OnDeviceFormatsInUseReceived(media::VideoCaptureFormats());
103 } 98 }
104 99
105 void ReceiveStateChangeMessage(VideoCaptureState state) { 100 void ReceiveStateChangeMessage(VideoCaptureState state) {
106 OnStateChanged(state); 101 OnStateChanged(state);
107 } 102 }
108 103
109 int received_buffer_count() const { return received_buffer_count_; } 104 int received_buffer_count() const { return received_buffer_count_; }
110 105
111 const media::VideoCaptureParams& capture_params() const {
112 return capture_params_;
113 }
114
115 private: 106 private:
116 int received_buffer_count_; 107 int received_buffer_count_;
117 media::VideoCaptureParams capture_params_;
118 }; 108 };
119 109
120 VideoCaptureImplTest() 110 VideoCaptureImplTest()
121 : child_process_(new ChildProcess()), 111 : message_filter_(new MockVideoCaptureMessageFilter),
122 message_filter_(new MockVideoCaptureMessageFilter),
123 session_id_(1),
124 video_capture_impl_( 112 video_capture_impl_(
125 new MockVideoCaptureImpl(session_id_, message_filter_.get())) { 113 new MockVideoCaptureImpl(kSessionId, message_filter_.get())) {
126 params_small_.requested_format = media::VideoCaptureFormat( 114 params_small_.requested_format = media::VideoCaptureFormat(
127 gfx::Size(176, 144), 30, media::PIXEL_FORMAT_I420); 115 gfx::Size(176, 144), 30, media::PIXEL_FORMAT_I420);
128 params_large_.requested_format = media::VideoCaptureFormat( 116 params_large_.requested_format = media::VideoCaptureFormat(
129 gfx::Size(320, 240), 30, media::PIXEL_FORMAT_I420); 117 gfx::Size(320, 240), 30, media::PIXEL_FORMAT_I420);
130 118
131 video_capture_impl_->SetVideoCaptureHostForTesting( 119 video_capture_impl_->SetVideoCaptureHostForTesting(
132 &mock_video_capture_host_); 120 &mock_video_capture_host_);
133 video_capture_impl_->device_id_ = 2; 121 video_capture_impl_->device_id_ = 2;
134 } 122 }
135 123
136 protected: 124 protected:
137 MOCK_METHOD2(OnFrameReady, 125 MOCK_METHOD2(OnFrameReady,
138 void(const scoped_refptr<media::VideoFrame>&, base::TimeTicks)); 126 void(const scoped_refptr<media::VideoFrame>&, base::TimeTicks));
139 MOCK_METHOD1(OnStateUpdate, void(VideoCaptureState)); 127 MOCK_METHOD1(OnStateUpdate, void(VideoCaptureState));
140 MOCK_METHOD1(OnDeviceFormatsInUse, 128 MOCK_METHOD1(OnDeviceFormatsInUse, void(const media::VideoCaptureFormats&));
141 void(const media::VideoCaptureFormats&));
142 MOCK_METHOD1(OnDeviceSupportedFormats, 129 MOCK_METHOD1(OnDeviceSupportedFormats,
143 void(const media::VideoCaptureFormats&)); 130 void(const media::VideoCaptureFormats&));
144 131
145 void StartCapture(int client_id, const media::VideoCaptureParams& params) { 132 void StartCapture(int client_id, const media::VideoCaptureParams& params) {
146 video_capture_impl_->StartCapture( 133 video_capture_impl_->StartCapture(
147 client_id, params, base::Bind(&VideoCaptureImplTest::OnStateUpdate, 134 client_id, params, base::Bind(&VideoCaptureImplTest::OnStateUpdate,
148 base::Unretained(this)), 135 base::Unretained(this)),
149 base::Bind(&VideoCaptureImplTest::OnFrameReady, 136 base::Bind(&VideoCaptureImplTest::OnFrameReady,
150 base::Unretained(this))); 137 base::Unretained(this)));
151 } 138 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 176
190 void GetDeviceFormatsInUse() { 177 void GetDeviceFormatsInUse() {
191 const base::Callback<void(const media::VideoCaptureFormats&)> 178 const base::Callback<void(const media::VideoCaptureFormats&)>
192 callback = base::Bind( 179 callback = base::Bind(
193 &VideoCaptureImplTest::OnDeviceFormatsInUse, 180 &VideoCaptureImplTest::OnDeviceFormatsInUse,
194 base::Unretained(this)); 181 base::Unretained(this));
195 video_capture_impl_->GetDeviceFormatsInUse(callback); 182 video_capture_impl_->GetDeviceFormatsInUse(callback);
196 } 183 }
197 184
198 const base::MessageLoop message_loop_; 185 const base::MessageLoop message_loop_;
199 const std::unique_ptr<ChildProcess> child_process_; 186 const ChildProcess child_process_;
200 const scoped_refptr<MockVideoCaptureMessageFilter> message_filter_; 187 const scoped_refptr<MockVideoCaptureMessageFilter> message_filter_;
201 const media::VideoCaptureSessionId session_id_;
202 std::unique_ptr<MockVideoCaptureImpl> video_capture_impl_; 188 std::unique_ptr<MockVideoCaptureImpl> video_capture_impl_;
203 MockMojoVideoCaptureHost mock_video_capture_host_; 189 MockMojoVideoCaptureHost mock_video_capture_host_;
204 media::VideoCaptureParams params_small_; 190 media::VideoCaptureParams params_small_;
205 media::VideoCaptureParams params_large_; 191 media::VideoCaptureParams params_large_;
206 192
207 private: 193 private:
208 DISALLOW_COPY_AND_ASSIGN(VideoCaptureImplTest); 194 DISALLOW_COPY_AND_ASSIGN(VideoCaptureImplTest);
209 }; 195 };
210 196
211 TEST_F(VideoCaptureImplTest, Simple) { 197 TEST_F(VideoCaptureImplTest, Simple) {
212 // Execute SetCapture() and StopCapture() for one client.
213 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)); 198 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED));
214 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)); 199 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED));
200 EXPECT_CALL(mock_video_capture_host_, Start(_, kSessionId, params_small_));
215 EXPECT_CALL(mock_video_capture_host_, Stop(_)); 201 EXPECT_CALL(mock_video_capture_host_, Stop(_));
216 202
217 StartCapture(0, params_small_); 203 StartCapture(0, params_small_);
218 StopCapture(0); 204 StopCapture(0);
219 } 205 }
220 206
221 TEST_F(VideoCaptureImplTest, TwoClientsInSequence) { 207 TEST_F(VideoCaptureImplTest, TwoClientsInSequence) {
222 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2); 208 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2);
223 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2); 209 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2);
210 EXPECT_CALL(mock_video_capture_host_, Start(_, kSessionId, params_small_));
224 EXPECT_CALL(mock_video_capture_host_, Stop(_)); 211 EXPECT_CALL(mock_video_capture_host_, Stop(_));
225 212
226 StartCapture(0, params_small_); 213 StartCapture(0, params_small_);
227 StopCapture(0); 214 StopCapture(0);
228 StartCapture(1, params_small_); 215 StartCapture(1, params_small_);
229 StopCapture(1); 216 StopCapture(1);
230 } 217 }
231 218
232 TEST_F(VideoCaptureImplTest, LargeAndSmall) { 219 TEST_F(VideoCaptureImplTest, LargeAndSmall) {
233 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2); 220 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2);
234 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2); 221 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2);
222 EXPECT_CALL(mock_video_capture_host_, Start(_, kSessionId, params_large_));
235 EXPECT_CALL(mock_video_capture_host_, Stop(_)); 223 EXPECT_CALL(mock_video_capture_host_, Stop(_));
236 224
237 StartCapture(0, params_large_); 225 StartCapture(0, params_large_);
238 StopCapture(0); 226 StopCapture(0);
239 StartCapture(1, params_small_); 227 StartCapture(1, params_small_);
240 StopCapture(1); 228 StopCapture(1);
241 } 229 }
242 230
243 TEST_F(VideoCaptureImplTest, SmallAndLarge) { 231 TEST_F(VideoCaptureImplTest, SmallAndLarge) {
244 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2); 232 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2);
245 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2); 233 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2);
234 EXPECT_CALL(mock_video_capture_host_, Start(_, kSessionId, params_small_));
246 EXPECT_CALL(mock_video_capture_host_, Stop(_)); 235 EXPECT_CALL(mock_video_capture_host_, Stop(_));
247 236
248 StartCapture(0, params_small_); 237 StartCapture(0, params_small_);
249 StopCapture(0); 238 StopCapture(0);
250 StartCapture(1, params_large_); 239 StartCapture(1, params_large_);
251 StopCapture(1); 240 StopCapture(1);
252 } 241 }
253 242
254 // Check that a request to GetDeviceSupportedFormats() ends up eventually in the 243 // Checks that a request to GetDeviceSupportedFormats() ends up eventually in
255 // provided callback. 244 // the provided callback.
256 TEST_F(VideoCaptureImplTest, GetDeviceFormats) { 245 TEST_F(VideoCaptureImplTest, GetDeviceFormats) {
257 EXPECT_CALL(*this, OnDeviceSupportedFormats(_)); 246 EXPECT_CALL(*this, OnDeviceSupportedFormats(_));
258 247
259 GetDeviceSupportedFormats(); 248 GetDeviceSupportedFormats();
260 } 249 }
261 250
262 // Check that two requests to GetDeviceSupportedFormats() end up eventually 251 // Checks that two requests to GetDeviceSupportedFormats() end up eventually
263 // calling the provided callbacks. 252 // calling the provided callbacks.
264 TEST_F(VideoCaptureImplTest, TwoClientsGetDeviceFormats) { 253 TEST_F(VideoCaptureImplTest, TwoClientsGetDeviceFormats) {
265 EXPECT_CALL(*this, OnDeviceSupportedFormats(_)).Times(2); 254 EXPECT_CALL(*this, OnDeviceSupportedFormats(_)).Times(2);
266 255
267 GetDeviceSupportedFormats(); 256 GetDeviceSupportedFormats();
268 GetDeviceSupportedFormats(); 257 GetDeviceSupportedFormats();
269 } 258 }
270 259
271 // Check that a request to GetDeviceFormatsInUse() ends up eventually in the 260 // Checks that a request to GetDeviceFormatsInUse() ends up eventually in the
272 // provided callback. 261 // provided callback.
273 TEST_F(VideoCaptureImplTest, GetDeviceFormatsInUse) { 262 TEST_F(VideoCaptureImplTest, GetDeviceFormatsInUse) {
274 EXPECT_CALL(*this, OnDeviceFormatsInUse(_)); 263 EXPECT_CALL(*this, OnDeviceFormatsInUse(_));
275 264
276 GetDeviceFormatsInUse(); 265 GetDeviceFormatsInUse();
277 } 266 }
278 267
279 TEST_F(VideoCaptureImplTest, BufferReceived) { 268 TEST_F(VideoCaptureImplTest, BufferReceived) {
269 base::SharedMemory shm;
270 const size_t frame_size = media::VideoFrame::AllocationSize(
271 media::PIXEL_FORMAT_I420, params_small_.requested_format.frame_size);
272 ASSERT_TRUE(shm.CreateAndMapAnonymous(frame_size));
273
280 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)); 274 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED));
281 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)); 275 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED));
282 EXPECT_CALL(*this, OnFrameReady(_, _)); 276 EXPECT_CALL(*this, OnFrameReady(_, _));
277 EXPECT_CALL(mock_video_capture_host_, Start(_, kSessionId, params_small_));
283 EXPECT_CALL(mock_video_capture_host_, Stop(_)); 278 EXPECT_CALL(mock_video_capture_host_, Stop(_));
284 279
285 const gfx::Size size(1280, 720); 280 StartCapture(0, params_small_);
286
287 // Create a fake shared memory for buffer.
288 base::SharedMemory shm;
289 const size_t frame_size = media::VideoFrame::AllocationSize(
290 media::PIXEL_FORMAT_I420, size);
291 ASSERT_TRUE(shm.CreateAndMapAnonymous(frame_size));
292
293 media::VideoCaptureParams params;
294 params.requested_format = media::VideoCaptureFormat(
295 size, 30, media::PIXEL_FORMAT_I420);
296
297 StartCapture(0, params);
298 NewBuffer(0, shm); 281 NewBuffer(0, shm);
299 BufferReceived(0, size); 282 BufferReceived(0, params_small_.requested_format.frame_size);
300 StopCapture(0); 283 StopCapture(0);
301 BufferDestroyed(0); 284 BufferDestroyed(0);
302 } 285 }
303 286
304 TEST_F(VideoCaptureImplTest, BufferReceivedAfterStop) { 287 TEST_F(VideoCaptureImplTest, BufferReceivedAfterStop) {
288 base::SharedMemory shm;
289 const size_t frame_size = media::VideoFrame::AllocationSize(
290 media::PIXEL_FORMAT_I420, params_large_.requested_format.frame_size);
291 ASSERT_TRUE(shm.CreateAndMapAnonymous(frame_size));
292
305 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)); 293 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED));
306 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)); 294 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED));
307 EXPECT_CALL(*this, OnFrameReady(_, _)).Times(0); 295 EXPECT_CALL(*this, OnFrameReady(_, _)).Times(0);
296 EXPECT_CALL(mock_video_capture_host_, Start(_, kSessionId, params_large_));
308 EXPECT_CALL(mock_video_capture_host_, Stop(_)); 297 EXPECT_CALL(mock_video_capture_host_, Stop(_));
309 298
310 // Create a fake shared memory for buffer.
311 base::SharedMemory shm;
312 const size_t i420_frame_size = media::VideoFrame::AllocationSize(
313 media::PIXEL_FORMAT_I420, params_large_.requested_format.frame_size);
314 ASSERT_TRUE(shm.CreateAndMapAnonymous(i420_frame_size));
315
316 StartCapture(0, params_large_); 299 StartCapture(0, params_large_);
317 NewBuffer(0, shm); 300 NewBuffer(0, shm);
318 StopCapture(0); 301 StopCapture(0);
319 BufferReceived(0, params_large_.requested_format.frame_size); 302 BufferReceived(0, params_large_.requested_format.frame_size);
320 BufferDestroyed(0); 303 BufferDestroyed(0);
321 304
322 EXPECT_EQ(this->video_capture_impl_->received_buffer_count(), 1); 305 EXPECT_EQ(this->video_capture_impl_->received_buffer_count(), 1);
323 } 306 }
324 307
325 TEST_F(VideoCaptureImplTest, AlreadyStarted) { 308 TEST_F(VideoCaptureImplTest, AlreadyStarted) {
309 media::VideoCaptureParams params = {};
326 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2); 310 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2);
327 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2); 311 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2);
312 EXPECT_CALL(mock_video_capture_host_, Start(_, kSessionId, _))
313 .WillOnce(SaveArg<2>(&params));
328 EXPECT_CALL(mock_video_capture_host_, Stop(_)); 314 EXPECT_CALL(mock_video_capture_host_, Stop(_));
329 315
330 StartCapture(0, params_small_); 316 StartCapture(0, params_small_);
331 StartCapture(1, params_large_); 317 StartCapture(1, params_large_);
332 StopCapture(0); 318 StopCapture(0);
333 StopCapture(1); 319 StopCapture(1);
334 DCHECK(video_capture_impl_->capture_params().requested_format.frame_size == 320 DCHECK(params.requested_format == params_small_.requested_format);
335 params_small_.requested_format.frame_size);
336 } 321 }
337 322
338 TEST_F(VideoCaptureImplTest, EndedBeforeStop) { 323 TEST_F(VideoCaptureImplTest, EndedBeforeStop) {
339 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)); 324 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED));
340 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)); 325 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED));
326 EXPECT_CALL(mock_video_capture_host_, Start(_, kSessionId, params_small_));
341 327
342 StartCapture(0, params_small_); 328 StartCapture(0, params_small_);
343 329
344 // Receive state change message from browser.
345 video_capture_impl_->ReceiveStateChangeMessage(VIDEO_CAPTURE_STATE_ENDED); 330 video_capture_impl_->ReceiveStateChangeMessage(VIDEO_CAPTURE_STATE_ENDED);
346 331
347 StopCapture(0); 332 StopCapture(0);
348 } 333 }
349 334
350 TEST_F(VideoCaptureImplTest, ErrorBeforeStop) { 335 TEST_F(VideoCaptureImplTest, ErrorBeforeStop) {
351 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)); 336 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED));
352 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_ERROR)); 337 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_ERROR));
338 EXPECT_CALL(mock_video_capture_host_, Start(_, kSessionId, params_small_));
353 339
354 StartCapture(0, params_small_); 340 StartCapture(0, params_small_);
355 341
356 // Receive state change message from browser.
357 video_capture_impl_->ReceiveStateChangeMessage(VIDEO_CAPTURE_STATE_ERROR); 342 video_capture_impl_->ReceiveStateChangeMessage(VIDEO_CAPTURE_STATE_ERROR);
358 343
359 StopCapture(0); 344 StopCapture(0);
360 } 345 }
361 346
362 } // namespace content 347 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/video_capture_impl_manager_unittest.cc ('k') | services/video_capture/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698