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

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

Issue 2715513008: Make FakeVideoCaptureDeviceFactory configurable to arbitrary fake device configurations (Closed)
Patch Set: emircan@ suggestions Created 3 years, 9 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 "content/browser/renderer_host/media/media_devices_manager.h" 5 #include "content/browser/renderer_host/media/media_devices_manager.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(0); 342 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(0);
343 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) 343 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors())
344 .Times(2); 344 .Times(2);
345 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(0); 345 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(0);
346 EXPECT_CALL(*this, MockCallback(_)) 346 EXPECT_CALL(*this, MockCallback(_))
347 .Times(2 * kNumCalls) 347 .Times(2 * kNumCalls)
348 .WillRepeatedly(SaveArg<0>(&enumeration)); 348 .WillRepeatedly(SaveArg<0>(&enumeration));
349 349
350 // Simulate device change 350 // Simulate device change
351 size_t num_video_input_devices = 5; 351 size_t num_video_input_devices = 5;
352 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); 352 video_capture_device_factory_->SetToDefaultDevicesConfig(
353 num_video_input_devices);
353 EnableCache(MEDIA_DEVICE_TYPE_VIDEO_INPUT); 354 EnableCache(MEDIA_DEVICE_TYPE_VIDEO_INPUT);
354 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; 355 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate;
355 devices_to_enumerate[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = true; 356 devices_to_enumerate[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = true;
356 for (int i = 0; i < kNumCalls; i++) { 357 for (int i = 0; i < kNumCalls; i++) {
357 base::RunLoop run_loop; 358 base::RunLoop run_loop;
358 media_devices_manager_->EnumerateDevices( 359 media_devices_manager_->EnumerateDevices(
359 devices_to_enumerate, 360 devices_to_enumerate,
360 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, 361 base::Bind(&MediaDevicesManagerTest::EnumerateCallback,
361 base::Unretained(this), &run_loop)); 362 base::Unretained(this), &run_loop));
362 run_loop.Run(); 363 run_loop.Run();
363 EXPECT_EQ(num_video_input_devices, 364 EXPECT_EQ(num_video_input_devices,
364 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size()); 365 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size());
365 } 366 }
366 367
367 // Simulate device change 368 // Simulate device change
368 num_video_input_devices = 9; 369 num_video_input_devices = 9;
369 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); 370 video_capture_device_factory_->SetToDefaultDevicesConfig(
371 num_video_input_devices);
370 media_devices_manager_->OnDevicesChanged( 372 media_devices_manager_->OnDevicesChanged(
371 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); 373 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE);
372 374
373 for (int i = 0; i < kNumCalls; i++) { 375 for (int i = 0; i < kNumCalls; i++) {
374 base::RunLoop run_loop; 376 base::RunLoop run_loop;
375 media_devices_manager_->EnumerateDevices( 377 media_devices_manager_->EnumerateDevices(
376 devices_to_enumerate, 378 devices_to_enumerate,
377 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, 379 base::Bind(&MediaDevicesManagerTest::EnumerateCallback,
378 base::Unretained(this), &run_loop)); 380 base::Unretained(this), &run_loop));
379 run_loop.Run(); 381 run_loop.Run();
380 EXPECT_EQ(num_video_input_devices, 382 EXPECT_EQ(num_video_input_devices,
381 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size()); 383 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size());
382 } 384 }
383 } 385 }
384 386
385 TEST_F(MediaDevicesManagerTest, EnumerateCacheAllWithDeviceChanges) { 387 TEST_F(MediaDevicesManagerTest, EnumerateCacheAllWithDeviceChanges) {
386 MediaDeviceEnumeration enumeration; 388 MediaDeviceEnumeration enumeration;
387 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(2); 389 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(2);
388 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) 390 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors())
389 .Times(2); 391 .Times(2);
390 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(2); 392 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(2);
391 EXPECT_CALL(*this, MockCallback(_)) 393 EXPECT_CALL(*this, MockCallback(_))
392 .Times(2 * kNumCalls) 394 .Times(2 * kNumCalls)
393 .WillRepeatedly(SaveArg<0>(&enumeration)); 395 .WillRepeatedly(SaveArg<0>(&enumeration));
394 396
395 size_t num_audio_input_devices = 5; 397 size_t num_audio_input_devices = 5;
396 size_t num_video_input_devices = 4; 398 size_t num_video_input_devices = 4;
397 size_t num_audio_output_devices = 3; 399 size_t num_audio_output_devices = 3;
398 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); 400 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices);
399 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); 401 video_capture_device_factory_->SetToDefaultDevicesConfig(
402 num_video_input_devices);
400 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); 403 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices);
401 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_INPUT); 404 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_INPUT);
402 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT); 405 EnableCache(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT);
403 EnableCache(MEDIA_DEVICE_TYPE_VIDEO_INPUT); 406 EnableCache(MEDIA_DEVICE_TYPE_VIDEO_INPUT);
404 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; 407 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate;
405 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_INPUT] = true; 408 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_INPUT] = true;
406 devices_to_enumerate[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = true; 409 devices_to_enumerate[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = true;
407 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = true; 410 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = true;
408 for (int i = 0; i < kNumCalls; i++) { 411 for (int i = 0; i < kNumCalls; i++) {
409 base::RunLoop run_loop; 412 base::RunLoop run_loop;
410 media_devices_manager_->EnumerateDevices( 413 media_devices_manager_->EnumerateDevices(
411 devices_to_enumerate, 414 devices_to_enumerate,
412 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, 415 base::Bind(&MediaDevicesManagerTest::EnumerateCallback,
413 base::Unretained(this), &run_loop)); 416 base::Unretained(this), &run_loop));
414 run_loop.Run(); 417 run_loop.Run();
415 EXPECT_EQ(num_audio_input_devices, 418 EXPECT_EQ(num_audio_input_devices,
416 enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT].size()); 419 enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT].size());
417 EXPECT_EQ(num_video_input_devices, 420 EXPECT_EQ(num_video_input_devices,
418 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size()); 421 enumeration[MEDIA_DEVICE_TYPE_VIDEO_INPUT].size());
419 EXPECT_EQ(num_audio_output_devices, 422 EXPECT_EQ(num_audio_output_devices,
420 enumeration[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT].size()); 423 enumeration[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT].size());
421 } 424 }
422 425
423 // Simulate device changes 426 // Simulate device changes
424 num_audio_input_devices = 3; 427 num_audio_input_devices = 3;
425 num_video_input_devices = 2; 428 num_video_input_devices = 2;
426 num_audio_output_devices = 4; 429 num_audio_output_devices = 4;
427 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); 430 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices);
428 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); 431 video_capture_device_factory_->SetToDefaultDevicesConfig(
432 num_video_input_devices);
429 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); 433 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices);
430 media_devices_manager_->OnDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO); 434 media_devices_manager_->OnDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO);
431 media_devices_manager_->OnDevicesChanged( 435 media_devices_manager_->OnDevicesChanged(
432 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); 436 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE);
433 437
434 for (int i = 0; i < kNumCalls; i++) { 438 for (int i = 0; i < kNumCalls; i++) {
435 base::RunLoop run_loop; 439 base::RunLoop run_loop;
436 media_devices_manager_->EnumerateDevices( 440 media_devices_manager_->EnumerateDevices(
437 devices_to_enumerate, 441 devices_to_enumerate,
438 base::Bind(&MediaDevicesManagerTest::EnumerateCallback, 442 base::Bind(&MediaDevicesManagerTest::EnumerateCallback,
(...skipping 11 matching lines...) Expand all
450 TEST_F(MediaDevicesManagerTest, SubscribeDeviceChanges) { 454 TEST_F(MediaDevicesManagerTest, SubscribeDeviceChanges) {
451 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(3); 455 EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(3);
452 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors()) 456 EXPECT_CALL(*video_capture_device_factory_, MockGetDeviceDescriptors())
453 .Times(3); 457 .Times(3);
454 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(3); 458 EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(3);
455 459
456 size_t num_audio_input_devices = 5; 460 size_t num_audio_input_devices = 5;
457 size_t num_video_input_devices = 4; 461 size_t num_video_input_devices = 4;
458 size_t num_audio_output_devices = 3; 462 size_t num_audio_output_devices = 3;
459 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); 463 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices);
460 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); 464 video_capture_device_factory_->SetToDefaultDevicesConfig(
465 num_video_input_devices);
461 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); 466 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices);
462 467
463 // Run an enumeration to make sure |media_devices_manager_| has the new 468 // Run an enumeration to make sure |media_devices_manager_| has the new
464 // configuration. 469 // configuration.
465 EXPECT_CALL(*this, MockCallback(_)); 470 EXPECT_CALL(*this, MockCallback(_));
466 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; 471 MediaDevicesManager::BoolDeviceTypes devices_to_enumerate;
467 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_INPUT] = true; 472 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_INPUT] = true;
468 devices_to_enumerate[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = true; 473 devices_to_enumerate[MEDIA_DEVICE_TYPE_VIDEO_INPUT] = true;
469 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = true; 474 devices_to_enumerate[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT] = true;
470 base::RunLoop run_loop; 475 base::RunLoop run_loop;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 EXPECT_CALL(subscriber_all, 527 EXPECT_CALL(subscriber_all,
523 OnDevicesChanged(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT, _)) 528 OnDevicesChanged(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT, _))
524 .Times(2) 529 .Times(2)
525 .WillRepeatedly(SaveArg<1>(&notification_all_audio_output)); 530 .WillRepeatedly(SaveArg<1>(&notification_all_audio_output));
526 531
527 // Simulate device changes. 532 // Simulate device changes.
528 num_audio_input_devices = 3; 533 num_audio_input_devices = 3;
529 num_video_input_devices = 2; 534 num_video_input_devices = 2;
530 num_audio_output_devices = 4; 535 num_audio_output_devices = 4;
531 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); 536 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices);
532 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); 537 video_capture_device_factory_->SetToDefaultDevicesConfig(
538 num_video_input_devices);
533 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); 539 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices);
534 media_devices_manager_->OnDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO); 540 media_devices_manager_->OnDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO);
535 media_devices_manager_->OnDevicesChanged( 541 media_devices_manager_->OnDevicesChanged(
536 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); 542 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE);
537 base::RunLoop().RunUntilIdle(); 543 base::RunLoop().RunUntilIdle();
538 EXPECT_EQ(num_audio_input_devices, notification_audio_input.size()); 544 EXPECT_EQ(num_audio_input_devices, notification_audio_input.size());
539 EXPECT_EQ(num_video_input_devices, notification_video_input.size()); 545 EXPECT_EQ(num_video_input_devices, notification_video_input.size());
540 EXPECT_EQ(num_audio_output_devices, notification_audio_output.size()); 546 EXPECT_EQ(num_audio_output_devices, notification_audio_output.size());
541 EXPECT_EQ(num_audio_input_devices, notification_all_audio_input.size()); 547 EXPECT_EQ(num_audio_input_devices, notification_all_audio_input.size());
542 EXPECT_EQ(num_video_input_devices, notification_all_video_input.size()); 548 EXPECT_EQ(num_video_input_devices, notification_all_video_input.size());
543 EXPECT_EQ(num_audio_output_devices, notification_all_audio_output.size()); 549 EXPECT_EQ(num_audio_output_devices, notification_all_audio_output.size());
544 550
545 media_devices_manager_->UnsubscribeDeviceChangeNotifications( 551 media_devices_manager_->UnsubscribeDeviceChangeNotifications(
546 MEDIA_DEVICE_TYPE_AUDIO_INPUT, &subscriber_audio_input); 552 MEDIA_DEVICE_TYPE_AUDIO_INPUT, &subscriber_audio_input);
547 media_devices_manager_->UnsubscribeDeviceChangeNotifications( 553 media_devices_manager_->UnsubscribeDeviceChangeNotifications(
548 MEDIA_DEVICE_TYPE_VIDEO_INPUT, &subscriber_video_input); 554 MEDIA_DEVICE_TYPE_VIDEO_INPUT, &subscriber_video_input);
549 media_devices_manager_->UnsubscribeDeviceChangeNotifications( 555 media_devices_manager_->UnsubscribeDeviceChangeNotifications(
550 MEDIA_DEVICE_TYPE_AUDIO_OUTPUT, &subscriber_audio_output); 556 MEDIA_DEVICE_TYPE_AUDIO_OUTPUT, &subscriber_audio_output);
551 557
552 // Simulate further device changes. Only the objects still subscribed to the 558 // Simulate further device changes. Only the objects still subscribed to the
553 // device-change events will receive notifications. 559 // device-change events will receive notifications.
554 num_audio_input_devices = 2; 560 num_audio_input_devices = 2;
555 num_video_input_devices = 1; 561 num_video_input_devices = 1;
556 num_audio_output_devices = 3; 562 num_audio_output_devices = 3;
557 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices); 563 audio_manager_->SetNumAudioInputDevices(num_audio_input_devices);
558 video_capture_device_factory_->set_number_of_devices(num_video_input_devices); 564 video_capture_device_factory_->SetToDefaultDevicesConfig(
565 num_video_input_devices);
559 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices); 566 audio_manager_->SetNumAudioOutputDevices(num_audio_output_devices);
560 media_devices_manager_->OnDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO); 567 media_devices_manager_->OnDevicesChanged(base::SystemMonitor::DEVTYPE_AUDIO);
561 media_devices_manager_->OnDevicesChanged( 568 media_devices_manager_->OnDevicesChanged(
562 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE); 569 base::SystemMonitor::DEVTYPE_VIDEO_CAPTURE);
563 base::RunLoop().RunUntilIdle(); 570 base::RunLoop().RunUntilIdle();
564 EXPECT_EQ(num_audio_input_devices, notification_all_audio_input.size()); 571 EXPECT_EQ(num_audio_input_devices, notification_all_audio_input.size());
565 EXPECT_EQ(num_video_input_devices, notification_all_video_input.size()); 572 EXPECT_EQ(num_video_input_devices, notification_all_video_input.size());
566 EXPECT_EQ(num_audio_output_devices, notification_all_audio_output.size()); 573 EXPECT_EQ(num_audio_output_devices, notification_all_audio_output.size());
567 } 574 }
568 575
569 } // namespace content 576 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698