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

Unified Diff: content/browser/renderer_host/media/video_capture_manager_unittest.cc

Issue 2350693002: Remove device enumeration, caching and monitoring from MediaStreamManager. (Closed)
Patch Set: latest hta@ comments Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/renderer_host/media/video_capture_manager.cc ('k') | content/common/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/media/video_capture_manager_unittest.cc
diff --git a/content/browser/renderer_host/media/video_capture_manager_unittest.cc b/content/browser/renderer_host/media/video_capture_manager_unittest.cc
index c2cc9c700711e08b7782fa6940280dc10261d7bc..82c3e71c179d0fe5973cc982696f2c325e9406c7 100644
--- a/content/browser/renderer_host/media/video_capture_manager_unittest.cc
+++ b/content/browser/renderer_host/media/video_capture_manager_unittest.cc
@@ -41,8 +41,6 @@ class MockMediaStreamProviderListener : public MediaStreamProviderListener {
MOCK_METHOD2(Opened, void(MediaStreamType, int));
MOCK_METHOD2(Closed, void(MediaStreamType, int));
- MOCK_METHOD2(DevicesEnumerated, void(MediaStreamType,
- const StreamDeviceInfoArray&));
MOCK_METHOD2(Aborted, void(MediaStreamType, int));
}; // class MockMediaStreamProviderListener
@@ -73,6 +71,18 @@ class VideoCaptureManagerTest : public testing::Test {
VideoCaptureManagerTest() : next_client_id_(1) {}
~VideoCaptureManagerTest() override {}
+ void HandleEnumerationResult(
+ const base::Closure& quit_closure,
+ const media::VideoCaptureDeviceDescriptors& descriptors) {
+ StreamDeviceInfoArray devices;
+ for (const auto& descriptor : descriptors) {
+ devices.emplace_back(MEDIA_DEVICE_VIDEO_CAPTURE,
+ descriptor.GetNameAndModel(), descriptor.device_id);
+ }
+ devices_ = std::move(devices);
+ quit_closure.Run();
+ }
+
protected:
void SetUp() override {
listener_.reset(new MockMediaStreamProviderListener());
@@ -91,6 +101,13 @@ class VideoCaptureManagerTest : public testing::Test {
video_capture_device_factory_->set_number_of_devices(kNumberOfFakeDevices);
vcm_->Register(listener_.get(), message_loop_->task_runner().get());
frame_observer_.reset(new MockFrameObserver());
+
+ base::RunLoop run_loop;
+ vcm_->EnumerateDevices(
+ base::Bind(&VideoCaptureManagerTest::HandleEnumerationResult,
+ base::Unretained(this), run_loop.QuitClosure()));
+ run_loop.Run();
+ ASSERT_GE(devices_.size(), 2u);
}
void TearDown() override {}
@@ -174,6 +191,7 @@ class VideoCaptureManagerTest : public testing::Test {
std::unique_ptr<BrowserThreadImpl> io_thread_;
std::unique_ptr<MockFrameObserver> frame_observer_;
media::FakeVideoCaptureDeviceFactory* video_capture_device_factory_;
+ StreamDeviceInfoArray devices_;
private:
DISALLOW_COPY_AND_ASSIGN(VideoCaptureManagerTest);
@@ -183,20 +201,11 @@ class VideoCaptureManagerTest : public testing::Test {
// Try to open, start, stop and close a device.
TEST_F(VideoCaptureManagerTest, CreateAndClose) {
- StreamDeviceInfoArray devices;
-
InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _));
EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _));
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
-
- // Wait to get device callback.
- base::RunLoop().RunUntilIdle();
-
- int video_session_id = vcm_->Open(devices.front());
+ int video_session_id = vcm_->Open(devices_.front());
VideoCaptureControllerID client_id = StartClient(video_session_id, true);
StopClient(client_id);
@@ -208,21 +217,11 @@ TEST_F(VideoCaptureManagerTest, CreateAndClose) {
}
TEST_F(VideoCaptureManagerTest, CreateAndCloseMultipleTimes) {
- StreamDeviceInfoArray devices;
-
InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
-
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
-
- // Wait to get device callback.
- base::RunLoop().RunUntilIdle();
-
for (int i = 1 ; i < 3 ; ++i) {
EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, i));
EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, i));
- int video_session_id = vcm_->Open(devices.front());
+ int video_session_id = vcm_->Open(devices_.front());
VideoCaptureControllerID client_id = StartClient(video_session_id, true);
StopClient(client_id);
@@ -236,20 +235,11 @@ TEST_F(VideoCaptureManagerTest, CreateAndCloseMultipleTimes) {
// Try to open, start, and abort a device.
TEST_F(VideoCaptureManagerTest, CreateAndAbort) {
- StreamDeviceInfoArray devices;
-
InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _));
EXPECT_CALL(*listener_, Aborted(MEDIA_DEVICE_VIDEO_CAPTURE, _));
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
-
- // Wait to get device callback.
- base::RunLoop().RunUntilIdle();
-
- int video_session_id = vcm_->Open(devices.front());
+ int video_session_id = vcm_->Open(devices_.front());
VideoCaptureControllerID client_id = StartClient(video_session_id, true);
// Wait for device opened.
@@ -265,24 +255,15 @@ TEST_F(VideoCaptureManagerTest, CreateAndAbort) {
// Open the same device twice.
TEST_F(VideoCaptureManagerTest, OpenTwice) {
- StreamDeviceInfoArray devices;
-
InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2);
EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2);
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
-
- // Wait to get device callback.
- base::RunLoop().RunUntilIdle();
-
- int video_session_id_first = vcm_->Open(devices.front());
+ int video_session_id_first = vcm_->Open(devices_.front());
// This should trigger an error callback with error code
// 'kDeviceAlreadyInUse'.
- int video_session_id_second = vcm_->Open(devices.front());
+ int video_session_id_second = vcm_->Open(devices_.front());
EXPECT_NE(video_session_id_first, video_session_id_second);
vcm_->Close(video_session_id_first);
@@ -295,32 +276,26 @@ TEST_F(VideoCaptureManagerTest, OpenTwice) {
// Connect and disconnect devices.
TEST_F(VideoCaptureManagerTest, ConnectAndDisconnectDevices) {
- StreamDeviceInfoArray devices;
int number_of_devices_keep =
video_capture_device_factory_->number_of_devices();
- InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
- base::RunLoop().RunUntilIdle();
- ASSERT_EQ(devices.size(), 2u);
-
// Simulate we remove 1 fake device.
video_capture_device_factory_->set_number_of_devices(1);
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
- base::RunLoop().RunUntilIdle();
- ASSERT_EQ(devices.size(), 1u);
+ base::RunLoop run_loop;
+ vcm_->EnumerateDevices(
+ base::Bind(&VideoCaptureManagerTest::HandleEnumerationResult,
+ base::Unretained(this), run_loop.QuitClosure()));
+ run_loop.Run();
+ ASSERT_EQ(devices_.size(), 1u);
// Simulate we add 2 fake devices.
video_capture_device_factory_->set_number_of_devices(3);
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
- base::RunLoop().RunUntilIdle();
- ASSERT_EQ(devices.size(), 3u);
+ base::RunLoop run_loop2;
+ vcm_->EnumerateDevices(
+ base::Bind(&VideoCaptureManagerTest::HandleEnumerationResult,
+ base::Unretained(this), run_loop2.QuitClosure()));
+ run_loop2.Run();
+ ASSERT_EQ(devices_.size(), 3u);
vcm_->Unregister();
video_capture_device_factory_->set_number_of_devices(number_of_devices_keep);
@@ -330,8 +305,6 @@ TEST_F(VideoCaptureManagerTest, ConnectAndDisconnectDevices) {
// formats. Then start the opened device. The capability list should stay the
// same. Finally stop the device and check that the capabilities stay unchanged.
TEST_F(VideoCaptureManagerTest, ManipulateDeviceAndCheckCapabilities) {
- StreamDeviceInfoArray devices;
-
// Before enumerating the devices, requesting formats should return false.
int video_session_id = 0;
media::VideoCaptureFormats supported_formats;
@@ -340,14 +313,8 @@ TEST_F(VideoCaptureManagerTest, ManipulateDeviceAndCheckCapabilities) {
vcm_->GetDeviceSupportedFormats(video_session_id, &supported_formats));
InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
- base::RunLoop().RunUntilIdle();
- ASSERT_GE(devices.size(), 2u);
-
EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _));
- video_session_id = vcm_->Open(devices.front());
+ video_session_id = vcm_->Open(devices_.front());
base::RunLoop().RunUntilIdle();
// Right after opening the device, we should see all its formats.
@@ -400,17 +367,9 @@ TEST_F(VideoCaptureManagerTest, ManipulateDeviceAndCheckCapabilities) {
// starting the device). Finally stop the device and check that the formats in
// use is an empty vector.
TEST_F(VideoCaptureManagerTest, StartDeviceAndGetDeviceFormatInUse) {
- StreamDeviceInfoArray devices;
-
InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
- base::RunLoop().RunUntilIdle();
- ASSERT_GE(devices.size(), 2u);
-
EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _));
- int video_session_id = vcm_->Open(devices.front());
+ int video_session_id = vcm_->Open(devices_.front());
base::RunLoop().RunUntilIdle();
// Right after opening the device, we should see no format in use.
@@ -446,20 +405,11 @@ TEST_F(VideoCaptureManagerTest, StartDeviceAndGetDeviceFormatInUse) {
// Open two different devices.
TEST_F(VideoCaptureManagerTest, OpenTwo) {
- StreamDeviceInfoArray devices;
-
InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2);
EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2);
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
-
- // Wait to get device callback.
- base::RunLoop().RunUntilIdle();
-
- StreamDeviceInfoArray::iterator it = devices.begin();
+ StreamDeviceInfoArray::iterator it = devices_.begin();
int video_session_id_first = vcm_->Open(*it);
++it;
@@ -475,20 +425,11 @@ TEST_F(VideoCaptureManagerTest, OpenTwo) {
// Try open a non-existing device.
TEST_F(VideoCaptureManagerTest, OpenNotExisting) {
- StreamDeviceInfoArray devices;
-
InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
EXPECT_CALL(*frame_observer_, OnError(_));
EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _));
EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _));
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
-
- // Wait to get device callback.
- base::RunLoop().RunUntilIdle();
-
MediaStreamType stream_type = MEDIA_DEVICE_VIDEO_CAPTURE;
std::string device_name("device_doesnt_exist");
std::string device_id("id_doesnt_exist");
@@ -517,23 +458,11 @@ TEST_F(VideoCaptureManagerTest, StartInvalidSession) {
// Open and start a device, close it before calling Stop.
TEST_F(VideoCaptureManagerTest, CloseWithoutStop) {
- StreamDeviceInfoArray devices;
- base::RunLoop run_loop;
-
InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(
- DoAll(SaveArg<1>(&devices),
- InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)));
EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _));
EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _));
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
-
- // Wait to get device callback.
- run_loop.Run();
- ASSERT_FALSE(devices.empty());
- int video_session_id = vcm_->Open(devices.front());
+ int video_session_id = vcm_->Open(devices_.front());
VideoCaptureControllerID client_id = StartClient(video_session_id, true);
@@ -549,20 +478,11 @@ TEST_F(VideoCaptureManagerTest, CloseWithoutStop) {
// Try to open, start, pause and resume a device.
TEST_F(VideoCaptureManagerTest, PauseAndResumeClient) {
- StreamDeviceInfoArray devices;
-
InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _));
EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _));
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
-
- // Wait to get device callback.
- base::RunLoop().RunUntilIdle();
-
- int video_session_id = vcm_->Open(devices.front());
+ int video_session_id = vcm_->Open(devices_.front());
VideoCaptureControllerID client_id = StartClient(video_session_id, true);
// Resume client a second time should cause no problem.
@@ -581,20 +501,11 @@ TEST_F(VideoCaptureManagerTest, PauseAndResumeClient) {
#if defined(OS_ANDROID)
// Try to open, start, pause and resume a device.
TEST_F(VideoCaptureManagerTest, PauseAndResumeDevice) {
- StreamDeviceInfoArray devices;
-
InSequence s;
- EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
- .WillOnce(SaveArg<1>(&devices));
EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _));
EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _));
- vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
-
- // Wait to get device callback.
- base::RunLoop().RunUntilIdle();
-
- int video_session_id = vcm_->Open(devices.front());
+ int video_session_id = vcm_->Open(devices_.front());
VideoCaptureControllerID client_id = StartClient(video_session_id, true);
// Release/ResumeDevices according to ApplicationStatus. Should cause no
« no previous file with comments | « content/browser/renderer_host/media/video_capture_manager.cc ('k') | content/common/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698