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

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

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

Powered by Google App Engine
This is Rietveld 408576698