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

Side by Side Diff: content/browser/renderer_host/media/video_capture_host_unittest.cc

Issue 1159623009: content: Remove use of MessageLoopProxy and deprecated MessageLoop APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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 <map> 5 #include <map>
6 #include <string> 6 #include <string>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
11 #include "base/files/scoped_file.h" 11 #include "base/files/scoped_file.h"
12 #include "base/location.h"
12 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
13 #include "base/message_loop/message_loop.h"
14 #include "base/run_loop.h" 14 #include "base/run_loop.h"
15 #include "base/single_thread_task_runner.h"
15 #include "base/stl_util.h" 16 #include "base/stl_util.h"
16 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
18 #include "base/thread_task_runner_handle.h"
17 #include "content/browser/browser_thread_impl.h" 19 #include "content/browser/browser_thread_impl.h"
18 #include "content/browser/renderer_host/media/media_stream_manager.h" 20 #include "content/browser/renderer_host/media/media_stream_manager.h"
19 #include "content/browser/renderer_host/media/media_stream_requester.h" 21 #include "content/browser/renderer_host/media/media_stream_requester.h"
20 #include "content/browser/renderer_host/media/media_stream_ui_proxy.h" 22 #include "content/browser/renderer_host/media/media_stream_ui_proxy.h"
21 #include "content/browser/renderer_host/media/video_capture_host.h" 23 #include "content/browser/renderer_host/media/video_capture_host.h"
22 #include "content/browser/renderer_host/media/video_capture_manager.h" 24 #include "content/browser/renderer_host/media/video_capture_manager.h"
23 #include "content/common/media/video_capture_messages.h" 25 #include "content/common/media/video_capture_messages.h"
24 #include "content/public/common/content_switches.h" 26 #include "content/public/common/content_switches.h"
25 #include "content/public/test/mock_resource_context.h" 27 #include "content/public/test/mock_resource_context.h"
26 #include "content/public/test/test_browser_context.h" 28 #include "content/public/test/test_browser_context.h"
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 OnStateChanged(device_id, state); 267 OnStateChanged(device_id, state);
266 } 268 }
267 269
268 std::map<int, base::SharedMemory*> filled_dib_; 270 std::map<int, base::SharedMemory*> filled_dib_;
269 bool return_buffers_; 271 bool return_buffers_;
270 bool dump_video_; 272 bool dump_video_;
271 media::VideoCaptureFormat format_; 273 media::VideoCaptureFormat format_;
272 DumpVideo dumper_; 274 DumpVideo dumper_;
273 }; 275 };
274 276
275 ACTION_P2(ExitMessageLoop, message_loop, quit_closure) { 277 ACTION_P2(ExitMessageLoop, task_runner, quit_closure) {
276 message_loop->PostTask(FROM_HERE, quit_closure); 278 task_runner->PostTask(FROM_HERE, quit_closure);
277 } 279 }
278 280
279 // This is an integration test of VideoCaptureHost in conjunction with 281 // This is an integration test of VideoCaptureHost in conjunction with
280 // MediaStreamManager, VideoCaptureManager, VideoCaptureController, and 282 // MediaStreamManager, VideoCaptureManager, VideoCaptureController, and
281 // VideoCaptureDevice. 283 // VideoCaptureDevice.
282 class VideoCaptureHostTest : public testing::Test { 284 class VideoCaptureHostTest : public testing::Test {
283 public: 285 public:
284 VideoCaptureHostTest() 286 VideoCaptureHostTest()
285 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), 287 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
286 message_loop_(base::MessageLoopProxy::current()), 288 task_runner_(base::ThreadTaskRunnerHandle::Get()),
287 opened_session_id_(kInvalidMediaCaptureSessionId) {} 289 opened_session_id_(kInvalidMediaCaptureSessionId) {}
288 290
289 void SetUp() override { 291 void SetUp() override {
290 SetBrowserClientForTesting(&browser_client_); 292 SetBrowserClientForTesting(&browser_client_);
291 293
292 #if defined(OS_CHROMEOS) 294 #if defined(OS_CHROMEOS)
293 chromeos::CrasAudioHandler::InitializeForTesting(); 295 chromeos::CrasAudioHandler::InitializeForTesting();
294 #endif 296 #endif
295 297
296 // Create our own MediaStreamManager. 298 // Create our own MediaStreamManager.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 { 344 {
343 base::RunLoop run_loop; 345 base::RunLoop run_loop;
344 std::string label = media_stream_manager_->EnumerateDevices( 346 std::string label = media_stream_manager_->EnumerateDevices(
345 &stream_requester_, 347 &stream_requester_,
346 render_process_id, 348 render_process_id,
347 render_frame_id, 349 render_frame_id,
348 browser_context_.GetResourceContext()->GetMediaDeviceIDSalt(), 350 browser_context_.GetResourceContext()->GetMediaDeviceIDSalt(),
349 page_request_id, 351 page_request_id,
350 MEDIA_DEVICE_VIDEO_CAPTURE, 352 MEDIA_DEVICE_VIDEO_CAPTURE,
351 security_origin); 353 security_origin);
352 EXPECT_CALL(stream_requester_, DevicesEnumerated(render_frame_id, 354 EXPECT_CALL(stream_requester_,
353 page_request_id, 355 DevicesEnumerated(render_frame_id, page_request_id, label, _))
354 label, 356 .Times(1)
355 _)) 357 .WillOnce(DoAll(ExitMessageLoop(task_runner_, run_loop.QuitClosure()),
356 .Times(1).WillOnce( 358 SaveArg<3>(&devices)));
357 DoAll(ExitMessageLoop(message_loop_, run_loop.QuitClosure()),
358 SaveArg<3>(&devices)));
359 run_loop.Run(); 359 run_loop.Run();
360 Mock::VerifyAndClearExpectations(&stream_requester_); 360 Mock::VerifyAndClearExpectations(&stream_requester_);
361 media_stream_manager_->CancelRequest(label); 361 media_stream_manager_->CancelRequest(label);
362 } 362 }
363 ASSERT_FALSE(devices.empty()); 363 ASSERT_FALSE(devices.empty());
364 ASSERT_EQ(StreamDeviceInfo::kNoId, devices[0].session_id); 364 ASSERT_EQ(StreamDeviceInfo::kNoId, devices[0].session_id);
365 365
366 // Open the first device. 366 // Open the first device.
367 { 367 {
368 base::RunLoop run_loop; 368 base::RunLoop run_loop;
369 StreamDeviceInfo opened_device; 369 StreamDeviceInfo opened_device;
370 media_stream_manager_->OpenDevice( 370 media_stream_manager_->OpenDevice(
371 &stream_requester_, 371 &stream_requester_,
372 render_process_id, 372 render_process_id,
373 render_frame_id, 373 render_frame_id,
374 browser_context_.GetResourceContext()->GetMediaDeviceIDSalt(), 374 browser_context_.GetResourceContext()->GetMediaDeviceIDSalt(),
375 page_request_id, 375 page_request_id,
376 devices[0].device.id, 376 devices[0].device.id,
377 MEDIA_DEVICE_VIDEO_CAPTURE, 377 MEDIA_DEVICE_VIDEO_CAPTURE,
378 security_origin); 378 security_origin);
379 EXPECT_CALL(stream_requester_, DeviceOpened(render_frame_id, 379 EXPECT_CALL(stream_requester_,
380 page_request_id, 380 DeviceOpened(render_frame_id, page_request_id, _, _))
381 _, 381 .Times(1)
382 _)) 382 .WillOnce(DoAll(ExitMessageLoop(task_runner_, run_loop.QuitClosure()),
383 .Times(1).WillOnce( 383 SaveArg<2>(&opened_device_label_),
384 DoAll(ExitMessageLoop(message_loop_, run_loop.QuitClosure()), 384 SaveArg<3>(&opened_device)));
385 SaveArg<2>(&opened_device_label_),
386 SaveArg<3>(&opened_device)));
387 run_loop.Run(); 385 run_loop.Run();
388 Mock::VerifyAndClearExpectations(&stream_requester_); 386 Mock::VerifyAndClearExpectations(&stream_requester_);
389 ASSERT_NE(StreamDeviceInfo::kNoId, opened_device.session_id); 387 ASSERT_NE(StreamDeviceInfo::kNoId, opened_device.session_id);
390 opened_session_id_ = opened_device.session_id; 388 opened_session_id_ = opened_device.session_id;
391 } 389 }
392 } 390 }
393 391
394 void CloseSession() { 392 void CloseSession() {
395 if (opened_device_label_.empty()) 393 if (opened_device_label_.empty())
396 return; 394 return;
397 media_stream_manager_->CancelRequest(opened_device_label_); 395 media_stream_manager_->CancelRequest(opened_device_label_);
398 opened_device_label_.clear(); 396 opened_device_label_.clear();
399 opened_session_id_ = kInvalidMediaCaptureSessionId; 397 opened_session_id_ = kInvalidMediaCaptureSessionId;
400 } 398 }
401 399
402 protected: 400 protected:
403 void StartCapture() { 401 void StartCapture() {
404 EXPECT_CALL(*host_.get(), OnNewBufferCreated(kDeviceId, _, _, _)) 402 EXPECT_CALL(*host_.get(), OnNewBufferCreated(kDeviceId, _, _, _))
405 .Times(AnyNumber()) 403 .Times(AnyNumber())
406 .WillRepeatedly(Return()); 404 .WillRepeatedly(Return());
407 405
408 base::RunLoop run_loop; 406 base::RunLoop run_loop;
409 EXPECT_CALL(*host_.get(), OnBufferFilled(kDeviceId, _, _, _, _, _)) 407 EXPECT_CALL(*host_.get(), OnBufferFilled(kDeviceId, _, _, _, _, _))
410 .Times(AnyNumber()) 408 .Times(AnyNumber())
411 .WillOnce(ExitMessageLoop(message_loop_, run_loop.QuitClosure())); 409 .WillOnce(ExitMessageLoop(task_runner_, run_loop.QuitClosure()));
412 410
413 media::VideoCaptureParams params; 411 media::VideoCaptureParams params;
414 params.requested_format = media::VideoCaptureFormat( 412 params.requested_format = media::VideoCaptureFormat(
415 gfx::Size(352, 288), 30, media::PIXEL_FORMAT_I420); 413 gfx::Size(352, 288), 30, media::PIXEL_FORMAT_I420);
416 host_->OnStartCapture(kDeviceId, opened_session_id_, params); 414 host_->OnStartCapture(kDeviceId, opened_session_id_, params);
417 run_loop.Run(); 415 run_loop.Run();
418 } 416 }
419 417
420 void StartStopCapture() { 418 void StartStopCapture() {
421 // Quickly start and then stop capture, without giving much chance for 419 // Quickly start and then stop capture, without giving much chance for
(...skipping 28 matching lines...) Expand all
450 host_->SetDumpVideo(true); 448 host_->SetDumpVideo(true);
451 host_->OnStartCapture(kDeviceId, opened_session_id_, params); 449 host_->OnStartCapture(kDeviceId, opened_session_id_, params);
452 run_loop.Run(); 450 run_loop.Run();
453 } 451 }
454 #endif 452 #endif
455 453
456 void StopCapture() { 454 void StopCapture() {
457 base::RunLoop run_loop; 455 base::RunLoop run_loop;
458 EXPECT_CALL(*host_.get(), 456 EXPECT_CALL(*host_.get(),
459 OnStateChanged(kDeviceId, VIDEO_CAPTURE_STATE_STOPPED)) 457 OnStateChanged(kDeviceId, VIDEO_CAPTURE_STATE_STOPPED))
460 .WillOnce(ExitMessageLoop(message_loop_, run_loop.QuitClosure())); 458 .WillOnce(ExitMessageLoop(task_runner_, run_loop.QuitClosure()));
461 459
462 host_->OnStopCapture(kDeviceId); 460 host_->OnStopCapture(kDeviceId);
463 host_->SetReturnReceivedDibs(true); 461 host_->SetReturnReceivedDibs(true);
464 host_->ReturnReceivedDibs(kDeviceId); 462 host_->ReturnReceivedDibs(kDeviceId);
465 463
466 run_loop.Run(); 464 run_loop.Run();
467 465
468 host_->SetReturnReceivedDibs(false); 466 host_->SetReturnReceivedDibs(false);
469 // Expect the VideoCaptureDevice has been stopped 467 // Expect the VideoCaptureDevice has been stopped
470 EXPECT_EQ(0u, host_->entries_.size()); 468 EXPECT_EQ(0u, host_->entries_.size());
471 } 469 }
472 470
473 void NotifyPacketReady() { 471 void NotifyPacketReady() {
474 base::RunLoop run_loop; 472 base::RunLoop run_loop;
475 EXPECT_CALL(*host_.get(), OnBufferFilled(kDeviceId, _, _, _, _, _)) 473 EXPECT_CALL(*host_.get(), OnBufferFilled(kDeviceId, _, _, _, _, _))
476 .Times(AnyNumber()) 474 .Times(AnyNumber())
477 .WillOnce(ExitMessageLoop(message_loop_, run_loop.QuitClosure())) 475 .WillOnce(ExitMessageLoop(task_runner_, run_loop.QuitClosure()))
478 .RetiresOnSaturation(); 476 .RetiresOnSaturation();
479 run_loop.Run(); 477 run_loop.Run();
480 } 478 }
481 479
482 void ReturnReceivedPackets() { 480 void ReturnReceivedPackets() {
483 host_->ReturnReceivedDibs(kDeviceId); 481 host_->ReturnReceivedDibs(kDeviceId);
484 } 482 }
485 483
486 void SimulateError() { 484 void SimulateError() {
487 // Expect a change state to error state sent through IPC. 485 // Expect a change state to error state sent through IPC.
(...skipping 17 matching lines...) Expand all
505 503
506 scoped_refptr<MockVideoCaptureHost> host_; 504 scoped_refptr<MockVideoCaptureHost> host_;
507 505
508 private: 506 private:
509 StrictMock<MockMediaStreamRequester> stream_requester_; 507 StrictMock<MockMediaStreamRequester> stream_requester_;
510 scoped_ptr<media::AudioManager> audio_manager_; 508 scoped_ptr<media::AudioManager> audio_manager_;
511 scoped_ptr<MediaStreamManager> media_stream_manager_; 509 scoped_ptr<MediaStreamManager> media_stream_manager_;
512 content::TestBrowserThreadBundle thread_bundle_; 510 content::TestBrowserThreadBundle thread_bundle_;
513 content::TestBrowserContext browser_context_; 511 content::TestBrowserContext browser_context_;
514 content::TestContentBrowserClient browser_client_; 512 content::TestContentBrowserClient browser_client_;
515 scoped_refptr<base::MessageLoopProxy> message_loop_; 513 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
516 int opened_session_id_; 514 int opened_session_id_;
517 std::string opened_device_label_; 515 std::string opened_device_label_;
518 516
519 DISALLOW_COPY_AND_ASSIGN(VideoCaptureHostTest); 517 DISALLOW_COPY_AND_ASSIGN(VideoCaptureHostTest);
520 }; 518 };
521 519
522 TEST_F(VideoCaptureHostTest, CloseSessionWithoutStopping) { 520 TEST_F(VideoCaptureHostTest, CloseSessionWithoutStopping) {
523 StartCapture(); 521 StartCapture();
524 522
525 // When the session is closed via the stream without stopping capture, the 523 // When the session is closed via the stream without stopping capture, the
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 #ifdef DUMP_VIDEO 558 #ifdef DUMP_VIDEO
561 TEST_F(VideoCaptureHostTest, CaptureAndDumpVideoVga) { 559 TEST_F(VideoCaptureHostTest, CaptureAndDumpVideoVga) {
562 CaptureAndDumpVideo(640, 480, 30); 560 CaptureAndDumpVideo(640, 480, 30);
563 } 561 }
564 TEST_F(VideoCaptureHostTest, CaptureAndDump720P) { 562 TEST_F(VideoCaptureHostTest, CaptureAndDump720P) {
565 CaptureAndDumpVideo(1280, 720, 30); 563 CaptureAndDumpVideo(1280, 720, 30);
566 } 564 }
567 #endif 565 #endif
568 566
569 } // namespace content 567 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698