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

Unified Diff: content/renderer/media/user_media_client_impl_unittest.cc

Issue 2550493003: Add new device ID unit tests to UserMediaClientImpl. (Closed)
Patch Set: hta@'s comments Created 4 years 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
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 437f3c2c69916b9296a2dec716794d7e2e0f90b0..41f634f55f12dfe6a793f9d8ce59a85e0fae6600 100644
--- a/content/renderer/media/user_media_client_impl_unittest.cc
+++ b/content/renderer/media/user_media_client_impl_unittest.cc
@@ -36,6 +36,42 @@ using testing::_;
namespace content {
+blink::WebMediaConstraints CreateDefaultConstraints() {
+ MockConstraintFactory factory;
+ factory.AddAdvanced();
hta - Chromium 2016/12/05 15:54:10 Hm - I take it this is necessary to have the const
+ return factory.CreateWebMediaConstraints();
+}
+
+blink::WebMediaConstraints CreateDeviceConstraints(
+ const char* basic_exact_value,
+ const char* basic_ideal_value = nullptr,
+ const char* advanced_exact_value = nullptr,
+ const char* advanced_ideal_value = nullptr) {
+ MockConstraintFactory factory;
+ blink::WebMediaTrackConstraintSet basic;
+ if (basic_exact_value) {
+ factory.basic().deviceId.setExact(
+ blink::WebString::fromUTF8(basic_exact_value));
+ }
+ if (basic_ideal_value) {
+ blink::WebString value = blink::WebString::fromUTF8(basic_ideal_value);
+ factory.basic().deviceId.setIdeal(
+ blink::WebVector<blink::WebString>(&value, 1));
+ }
+
+ auto& advanced = factory.AddAdvanced();
+ if (advanced_exact_value) {
+ blink::WebString value = blink::WebString::fromUTF8(advanced_exact_value);
+ advanced.deviceId.setExact(value);
+ }
+ if (advanced_ideal_value) {
+ blink::WebString value = blink::WebString::fromUTF8(advanced_ideal_value);
+ advanced.deviceId.setIdeal(blink::WebVector<blink::WebString>(&value, 1));
+ }
+
+ return factory.CreateWebMediaConstraints();
+}
+
class MockMediaStreamVideoCapturerSource : public MockMediaStreamVideoSource {
public:
MockMediaStreamVideoCapturerSource(
@@ -48,6 +84,13 @@ class MockMediaStreamVideoCapturerSource : public MockMediaStreamVideoSource {
}
};
+const char kInvalidDeviceId[] = "invalid";
+const char kFakeAudioInputDeviceId1[] = "fake_audio_input 1";
+const char kFakeAudioInputDeviceId2[] = "fake_audio_input 2";
+const char kFakeVideoInputDeviceId1[] = "fake_video_input 1";
+const char kFakeVideoInputDeviceId2[] = "fake_video_input 2";
+const char kFakeAudioOutputDeviceId1[] = "fake_audio_output 1";
+
class MockMediaDevicesDispatcherHost
: public ::mojom::MediaDevicesDispatcherHost {
public:
@@ -60,19 +103,19 @@ class MockMediaDevicesDispatcherHost
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"));
+ kFakeAudioInputDeviceId1, "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"));
+ kFakeAudioInputDeviceId2, "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", ""));
+ MediaDeviceInfo(kFakeVideoInputDeviceId1, "Fake Video Input 1", ""));
result[MEDIA_DEVICE_TYPE_VIDEO_INPUT].push_back(
- MediaDeviceInfo("fake_video_input 2", "Fake Video Input 2", ""));
+ MediaDeviceInfo(kFakeVideoInputDeviceId2, "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"));
+ kFakeAudioOutputDeviceId1, "Fake Audio Input 1", "fake_group 1"));
}
callback.Run(result);
}
@@ -114,7 +157,9 @@ class UserMediaClientImplUnderTest : public UserMediaClientImpl {
}
void RequestUserMedia() {
- blink::WebUserMediaRequest user_media_request;
+ blink::WebUserMediaRequest user_media_request =
+ blink::WebUserMediaRequest::createForTesting(
+ CreateDefaultConstraints(), CreateDefaultConstraints());
RequestUserMedia(user_media_request);
}
@@ -246,10 +291,10 @@ class UserMediaClientImplTest : public ::testing::Test {
child_process_.reset(new ChildProcess());
dependency_factory_.reset(new MockPeerConnectionDependencyFactory());
ms_dispatcher_ = new MockMediaStreamDispatcher();
- used_media_impl_.reset(new UserMediaClientImplUnderTest(
+ user_media_client_impl_.reset(new UserMediaClientImplUnderTest(
dependency_factory_.get(),
std::unique_ptr<MediaStreamDispatcher>(ms_dispatcher_)));
- used_media_impl_->SetMediaDevicesDispatcherForTesting(
+ user_media_client_impl_->SetMediaDevicesDispatcherForTesting(
binding_user_media.CreateInterfacePtrAndBind());
base::WeakPtr<MediaDevicesEventDispatcher> event_dispatcher =
MediaDevicesEventDispatcher::GetForRenderFrame(nullptr);
@@ -259,23 +304,24 @@ class UserMediaClientImplTest : public ::testing::Test {
void TearDown() override {
MediaDevicesEventDispatcher::GetForRenderFrame(nullptr)->OnDestruct();
- used_media_impl_.reset();
+ user_media_client_impl_.reset();
blink::WebHeap::collectAllGarbageForTesting();
}
void LoadNewDocumentInFrame() {
- used_media_impl_->WillCommitProvisionalLoad();
+ user_media_client_impl_->WillCommitProvisionalLoad();
}
blink::WebMediaStream RequestLocalMediaStream() {
- used_media_impl_->RequestUserMedia();
+ user_media_client_impl_->RequestUserMedia();
FakeMediaStreamDispatcherRequestUserMediaComplete();
StartMockedVideoSource();
EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_SUCCEEDED,
- used_media_impl_->request_state());
+ user_media_client_impl_->request_state());
- blink::WebMediaStream desc = used_media_impl_->last_generated_stream();
+ blink::WebMediaStream desc =
+ user_media_client_impl_->last_generated_stream();
content::MediaStream* native_stream =
content::MediaStream::GetMediaStream(desc);
if (!native_stream) {
@@ -296,23 +342,22 @@ class UserMediaClientImplTest : public ::testing::Test {
void FakeMediaStreamDispatcherRequestUserMediaComplete() {
// Audio request ID is used as the shared request ID.
- used_media_impl_->OnStreamGenerated(
+ user_media_client_impl_->OnStreamGenerated(
ms_dispatcher_->audio_input_request_id(),
- ms_dispatcher_->stream_label(),
- ms_dispatcher_->audio_input_array(),
+ ms_dispatcher_->stream_label(), ms_dispatcher_->audio_input_array(),
ms_dispatcher_->video_array());
}
void StartMockedVideoSource() {
MockMediaStreamVideoCapturerSource* video_source =
- used_media_impl_->last_created_video_source();
+ user_media_client_impl_->last_created_video_source();
if (video_source->SourceHasAttemptedToStart())
video_source->StartMockedSource();
}
void FailToStartMockedVideoSource() {
MockMediaStreamVideoCapturerSource* video_source =
- used_media_impl_->last_created_video_source();
+ user_media_client_impl_->last_created_video_source();
if (video_source->SourceHasAttemptedToStart())
video_source->FailToStartMockedSource();
blink::WebHeap::collectGarbageForTesting();
@@ -324,13 +369,41 @@ class UserMediaClientImplTest : public ::testing::Test {
blink::WebUserMediaRequest request =
blink::WebUserMediaRequest::createForTesting(audio_constraints,
null_constraints);
- used_media_impl_->RequestUserMedia(request);
- bool result = used_media_impl_->UserMediaRequestHasAutomaticDeviceSelection(
+ user_media_client_impl_->RequestUserMedia(request);
+ bool result =
+ user_media_client_impl_->UserMediaRequestHasAutomaticDeviceSelection(
+ ms_dispatcher_->audio_input_request_id());
+ user_media_client_impl_->DeleteRequest(
ms_dispatcher_->audio_input_request_id());
- used_media_impl_->DeleteRequest(ms_dispatcher_->audio_input_request_id());
return result;
}
+ void TestValidRequestWithDeviceConstraints(
+ const blink::WebMediaConstraints& audio_constraints,
+ const blink::WebMediaConstraints& video_constraints,
+ const std::string& expected_audio_device_id,
+ const std::string& expected_video_device_id) {
+ DCHECK(!audio_constraints.isNull());
+ DCHECK(!video_constraints.isNull());
+ blink::WebUserMediaRequest request =
+ blink::WebUserMediaRequest::createForTesting(audio_constraints,
+ video_constraints);
+ user_media_client_impl_->RequestUserMedia(request);
+ FakeMediaStreamDispatcherRequestUserMediaComplete();
+ StartMockedVideoSource();
+
+ EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_SUCCEEDED,
+ user_media_client_impl_->request_state());
+ EXPECT_EQ(1U, ms_dispatcher_->audio_input_array().size());
+ EXPECT_EQ(1U, ms_dispatcher_->video_array().size());
+ // MockMediaStreamDispatcher appends the session ID to its internal device
+ // IDs.
+ EXPECT_EQ(std::string(expected_audio_device_id) + "0",
+ ms_dispatcher_->audio_input_array()[0].device.id);
+ EXPECT_EQ(std::string(expected_video_device_id) + "0",
+ ms_dispatcher_->video_array()[0].device.id);
+ }
+
protected:
base::MessageLoop message_loop_;
std::unique_ptr<ChildProcess> child_process_;
@@ -339,7 +412,7 @@ class UserMediaClientImplTest : public ::testing::Test {
mojo::Binding<::mojom::MediaDevicesDispatcherHost> binding_user_media;
mojo::Binding<::mojom::MediaDevicesDispatcherHost> binding_event_dispatcher_;
- std::unique_ptr<UserMediaClientImplUnderTest> used_media_impl_;
+ std::unique_ptr<UserMediaClientImplUnderTest> user_media_client_impl_;
std::unique_ptr<MockPeerConnectionDependencyFactory> dependency_factory_;
};
@@ -461,7 +534,7 @@ TEST_F(UserMediaClientImplTest, StopSourceWhenMediaStreamGoesOutOfScope) {
RequestLocalMediaStream();
// Makes sure the test itself don't hold a reference to the created
// MediaStream.
- used_media_impl_->ClearLastGeneratedStream();
+ user_media_client_impl_->ClearLastGeneratedStream();
blink::WebHeap::collectAllGarbageForTesting();
// Expect the sources to be stopped when the MediaStream goes out of scope.
@@ -483,13 +556,13 @@ TEST_F(UserMediaClientImplTest, LoadNewDocumentInFrame) {
// This test what happens if a video source to a MediaSteam fails to start.
TEST_F(UserMediaClientImplTest, MediaVideoSourceFailToStart) {
- used_media_impl_->RequestUserMedia();
+ user_media_client_impl_->RequestUserMedia();
FakeMediaStreamDispatcherRequestUserMediaComplete();
FailToStartMockedVideoSource();
EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_FAILED,
- used_media_impl_->request_state());
+ user_media_client_impl_->request_state());
EXPECT_EQ(MEDIA_DEVICE_TRACK_START_FAILURE,
- used_media_impl_->error_reason());
+ user_media_client_impl_->error_reason());
blink::WebHeap::collectAllGarbageForTesting();
EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
@@ -498,14 +571,14 @@ TEST_F(UserMediaClientImplTest, MediaVideoSourceFailToStart) {
// This test what happens if an audio source fail to initialize.
TEST_F(UserMediaClientImplTest, MediaAudioSourceFailToInitialize) {
- used_media_impl_->SetCreateSourceThatFails(true);
- used_media_impl_->RequestUserMedia();
+ user_media_client_impl_->SetCreateSourceThatFails(true);
+ user_media_client_impl_->RequestUserMedia();
FakeMediaStreamDispatcherRequestUserMediaComplete();
StartMockedVideoSource();
EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_FAILED,
- used_media_impl_->request_state());
+ user_media_client_impl_->request_state());
EXPECT_EQ(MEDIA_DEVICE_TRACK_START_FAILURE,
- used_media_impl_->error_reason());
+ user_media_client_impl_->error_reason());
blink::WebHeap::collectAllGarbageForTesting();
EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
@@ -515,37 +588,37 @@ TEST_F(UserMediaClientImplTest, MediaAudioSourceFailToInitialize) {
// This test what happens if UserMediaClientImpl is deleted before a source has
// started.
TEST_F(UserMediaClientImplTest, MediaStreamImplShutDown) {
- used_media_impl_->RequestUserMedia();
+ user_media_client_impl_->RequestUserMedia();
FakeMediaStreamDispatcherRequestUserMediaComplete();
EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_NOT_COMPLETE,
- used_media_impl_->request_state());
- used_media_impl_.reset();
+ user_media_client_impl_->request_state());
+ user_media_client_impl_.reset();
}
// This test what happens if a new document is loaded in the frame while the
// MediaStream is being generated by the MediaStreamDispatcher.
TEST_F(UserMediaClientImplTest, ReloadFrameWhileGeneratingStream) {
- used_media_impl_->RequestUserMedia();
+ user_media_client_impl_->RequestUserMedia();
LoadNewDocumentInFrame();
EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
EXPECT_EQ(0, ms_dispatcher_->stop_audio_device_counter());
EXPECT_EQ(0, ms_dispatcher_->stop_video_device_counter());
EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_NOT_COMPLETE,
- used_media_impl_->request_state());
+ user_media_client_impl_->request_state());
}
// This test what happens if a newdocument is loaded in the frame while the
// sources are being started.
TEST_F(UserMediaClientImplTest, ReloadFrameWhileGeneratingSources) {
- used_media_impl_->RequestUserMedia();
+ user_media_client_impl_->RequestUserMedia();
FakeMediaStreamDispatcherRequestUserMediaComplete();
EXPECT_EQ(1, ms_dispatcher_->request_stream_counter());
LoadNewDocumentInFrame();
EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter());
EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_NOT_COMPLETE,
- used_media_impl_->request_state());
+ user_media_client_impl_->request_state());
}
// This test what happens if stop is called on a track after the frame has
@@ -572,16 +645,17 @@ TEST_F(UserMediaClientImplTest, StopTrackAfterReload) {
}
TEST_F(UserMediaClientImplTest, EnumerateMediaDevices) {
- used_media_impl_->RequestMediaDevices();
+ user_media_client_impl_->RequestMediaDevices();
base::RunLoop().RunUntilIdle();
EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_SUCCEEDED,
- used_media_impl_->request_state());
- EXPECT_EQ(static_cast<size_t>(5), used_media_impl_->last_devices().size());
+ user_media_client_impl_->request_state());
+ EXPECT_EQ(static_cast<size_t>(5),
+ user_media_client_impl_->last_devices().size());
// Audio input device with matched output ID.
const blink::WebMediaDeviceInfo* device =
- &used_media_impl_->last_devices()[0];
+ &user_media_client_impl_->last_devices()[0];
EXPECT_FALSE(device->deviceId().isEmpty());
EXPECT_EQ(blink::WebMediaDeviceInfo::MediaDeviceKindAudioInput,
device->kind());
@@ -589,7 +663,7 @@ TEST_F(UserMediaClientImplTest, EnumerateMediaDevices) {
EXPECT_FALSE(device->groupId().isEmpty());
// Audio input device without matched output ID.
- device = &used_media_impl_->last_devices()[1];
+ device = &user_media_client_impl_->last_devices()[1];
EXPECT_FALSE(device->deviceId().isEmpty());
EXPECT_EQ(blink::WebMediaDeviceInfo::MediaDeviceKindAudioInput,
device->kind());
@@ -597,14 +671,14 @@ TEST_F(UserMediaClientImplTest, EnumerateMediaDevices) {
EXPECT_FALSE(device->groupId().isEmpty());
// Video input devices.
- device = &used_media_impl_->last_devices()[2];
+ device = &user_media_client_impl_->last_devices()[2];
EXPECT_FALSE(device->deviceId().isEmpty());
EXPECT_EQ(blink::WebMediaDeviceInfo::MediaDeviceKindVideoInput,
device->kind());
EXPECT_FALSE(device->label().isEmpty());
EXPECT_TRUE(device->groupId().isEmpty());
- device = &used_media_impl_->last_devices()[3];
+ device = &user_media_client_impl_->last_devices()[3];
EXPECT_FALSE(device->deviceId().isEmpty());
EXPECT_EQ(blink::WebMediaDeviceInfo::MediaDeviceKindVideoInput,
device->kind());
@@ -612,7 +686,7 @@ TEST_F(UserMediaClientImplTest, EnumerateMediaDevices) {
EXPECT_TRUE(device->groupId().isEmpty());
// Audio output device.
- device = &used_media_impl_->last_devices()[4];
+ device = &user_media_client_impl_->last_devices()[4];
EXPECT_FALSE(device->deviceId().isEmpty());
EXPECT_EQ(blink::WebMediaDeviceInfo::MediaDeviceKindAudioOutput,
device->kind());
@@ -620,18 +694,20 @@ TEST_F(UserMediaClientImplTest, EnumerateMediaDevices) {
EXPECT_FALSE(device->groupId().isEmpty());
// Verfify group IDs.
- EXPECT_TRUE(used_media_impl_->last_devices()[0].groupId().equals(
- used_media_impl_->last_devices()[4].groupId()));
- EXPECT_FALSE(used_media_impl_->last_devices()[1].groupId().equals(
- used_media_impl_->last_devices()[4].groupId()));
+ EXPECT_TRUE(user_media_client_impl_->last_devices()[0].groupId().equals(
+ user_media_client_impl_->last_devices()[4].groupId()));
+ EXPECT_FALSE(user_media_client_impl_->last_devices()[1].groupId().equals(
+ user_media_client_impl_->last_devices()[4].groupId()));
}
TEST_F(UserMediaClientImplTest, RenderToAssociatedSinkConstraint) {
// For a null UserMediaRequest (no audio requested), we expect false.
- used_media_impl_->RequestUserMedia();
- EXPECT_FALSE(used_media_impl_->UserMediaRequestHasAutomaticDeviceSelection(
- ms_dispatcher_->audio_input_request_id()));
- used_media_impl_->DeleteRequest(ms_dispatcher_->audio_input_request_id());
+ user_media_client_impl_->RequestUserMedia();
+ EXPECT_FALSE(
+ user_media_client_impl_->UserMediaRequestHasAutomaticDeviceSelection(
+ ms_dispatcher_->audio_input_request_id()));
+ user_media_client_impl_->DeleteRequest(
+ ms_dispatcher_->audio_input_request_id());
// If audio is requested, but no constraint, it should be true.
// Currently we expect it to be false due to a suspected bug in the
@@ -670,7 +746,7 @@ TEST_F(UserMediaClientImplTest, ObserveMediaDeviceChanges) {
EXPECT_CALL(
media_devices_dispatcher_,
SubscribeDeviceChangeNotifications(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT, _, _));
- used_media_impl_->SetMediaDeviceChangeObserver();
+ user_media_client_impl_->SetMediaDeviceChangeObserver();
base::RunLoop().RunUntilIdle();
base::WeakPtr<MediaDevicesEventDispatcher> event_dispatcher =
@@ -690,7 +766,7 @@ TEST_F(UserMediaClientImplTest, ObserveMediaDeviceChanges) {
EXPECT_CALL(
media_devices_dispatcher_,
UnsubscribeDeviceChangeNotifications(MEDIA_DEVICE_TYPE_AUDIO_OUTPUT, _));
- used_media_impl_->RemoveMediaDeviceChangeObserver();
+ user_media_client_impl_->RemoveMediaDeviceChangeObserver();
base::RunLoop().RunUntilIdle();
}
@@ -720,4 +796,87 @@ TEST_F(UserMediaClientImplTest, AudioVideoWithSameId) {
EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter());
}
+TEST_F(UserMediaClientImplTest, CreateWithMandatoryInvalidAudioDeviceId) {
+ blink::WebMediaConstraints audio_constraints =
+ CreateDeviceConstraints(kInvalidDeviceId);
+ blink::WebUserMediaRequest request =
+ blink::WebUserMediaRequest::createForTesting(
+ audio_constraints, blink::WebMediaConstraints());
+ user_media_client_impl_->RequestUserMedia(request);
+ EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_FAILED,
+ user_media_client_impl_->request_state());
+}
+
+TEST_F(UserMediaClientImplTest, CreateWithMandatoryInvalidVideoDeviceId) {
+ blink::WebMediaConstraints video_constraints =
+ CreateDeviceConstraints(kInvalidDeviceId);
+ blink::WebUserMediaRequest request =
+ blink::WebUserMediaRequest::createForTesting(blink::WebMediaConstraints(),
+ video_constraints);
+ user_media_client_impl_->RequestUserMedia(request);
+ EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_FAILED,
+ user_media_client_impl_->request_state());
+}
+
+TEST_F(UserMediaClientImplTest, CreateWithMandatoryValidDeviceIds) {
+ blink::WebMediaConstraints audio_constraints =
+ CreateDeviceConstraints(kFakeAudioInputDeviceId1);
+ blink::WebMediaConstraints video_constraints =
+ CreateDeviceConstraints(kFakeVideoInputDeviceId1);
+ TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
+ kFakeAudioInputDeviceId1,
+ kFakeVideoInputDeviceId1);
+}
+
+TEST_F(UserMediaClientImplTest, CreateWithBasicIdealValidDeviceId) {
+ blink::WebMediaConstraints audio_constraints =
+ CreateDeviceConstraints(nullptr, kFakeAudioInputDeviceId1);
+ blink::WebMediaConstraints video_constraints =
+ CreateDeviceConstraints(nullptr, kFakeVideoInputDeviceId1);
+ TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
+ kFakeAudioInputDeviceId1,
+ kFakeVideoInputDeviceId1);
+}
+
+TEST_F(UserMediaClientImplTest, CreateWithAdvancedExactValidDeviceId) {
+ blink::WebMediaConstraints audio_constraints =
+ CreateDeviceConstraints(nullptr, nullptr, kFakeAudioInputDeviceId1);
+ blink::WebMediaConstraints video_constraints = CreateDeviceConstraints(
+ nullptr, nullptr, kFakeVideoInputDeviceId1);
+ TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
+ kFakeAudioInputDeviceId1,
+ kFakeVideoInputDeviceId1);
+}
+
+TEST_F(UserMediaClientImplTest, CreateWithAdvancedIdealValidDeviceId) {
+ blink::WebMediaConstraints audio_constraints = CreateDeviceConstraints(
+ nullptr, nullptr, nullptr, kFakeAudioInputDeviceId1);
+ blink::WebMediaConstraints video_constraints = CreateDeviceConstraints(
+ nullptr, nullptr, nullptr, kFakeVideoInputDeviceId1);
+ TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
+ kFakeAudioInputDeviceId1,
+ kFakeVideoInputDeviceId1);
+}
+
+TEST_F(UserMediaClientImplTest, CreateWithAllOptionalInvalidDeviceId) {
+ blink::WebMediaConstraints audio_constraints = CreateDeviceConstraints(
+ nullptr, kInvalidDeviceId, kInvalidDeviceId, kInvalidDeviceId);
+ blink::WebMediaConstraints video_constraints = CreateDeviceConstraints(
+ nullptr, kInvalidDeviceId, kInvalidDeviceId, kInvalidDeviceId);
+ // MockMediaStreamDispatcher uses empty string as default device ID.
+ TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
+ std::string(), std::string());
+}
+
+TEST_F(UserMediaClientImplTest,
+ CreateWithAdvancedIdealValidOtherOptionalInvalidDeviceId) {
+ blink::WebMediaConstraints audio_constraints = CreateDeviceConstraints(
+ nullptr, kInvalidDeviceId, kInvalidDeviceId, kFakeAudioInputDeviceId1);
+ blink::WebMediaConstraints video_constraints = CreateDeviceConstraints(
+ nullptr, kInvalidDeviceId, kInvalidDeviceId, kFakeVideoInputDeviceId1);
+ TestValidRequestWithDeviceConstraints(audio_constraints, video_constraints,
+ kFakeAudioInputDeviceId1,
+ kFakeVideoInputDeviceId1);
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698