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

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

Issue 2390103002: Reland: VideoCapture: migrate VideoCapture renderer-->host messages to mojo, part 1 (Closed)
Patch Set: Sorted out tests after linker collision. Rebase 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/renderer/media/video_capture_impl.h" 13 #include "content/renderer/media/video_capture_impl.h"
13 #include "media/base/bind_to_current_loop.h" 14 #include "media/base/bind_to_current_loop.h"
14 #include "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 17
17 using ::testing::_; 18 using ::testing::_;
18 using ::testing::AtLeast;
19 using ::testing::InvokeWithoutArgs;
20 using ::testing::Return;
21 using ::testing::SaveArg;
22 19
23 namespace content { 20 namespace content {
24 21
22 // Mock implementation of the Mojo service. TODO(mcasas): Replace completely
23 // MockVideoCaptureMessageFilter, https://crbug.com/651897
24 class MockMojoVideoCaptureHost : public mojom::VideoCaptureHost {
25 public:
26 MockMojoVideoCaptureHost() = default;
27
28 MOCK_METHOD1(Stop, void(int32_t));
29 MOCK_METHOD1(Pause, void(int32_t));
30 MOCK_METHOD1(RequestRefreshFrame, void(int32_t));
31
32 private:
33 DISALLOW_COPY_AND_ASSIGN(MockMojoVideoCaptureHost);
34 };
35
25 class MockVideoCaptureMessageFilter : public VideoCaptureMessageFilter { 36 class MockVideoCaptureMessageFilter : public VideoCaptureMessageFilter {
26 public: 37 public:
27 MockVideoCaptureMessageFilter() : VideoCaptureMessageFilter() {} 38 MockVideoCaptureMessageFilter() : VideoCaptureMessageFilter() {}
28 39
29 // Filter implementation. 40 // Filter implementation.
30 MOCK_METHOD1(Send, bool(IPC::Message* message)); 41 MOCK_METHOD1(Send, bool(IPC::Message* message));
31 42
32 protected: 43 protected:
33 virtual ~MockVideoCaptureMessageFilter() {} 44 virtual ~MockVideoCaptureMessageFilter() {}
34 45
35 private: 46 private:
36 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureMessageFilter); 47 DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureMessageFilter);
37 }; 48 };
38 49
39 class VideoCaptureImplTest : public ::testing::Test { 50 class VideoCaptureImplTest : public ::testing::Test {
40 public: 51 public:
41 class MockVideoCaptureImpl : public VideoCaptureImpl { 52 class MockVideoCaptureImpl : public VideoCaptureImpl {
42 public: 53 public:
43 MockVideoCaptureImpl(const media::VideoCaptureSessionId id, 54 MockVideoCaptureImpl(const media::VideoCaptureSessionId id,
44 VideoCaptureMessageFilter* filter) 55 VideoCaptureMessageFilter* filter)
45 : VideoCaptureImpl(id, filter, base::ThreadTaskRunnerHandle::Get()), 56 : VideoCaptureImpl(id, filter, base::ThreadTaskRunnerHandle::Get()),
46 received_buffer_count_(0) {} 57 received_buffer_count_(0) {}
47 ~MockVideoCaptureImpl() override {} 58 ~MockVideoCaptureImpl() override {}
48 59
49 // Override Send() to mimic device to send events. 60 // Override Send() to mimic device to send events.
50 void Send(IPC::Message* message) override { 61 void Send(IPC::Message* message) override {
51 CHECK(message);
52
53 // In this method, messages are sent to the according handlers as if 62 // In this method, messages are sent to the according handlers as if
54 // we are the device. 63 // we are the device.
55 bool handled = true; 64 bool handled = true;
56 IPC_BEGIN_MESSAGE_MAP(MockVideoCaptureImpl, *message) 65 IPC_BEGIN_MESSAGE_MAP(MockVideoCaptureImpl, *message)
57 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_Start, DeviceStartCapture) 66 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_Start, DeviceStartCapture)
58 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_Pause, DevicePauseCapture)
59 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_Stop, DeviceStopCapture)
60 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_BufferReady, 67 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_BufferReady,
61 DeviceReceiveEmptyBuffer) 68 DeviceReceiveEmptyBuffer)
62 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_GetDeviceSupportedFormats, 69 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_GetDeviceSupportedFormats,
63 DeviceGetSupportedFormats) 70 DeviceGetSupportedFormats)
64 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_GetDeviceFormatsInUse, 71 IPC_MESSAGE_HANDLER(VideoCaptureHostMsg_GetDeviceFormatsInUse,
65 DeviceGetFormatsInUse) 72 DeviceGetFormatsInUse)
66 IPC_MESSAGE_UNHANDLED(handled = false) 73 IPC_MESSAGE_UNHANDLED(handled = false)
67 IPC_END_MESSAGE_MAP() 74 IPC_END_MESSAGE_MAP()
68 EXPECT_TRUE(handled); 75 EXPECT_TRUE(handled);
69 delete message; 76 delete message;
70 } 77 }
71 78
72 void DeviceStartCapture(int device_id, 79 void DeviceStartCapture(int device_id,
73 media::VideoCaptureSessionId session_id, 80 media::VideoCaptureSessionId session_id,
74 const media::VideoCaptureParams& params) { 81 const media::VideoCaptureParams& params) {
75 OnStateChanged(VIDEO_CAPTURE_STATE_STARTED); 82 OnStateChanged(VIDEO_CAPTURE_STATE_STARTED);
76 capture_params_ = params; 83 capture_params_ = params;
77 } 84 }
78 85
79 void DevicePauseCapture(int device_id) {}
80
81 void DeviceStopCapture(int device_id) {
82 OnStateChanged(VIDEO_CAPTURE_STATE_STOPPED);
83 }
84
85 void DeviceReceiveEmptyBuffer(int device_id, 86 void DeviceReceiveEmptyBuffer(int device_id,
86 int buffer_id, 87 int buffer_id,
87 const gpu::SyncToken& release_sync_token, 88 const gpu::SyncToken& release_sync_token,
88 double consumer_resource_utilization) { 89 double consumer_resource_utilization) {
89 received_buffer_count_++; 90 received_buffer_count_++;
90 } 91 }
91 92
92 void DeviceGetSupportedFormats(int device_id, 93 void DeviceGetSupportedFormats(int device_id,
93 media::VideoCaptureSessionId session_id) { 94 media::VideoCaptureSessionId session_id) {
94 // When the mock message filter receives a request for the device 95 // When the mock message filter receives a request for the device
(...skipping 25 matching lines...) Expand all
120 : child_process_(new ChildProcess()), 121 : child_process_(new ChildProcess()),
121 message_filter_(new MockVideoCaptureMessageFilter), 122 message_filter_(new MockVideoCaptureMessageFilter),
122 session_id_(1), 123 session_id_(1),
123 video_capture_impl_( 124 video_capture_impl_(
124 new MockVideoCaptureImpl(session_id_, message_filter_.get())) { 125 new MockVideoCaptureImpl(session_id_, message_filter_.get())) {
125 params_small_.requested_format = media::VideoCaptureFormat( 126 params_small_.requested_format = media::VideoCaptureFormat(
126 gfx::Size(176, 144), 30, media::PIXEL_FORMAT_I420); 127 gfx::Size(176, 144), 30, media::PIXEL_FORMAT_I420);
127 params_large_.requested_format = media::VideoCaptureFormat( 128 params_large_.requested_format = media::VideoCaptureFormat(
128 gfx::Size(320, 240), 30, media::PIXEL_FORMAT_I420); 129 gfx::Size(320, 240), 30, media::PIXEL_FORMAT_I420);
129 130
131 video_capture_impl_->SetVideoCaptureHostForTesting(
132 &mock_video_capture_host_);
130 video_capture_impl_->device_id_ = 2; 133 video_capture_impl_->device_id_ = 2;
131 } 134 }
132 135
133 virtual ~VideoCaptureImplTest() {}
134
135 protected: 136 protected:
136 MOCK_METHOD2(OnFrameReady, 137 MOCK_METHOD2(OnFrameReady,
137 void(const scoped_refptr<media::VideoFrame>&, base::TimeTicks)); 138 void(const scoped_refptr<media::VideoFrame>&, base::TimeTicks));
138 MOCK_METHOD1(OnStateUpdate, void(VideoCaptureState)); 139 MOCK_METHOD1(OnStateUpdate, void(VideoCaptureState));
139 MOCK_METHOD1(OnDeviceFormatsInUse, 140 MOCK_METHOD1(OnDeviceFormatsInUse,
140 void(const media::VideoCaptureFormats&)); 141 void(const media::VideoCaptureFormats&));
141 MOCK_METHOD1(OnDeviceSupportedFormats, 142 MOCK_METHOD1(OnDeviceSupportedFormats,
142 void(const media::VideoCaptureFormats&)); 143 void(const media::VideoCaptureFormats&));
143 144
144 void StartCapture(int client_id, const media::VideoCaptureParams& params) { 145 void StartCapture(int client_id, const media::VideoCaptureParams& params) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 &VideoCaptureImplTest::OnDeviceFormatsInUse, 193 &VideoCaptureImplTest::OnDeviceFormatsInUse,
193 base::Unretained(this)); 194 base::Unretained(this));
194 video_capture_impl_->GetDeviceFormatsInUse(callback); 195 video_capture_impl_->GetDeviceFormatsInUse(callback);
195 } 196 }
196 197
197 const base::MessageLoop message_loop_; 198 const base::MessageLoop message_loop_;
198 const std::unique_ptr<ChildProcess> child_process_; 199 const std::unique_ptr<ChildProcess> child_process_;
199 const scoped_refptr<MockVideoCaptureMessageFilter> message_filter_; 200 const scoped_refptr<MockVideoCaptureMessageFilter> message_filter_;
200 const media::VideoCaptureSessionId session_id_; 201 const media::VideoCaptureSessionId session_id_;
201 std::unique_ptr<MockVideoCaptureImpl> video_capture_impl_; 202 std::unique_ptr<MockVideoCaptureImpl> video_capture_impl_;
203 MockMojoVideoCaptureHost mock_video_capture_host_;
202 media::VideoCaptureParams params_small_; 204 media::VideoCaptureParams params_small_;
203 media::VideoCaptureParams params_large_; 205 media::VideoCaptureParams params_large_;
204 206
205 private: 207 private:
206 DISALLOW_COPY_AND_ASSIGN(VideoCaptureImplTest); 208 DISALLOW_COPY_AND_ASSIGN(VideoCaptureImplTest);
207 }; 209 };
208 210
209 TEST_F(VideoCaptureImplTest, Simple) { 211 TEST_F(VideoCaptureImplTest, Simple) {
210 // Execute SetCapture() and StopCapture() for one client. 212 // Execute SetCapture() and StopCapture() for one client.
211 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)); 213 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED));
212 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)); 214 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED));
215 EXPECT_CALL(mock_video_capture_host_, Stop(_));
213 216
214 StartCapture(0, params_small_); 217 StartCapture(0, params_small_);
215 StopCapture(0); 218 StopCapture(0);
216 } 219 }
217 220
218 TEST_F(VideoCaptureImplTest, TwoClientsInSequence) { 221 TEST_F(VideoCaptureImplTest, TwoClientsInSequence) {
219 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2); 222 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2);
220 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2); 223 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2);
224 EXPECT_CALL(mock_video_capture_host_, Stop(_));
221 225
222 StartCapture(0, params_small_); 226 StartCapture(0, params_small_);
223 StopCapture(0); 227 StopCapture(0);
224 StartCapture(1, params_small_); 228 StartCapture(1, params_small_);
225 StopCapture(1); 229 StopCapture(1);
226 } 230 }
227 231
228 TEST_F(VideoCaptureImplTest, LargeAndSmall) { 232 TEST_F(VideoCaptureImplTest, LargeAndSmall) {
229 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2); 233 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2);
230 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2); 234 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2);
235 EXPECT_CALL(mock_video_capture_host_, Stop(_));
231 236
232 StartCapture(0, params_large_); 237 StartCapture(0, params_large_);
233 StopCapture(0); 238 StopCapture(0);
234 StartCapture(1, params_small_); 239 StartCapture(1, params_small_);
235 StopCapture(1); 240 StopCapture(1);
236 } 241 }
237 242
238 TEST_F(VideoCaptureImplTest, SmallAndLarge) { 243 TEST_F(VideoCaptureImplTest, SmallAndLarge) {
239 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2); 244 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2);
240 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2); 245 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2);
246 EXPECT_CALL(mock_video_capture_host_, Stop(_));
241 247
242 StartCapture(0, params_small_); 248 StartCapture(0, params_small_);
243 StopCapture(0); 249 StopCapture(0);
244 StartCapture(1, params_large_); 250 StartCapture(1, params_large_);
245 StopCapture(1); 251 StopCapture(1);
246 } 252 }
247 253
248 // Check that a request to GetDeviceSupportedFormats() ends up eventually in the 254 // Check that a request to GetDeviceSupportedFormats() ends up eventually in the
249 // provided callback. 255 // provided callback.
250 TEST_F(VideoCaptureImplTest, GetDeviceFormats) { 256 TEST_F(VideoCaptureImplTest, GetDeviceFormats) {
(...skipping 13 matching lines...) Expand all
264 270
265 // Check that a request to GetDeviceFormatsInUse() ends up eventually in the 271 // Check that a request to GetDeviceFormatsInUse() ends up eventually in the
266 // provided callback. 272 // provided callback.
267 TEST_F(VideoCaptureImplTest, GetDeviceFormatsInUse) { 273 TEST_F(VideoCaptureImplTest, GetDeviceFormatsInUse) {
268 EXPECT_CALL(*this, OnDeviceFormatsInUse(_)); 274 EXPECT_CALL(*this, OnDeviceFormatsInUse(_));
269 275
270 GetDeviceFormatsInUse(); 276 GetDeviceFormatsInUse();
271 } 277 }
272 278
273 TEST_F(VideoCaptureImplTest, BufferReceived) { 279 TEST_F(VideoCaptureImplTest, BufferReceived) {
274 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(1); 280 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED));
275 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(1); 281 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED));
276 EXPECT_CALL(*this, OnFrameReady(_, _)).Times(1); 282 EXPECT_CALL(*this, OnFrameReady(_, _));
283 EXPECT_CALL(mock_video_capture_host_, Stop(_));
277 284
278 const gfx::Size size(1280, 720); 285 const gfx::Size size(1280, 720);
279 286
280 // Create a fake shared memory for buffer. 287 // Create a fake shared memory for buffer.
281 base::SharedMemory shm; 288 base::SharedMemory shm;
282 const size_t frame_size = media::VideoFrame::AllocationSize( 289 const size_t frame_size = media::VideoFrame::AllocationSize(
283 media::PIXEL_FORMAT_I420, size); 290 media::PIXEL_FORMAT_I420, size);
284 ASSERT_TRUE(shm.CreateAndMapAnonymous(frame_size)); 291 ASSERT_TRUE(shm.CreateAndMapAnonymous(frame_size));
285 292
286 media::VideoCaptureParams params; 293 media::VideoCaptureParams params;
287 params.requested_format = media::VideoCaptureFormat( 294 params.requested_format = media::VideoCaptureFormat(
288 size, 30, media::PIXEL_FORMAT_I420); 295 size, 30, media::PIXEL_FORMAT_I420);
289 296
290 StartCapture(0, params); 297 StartCapture(0, params);
291 NewBuffer(0, shm); 298 NewBuffer(0, shm);
292 BufferReceived(0, size); 299 BufferReceived(0, size);
293 StopCapture(0); 300 StopCapture(0);
294 BufferDestroyed(0); 301 BufferDestroyed(0);
295 } 302 }
296 303
297 TEST_F(VideoCaptureImplTest, BufferReceivedAfterStop) { 304 TEST_F(VideoCaptureImplTest, BufferReceivedAfterStop) {
298 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(1); 305 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED));
299 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(1); 306 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED));
300 EXPECT_CALL(*this, OnFrameReady(_, _)).Times(0); 307 EXPECT_CALL(*this, OnFrameReady(_, _)).Times(0);
308 EXPECT_CALL(mock_video_capture_host_, Stop(_));
301 309
302 // Create a fake shared memory for buffer. 310 // Create a fake shared memory for buffer.
303 base::SharedMemory shm; 311 base::SharedMemory shm;
304 const size_t i420_frame_size = media::VideoFrame::AllocationSize( 312 const size_t i420_frame_size = media::VideoFrame::AllocationSize(
305 media::PIXEL_FORMAT_I420, params_large_.requested_format.frame_size); 313 media::PIXEL_FORMAT_I420, params_large_.requested_format.frame_size);
306 ASSERT_TRUE(shm.CreateAndMapAnonymous(i420_frame_size)); 314 ASSERT_TRUE(shm.CreateAndMapAnonymous(i420_frame_size));
307 315
308 StartCapture(0, params_large_); 316 StartCapture(0, params_large_);
309 NewBuffer(0, shm); 317 NewBuffer(0, shm);
310 StopCapture(0); 318 StopCapture(0);
311 BufferReceived(0, params_large_.requested_format.frame_size); 319 BufferReceived(0, params_large_.requested_format.frame_size);
312 BufferDestroyed(0); 320 BufferDestroyed(0);
313 321
314 EXPECT_EQ(this->video_capture_impl_->received_buffer_count(), 1); 322 EXPECT_EQ(this->video_capture_impl_->received_buffer_count(), 1);
315 } 323 }
316 324
317 TEST_F(VideoCaptureImplTest, AlreadyStarted) { 325 TEST_F(VideoCaptureImplTest, AlreadyStarted) {
318 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2); 326 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)).Times(2);
319 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2); 327 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)).Times(2);
328 EXPECT_CALL(mock_video_capture_host_, Stop(_));
320 329
321 StartCapture(0, params_small_); 330 StartCapture(0, params_small_);
322 StartCapture(1, params_large_); 331 StartCapture(1, params_large_);
323 StopCapture(0); 332 StopCapture(0);
324 StopCapture(1); 333 StopCapture(1);
325 DCHECK(video_capture_impl_->capture_params().requested_format.frame_size == 334 DCHECK(video_capture_impl_->capture_params().requested_format.frame_size ==
326 params_small_.requested_format.frame_size); 335 params_small_.requested_format.frame_size);
327 } 336 }
328 337
329 TEST_F(VideoCaptureImplTest, EndedBeforeStop) { 338 TEST_F(VideoCaptureImplTest, EndedBeforeStop) {
330 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)); 339 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED));
331 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED)); 340 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STOPPED));
332 341
333 StartCapture(0, params_small_); 342 StartCapture(0, params_small_);
334 343
335 // Receive state change message from browser. 344 // Receive state change message from browser.
336 video_capture_impl_->ReceiveStateChangeMessage(VIDEO_CAPTURE_STATE_ENDED); 345 video_capture_impl_->ReceiveStateChangeMessage(VIDEO_CAPTURE_STATE_ENDED);
337 346
338 StopCapture(0); 347 StopCapture(0);
339 } 348 }
340 349
341 TEST_F(VideoCaptureImplTest, ErrorBeforeStop) { 350 TEST_F(VideoCaptureImplTest, ErrorBeforeStop) {
342 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED)); 351 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_STARTED));
343 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_ERROR)); 352 EXPECT_CALL(*this, OnStateUpdate(VIDEO_CAPTURE_STATE_ERROR));
344 353
345 StartCapture(0, params_small_); 354 StartCapture(0, params_small_);
346 355
347 // Receive state change message from browser. 356 // Receive state change message from browser.
348 video_capture_impl_->ReceiveStateChangeMessage(VIDEO_CAPTURE_STATE_ERROR); 357 video_capture_impl_->ReceiveStateChangeMessage(VIDEO_CAPTURE_STATE_ERROR);
349 358
350 StopCapture(0); 359 StopCapture(0);
351 } 360 }
352 361
353 } // namespace content 362 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/video_capture_impl_manager_unittest.cc ('k') | content/renderer/media/video_capture_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698