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 08f25e450b2ba2ca4d19a297ccb10a4df0376b1f..386ce3416fb743787ad3144abca94b2346f6e3c5 100644 |
--- a/content/renderer/media/user_media_client_impl_unittest.cc |
+++ b/content/renderer/media/user_media_client_impl_unittest.cc |
@@ -17,6 +17,7 @@ |
#include "third_party/WebKit/public/platform/WebMediaStream.h" |
#include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
+#include "third_party/WebKit/public/platform/WebMediaStreamTrackSourcesRequest.h" |
#include "third_party/WebKit/public/platform/WebString.h" |
#include "third_party/WebKit/public/platform/WebVector.h" |
#include "third_party/WebKit/public/web/WebHeap.h" |
@@ -68,6 +69,12 @@ class UserMediaClientImplUnderTest : public UserMediaClientImpl { |
requestMediaDevices(media_devices_request); |
} |
+ void RequestSources() { |
+ blink::WebMediaStreamTrackSourcesRequest sources_request; |
+ state_ = REQUEST_NOT_COMPLETE; |
+ requestSources(sources_request); |
+ } |
+ |
virtual void GetUserMediaRequestSucceeded( |
const blink::WebMediaStream& stream, |
blink::WebUserMediaRequest* request_info) OVERRIDE { |
@@ -100,6 +107,13 @@ class UserMediaClientImplUnderTest : public UserMediaClientImpl { |
last_devices_ = devices; |
} |
+ virtual void EnumerateSourcesSucceded( |
+ blink::WebMediaStreamTrackSourcesRequest* request, |
+ blink::WebVector<blink::WebSourceInfo>& sources) OVERRIDE { |
+ state_ = REQUEST_SUCCEEDED; |
+ last_sources_ = sources; |
+ } |
+ |
virtual MediaStreamVideoSource* CreateVideoSource( |
const StreamDeviceInfo& device, |
const MediaStreamSource::SourceStoppedCallback& stop_callback) OVERRIDE { |
@@ -117,6 +131,10 @@ class UserMediaClientImplUnderTest : public UserMediaClientImpl { |
return last_devices_; |
} |
+ const blink::WebVector<blink::WebSourceInfo>& last_sources() { |
+ return last_sources_; |
+ } |
+ |
void ClearLastGeneratedStream() { |
last_generated_stream_.reset(); |
} |
@@ -135,6 +153,7 @@ class UserMediaClientImplUnderTest : public UserMediaClientImpl { |
content::MediaStreamRequestResult result_; |
blink::WebString result_name_; |
blink::WebVector<blink::WebMediaDeviceInfo> last_devices_; |
+ blink::WebVector<blink::WebSourceInfo> last_sources_; |
PeerConnectionDependencyFactory* factory_; |
MockMediaStreamVideoCapturerSource* video_source_; |
}; |
@@ -204,6 +223,15 @@ class UserMediaClientImplTest : public ::testing::Test { |
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(); |
@@ -464,40 +492,89 @@ TEST_F(UserMediaClientImplTest, EnumerateMediaDevices) { |
EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_SUCCEEDED, |
used_media_impl_->request_state()); |
+ EXPECT_EQ(static_cast<size_t>(5), used_media_impl_->last_devices().size()); |
// Audio input device with matched output ID. |
- EXPECT_FALSE(used_media_impl_->last_devices()[0].deviceId().isEmpty()); |
+ const blink::WebMediaDeviceInfo* device = |
+ &used_media_impl_->last_devices()[0]; |
+ EXPECT_FALSE(device->deviceId().isEmpty()); |
EXPECT_EQ(blink::WebMediaDeviceInfo::MediaDeviceKindAudioInput, |
- used_media_impl_->last_devices()[0].kind()); |
- EXPECT_FALSE(used_media_impl_->last_devices()[0].label().isEmpty()); |
- EXPECT_FALSE(used_media_impl_->last_devices()[0].groupId().isEmpty()); |
+ device->kind()); |
+ EXPECT_FALSE(device->label().isEmpty()); |
+ EXPECT_FALSE(device->groupId().isEmpty()); |
// Audio input device without matched output ID. |
- EXPECT_FALSE(used_media_impl_->last_devices()[1].deviceId().isEmpty()); |
+ device = &used_media_impl_->last_devices()[1]; |
+ EXPECT_FALSE(device->deviceId().isEmpty()); |
EXPECT_EQ(blink::WebMediaDeviceInfo::MediaDeviceKindAudioInput, |
- used_media_impl_->last_devices()[1].kind()); |
- EXPECT_FALSE(used_media_impl_->last_devices()[1].label().isEmpty()); |
- EXPECT_FALSE(used_media_impl_->last_devices()[1].groupId().isEmpty()); |
+ device->kind()); |
+ EXPECT_FALSE(device->label().isEmpty()); |
+ EXPECT_FALSE(device->groupId().isEmpty()); |
+ |
+ // Video input devices. |
+ device = &used_media_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()); |
- // Video input device. |
- EXPECT_FALSE(used_media_impl_->last_devices()[2].deviceId().isEmpty()); |
+ device = &used_media_impl_->last_devices()[3]; |
+ EXPECT_FALSE(device->deviceId().isEmpty()); |
EXPECT_EQ(blink::WebMediaDeviceInfo::MediaDeviceKindVideoInput, |
- used_media_impl_->last_devices()[2].kind()); |
- EXPECT_FALSE(used_media_impl_->last_devices()[2].label().isEmpty()); |
- EXPECT_TRUE(used_media_impl_->last_devices()[2].groupId().isEmpty()); |
+ device->kind()); |
+ EXPECT_FALSE(device->label().isEmpty()); |
+ EXPECT_TRUE(device->groupId().isEmpty()); |
// Audio output device. |
- EXPECT_FALSE(used_media_impl_->last_devices()[3].deviceId().isEmpty()); |
+ device = &used_media_impl_->last_devices()[4]; |
+ EXPECT_FALSE(device->deviceId().isEmpty()); |
EXPECT_EQ(blink::WebMediaDeviceInfo::MediaDeviceKindAudioOutput, |
- used_media_impl_->last_devices()[3].kind()); |
- EXPECT_FALSE(used_media_impl_->last_devices()[3].label().isEmpty()); |
- EXPECT_FALSE(used_media_impl_->last_devices()[3].groupId().isEmpty()); |
+ device->kind()); |
+ EXPECT_FALSE(device->label().isEmpty()); |
+ EXPECT_FALSE(device->groupId().isEmpty()); |
// Verfify group IDs. |
EXPECT_TRUE(used_media_impl_->last_devices()[0].groupId().equals( |
- used_media_impl_->last_devices()[3].groupId())); |
+ used_media_impl_->last_devices()[4].groupId())); |
EXPECT_FALSE(used_media_impl_->last_devices()[1].groupId().equals( |
- used_media_impl_->last_devices()[3].groupId())); |
+ used_media_impl_->last_devices()[4].groupId())); |
+} |
+ |
+TEST_F(UserMediaClientImplTest, EnumerateSources) { |
+ used_media_impl_->RequestSources(); |
+ FakeMediaStreamDispatcherRequestSourcesComplete(); |
+ |
+ EXPECT_EQ(UserMediaClientImplUnderTest::REQUEST_SUCCEEDED, |
+ used_media_impl_->request_state()); |
+ EXPECT_EQ(static_cast<size_t>(4), used_media_impl_->last_sources().size()); |
+ |
+ // Audio input devices. |
+ const blink::WebSourceInfo* source = &used_media_impl_->last_sources()[0]; |
+ EXPECT_FALSE(source->id().isEmpty()); |
+ EXPECT_EQ(blink::WebSourceInfo::SourceKindAudio, source->kind()); |
+ EXPECT_FALSE(source->label().isEmpty()); |
+ EXPECT_EQ(blink::WebSourceInfo::VideoFacingModeNone, source->facing()); |
+ |
+ source = &used_media_impl_->last_sources()[1]; |
+ EXPECT_FALSE(source->id().isEmpty()); |
+ EXPECT_EQ(blink::WebSourceInfo::SourceKindAudio, source->kind()); |
+ EXPECT_FALSE(source->label().isEmpty()); |
+ EXPECT_EQ(blink::WebSourceInfo::VideoFacingModeNone, source->facing()); |
+ |
+ // Video input device user facing. |
+ source = &used_media_impl_->last_sources()[2]; |
+ EXPECT_FALSE(source->id().isEmpty()); |
+ EXPECT_EQ(blink::WebSourceInfo::SourceKindVideo, source->kind()); |
+ EXPECT_FALSE(source->label().isEmpty()); |
+ EXPECT_EQ(blink::WebSourceInfo::VideoFacingModeUser, 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()); |
} |
} // namespace content |