| Index: content/renderer/media/user_media_client_impl_unittest.cc
|
| diff --git a/content/renderer/media/user_media_client_impl_unittest.cc b/content/renderer/media/user_media_client_impl_unittest.cc
|
| index 0e36428281baf2afcc6bb7bb856bddd672121f4a..99e11b1188ee14088ef5534cd63bd9024f04e742 100644
|
| --- a/content/renderer/media/user_media_client_impl_unittest.cc
|
| +++ b/content/renderer/media/user_media_client_impl_unittest.cc
|
| @@ -8,10 +8,13 @@
|
|
|
| #include <memory>
|
| #include <utility>
|
| +#include <vector>
|
|
|
| #include "base/message_loop/message_loop.h"
|
| +#include "base/run_loop.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "content/child/child_process.h"
|
| +#include "content/common/media/media_devices.h"
|
| #include "content/renderer/media/media_stream.h"
|
| #include "content/renderer/media/media_stream_audio_source.h"
|
| #include "content/renderer/media/media_stream_track.h"
|
| @@ -19,6 +22,7 @@
|
| #include "content/renderer/media/mock_media_stream_dispatcher.h"
|
| #include "content/renderer/media/mock_media_stream_video_source.h"
|
| #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory.h"
|
| +#include "mojo/public/cpp/bindings/binding.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "third_party/WebKit/public/platform/WebMediaDeviceInfo.h"
|
| #include "third_party/WebKit/public/platform/WebMediaStream.h"
|
| @@ -43,6 +47,43 @@ class MockMediaStreamVideoCapturerSource : public MockMediaStreamVideoSource {
|
| }
|
| };
|
|
|
| +class MockMediaDevicesDispatcherHost
|
| + : public ::mojom::MediaDevicesDispatcherHost {
|
| + public:
|
| + MockMediaDevicesDispatcherHost() : binding_(this) {}
|
| + void EnumerateDevices(bool request_audio_input,
|
| + bool request_video_input,
|
| + bool request_audio_output,
|
| + const url::Origin& security_origin,
|
| + const EnumerateDevicesCallback& callback) override {
|
| + std::vector<std::vector<MediaDeviceInfo>> result(NUM_MEDIA_DEVICE_TYPES);
|
| + if (request_audio_input) {
|
| + result[MEDIA_DEVICE_TYPE_AUDIO_INPUT].push_back(MediaDeviceInfo(
|
| + "fake_audio_input 1", "Fake Audio Input 1", "fake_group 1"));
|
| + result[MEDIA_DEVICE_TYPE_AUDIO_INPUT].push_back(MediaDeviceInfo(
|
| + "fake_audio_input 2", "Fake Audio Input 2", "fake_group 2"));
|
| + }
|
| + if (request_video_input) {
|
| + result[MEDIA_DEVICE_TYPE_VIDEO_INPUT].push_back(
|
| + MediaDeviceInfo("fake_video_input 1", "Fake Video Input 1", ""));
|
| + result[MEDIA_DEVICE_TYPE_VIDEO_INPUT].push_back(
|
| + MediaDeviceInfo("fake_video_input 2", "Fake Video Input 2", ""));
|
| + }
|
| + if (request_audio_output) {
|
| + result[MEDIA_DEVICE_TYPE_AUDIO_OUTPUT].push_back(MediaDeviceInfo(
|
| + "fake_audio_output 1", "Fake Audio Input 1", "fake_group 1"));
|
| + }
|
| + callback.Run(result);
|
| + }
|
| +
|
| + mojom::MediaDevicesDispatcherHostPtr CreateInterfacePtrAndBind() {
|
| + return binding_.CreateInterfacePtrAndBind();
|
| + }
|
| +
|
| + private:
|
| + mojo::Binding<mojom::MediaDevicesDispatcherHost> binding_;
|
| +};
|
| +
|
| class UserMediaClientImplUnderTest : public UserMediaClientImpl {
|
| public:
|
| enum RequestState {
|
| @@ -220,6 +261,8 @@ class UserMediaClientImplTest : public ::testing::Test {
|
| used_media_impl_.reset(new UserMediaClientImplUnderTest(
|
| dependency_factory_.get(),
|
| std::unique_ptr<MediaStreamDispatcher>(ms_dispatcher_)));
|
| + used_media_impl_->SetMediaDevicesDispatcherForTesting(
|
| + media_devices_dispatcher_.CreateInterfacePtrAndBind());
|
| }
|
|
|
| void TearDown() override {
|
| @@ -267,37 +310,6 @@ class UserMediaClientImplTest : public ::testing::Test {
|
| ms_dispatcher_->video_array());
|
| }
|
|
|
| - void FakeMediaStreamDispatcherRequestMediaDevicesComplete() {
|
| - // There may be repeated replies due to device or configuration changes.
|
| - used_media_impl_->OnDevicesEnumerated(
|
| - ms_dispatcher_->audio_input_request_id(),
|
| - ms_dispatcher_->audio_input_array());
|
| - used_media_impl_->OnDevicesEnumerated(
|
| - ms_dispatcher_->audio_input_request_id(),
|
| - ms_dispatcher_->audio_input_array());
|
| - used_media_impl_->OnDevicesEnumerated(
|
| - ms_dispatcher_->audio_output_request_id(),
|
| - ms_dispatcher_->audio_output_array());
|
| - used_media_impl_->OnDevicesEnumerated(
|
| - ms_dispatcher_->audio_output_request_id(),
|
| - ms_dispatcher_->audio_output_array());
|
| - used_media_impl_->OnDevicesEnumerated(
|
| - ms_dispatcher_->video_request_id(),
|
| - ms_dispatcher_->video_array());
|
| - used_media_impl_->OnDevicesEnumerated(
|
| - ms_dispatcher_->video_request_id(),
|
| - ms_dispatcher_->video_array());
|
| - }
|
| -
|
| - void FakeMediaStreamDispatcherRequestSourcesComplete() {
|
| - used_media_impl_->OnDevicesEnumerated(
|
| - ms_dispatcher_->audio_input_request_id(),
|
| - ms_dispatcher_->audio_input_array());
|
| - used_media_impl_->OnDevicesEnumerated(
|
| - ms_dispatcher_->video_request_id(),
|
| - ms_dispatcher_->video_array());
|
| - }
|
| -
|
| void StartMockedVideoSource() {
|
| MockMediaStreamVideoCapturerSource* video_source =
|
| used_media_impl_->last_created_video_source();
|
| @@ -330,6 +342,7 @@ class UserMediaClientImplTest : public ::testing::Test {
|
| base::MessageLoop message_loop_;
|
| std::unique_ptr<ChildProcess> child_process_;
|
| MockMediaStreamDispatcher* ms_dispatcher_; // Owned by |used_media_impl_|.
|
| + MockMediaDevicesDispatcherHost media_devices_dispatcher_;
|
| std::unique_ptr<UserMediaClientImplUnderTest> used_media_impl_;
|
| std::unique_ptr<MockPeerConnectionDependencyFactory> dependency_factory_;
|
| };
|
| @@ -564,7 +577,7 @@ TEST_F(UserMediaClientImplTest, StopTrackAfterReload) {
|
|
|
| TEST_F(UserMediaClientImplTest, EnumerateMediaDevices) {
|
| used_media_impl_->RequestMediaDevices();
|
| - FakeMediaStreamDispatcherRequestMediaDevicesComplete();
|
| + base::RunLoop().RunUntilIdle();
|
|
|
| EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_SUCCEEDED,
|
| used_media_impl_->request_state());
|
| @@ -619,7 +632,7 @@ TEST_F(UserMediaClientImplTest, EnumerateMediaDevices) {
|
|
|
| TEST_F(UserMediaClientImplTest, EnumerateSources) {
|
| used_media_impl_->RequestSources();
|
| - FakeMediaStreamDispatcherRequestSourcesComplete();
|
| + base::RunLoop().RunUntilIdle();
|
|
|
| EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_SUCCEEDED,
|
| used_media_impl_->request_state());
|
| @@ -643,14 +656,14 @@ TEST_F(UserMediaClientImplTest, EnumerateSources) {
|
| EXPECT_FALSE(source->id().isEmpty());
|
| EXPECT_EQ(blink::WebSourceInfo::SourceKindVideo, source->kind());
|
| EXPECT_FALSE(source->label().isEmpty());
|
| - EXPECT_EQ(blink::WebSourceInfo::VideoFacingModeUser, source->facing());
|
| + EXPECT_EQ(blink::WebSourceInfo::VideoFacingModeNone, source->facing());
|
|
|
| // Video input device environment facing.
|
| source = &used_media_impl_->last_sources()[3];
|
| EXPECT_FALSE(source->id().isEmpty());
|
| EXPECT_EQ(blink::WebSourceInfo::SourceKindVideo, source->kind());
|
| EXPECT_FALSE(source->label().isEmpty());
|
| - EXPECT_EQ(blink::WebSourceInfo::VideoFacingModeEnvironment, source->facing());
|
| + EXPECT_EQ(blink::WebSourceInfo::VideoFacingModeNone, source->facing());
|
| }
|
|
|
| TEST_F(UserMediaClientImplTest, RenderToAssociatedSinkConstraint) {
|
|
|