Index: content/renderer/media/media_stream_impl_unittest.cc |
diff --git a/content/renderer/media/media_stream_impl_unittest.cc b/content/renderer/media/media_stream_impl_unittest.cc |
index c516aff14fea4202a8493b66b8e893b8539d89c4..7db70db61c1ec0aebccc8840c6e3368b0afa22f6 100644 |
--- a/content/renderer/media/media_stream_impl_unittest.cc |
+++ b/content/renderer/media/media_stream_impl_unittest.cc |
@@ -13,6 +13,7 @@ |
#include "content/renderer/media/mock_media_stream_video_source.h" |
#include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "third_party/WebKit/public/platform/WebMediaDeviceInfo.h" |
#include "third_party/WebKit/public/platform/WebMediaStream.h" |
#include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
@@ -57,6 +58,12 @@ class MediaStreamImplUnderTest : public MediaStreamImpl { |
requestUserMedia(user_media_request); |
} |
+ void RequestMediaDevices() { |
+ blink::WebMediaDevicesRequest media_devices_request; |
+ state_ = REQUEST_NOT_COMPLETE; |
+ requestMediaDevices(media_devices_request); |
+ } |
+ |
virtual void GetUserMediaRequestSucceeded( |
const blink::WebMediaStream& stream, |
blink::WebUserMediaRequest* request_info) OVERRIDE { |
@@ -72,6 +79,13 @@ class MediaStreamImplUnderTest : public MediaStreamImpl { |
result_ = result; |
} |
+ virtual void EnumerateDevicesSucceded( |
+ blink::WebMediaDevicesRequest* request, |
+ blink::WebVector<blink::WebMediaDeviceInfo>& devices) OVERRIDE { |
+ state_ = REQUEST_SUCCEEDED; |
+ last_devices_ = devices; |
+ } |
+ |
virtual MediaStreamVideoSource* CreateVideoSource( |
const StreamDeviceInfo& device, |
const MediaStreamSource::SourceStoppedCallback& stop_callback) OVERRIDE { |
@@ -85,6 +99,10 @@ class MediaStreamImplUnderTest : public MediaStreamImpl { |
return last_generated_stream_; |
} |
+ const blink::WebVector<blink::WebMediaDeviceInfo>& last_devices() { |
+ return last_devices_; |
+ } |
+ |
void ClearLastGeneratedStream() { |
last_generated_stream_.reset(); |
} |
@@ -100,6 +118,7 @@ class MediaStreamImplUnderTest : public MediaStreamImpl { |
blink::WebMediaStream last_generated_stream_; |
RequestState state_; |
content::MediaStreamRequestResult result_; |
+ blink::WebVector<blink::WebMediaDeviceInfo> last_devices_; |
PeerConnectionDependencyFactory* factory_; |
MockMediaStreamVideoCapturerSource* video_source_; |
}; |
@@ -117,7 +136,7 @@ class MediaStreamImplTest : public ::testing::Test { |
blink::WebMediaStream RequestLocalMediaStream() { |
ms_impl_->RequestUserMedia(); |
- FakeMediaStreamDispatcherComplete(); |
+ FakeMediaStreamDispatcherRequestUserMediaComplete(); |
StartMockedVideoSource(); |
EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_SUCCEEDED, |
@@ -142,13 +161,21 @@ class MediaStreamImplTest : public ::testing::Test { |
return desc; |
} |
- void FakeMediaStreamDispatcherComplete() { |
- ms_impl_->OnStreamGenerated(ms_dispatcher_->request_id(), |
+ void FakeMediaStreamDispatcherRequestUserMediaComplete() { |
+ // Audio request ID is used as the shared request ID. |
+ ms_impl_->OnStreamGenerated(ms_dispatcher_->audio_request_id(), |
ms_dispatcher_->stream_label(), |
ms_dispatcher_->audio_array(), |
ms_dispatcher_->video_array()); |
} |
+ void FakeMediaStreamDispatcherRequestMediaDevicesComplete() { |
+ ms_impl_->OnDevicesEnumerated(ms_dispatcher_->audio_request_id(), |
+ ms_dispatcher_->audio_array()); |
+ ms_impl_->OnDevicesEnumerated(ms_dispatcher_->video_request_id(), |
+ ms_dispatcher_->video_array()); |
+ } |
+ |
void StartMockedVideoSource() { |
MockMediaStreamVideoCapturerSource* video_source = |
ms_impl_->last_created_video_source(); |
@@ -317,7 +344,7 @@ TEST_F(MediaStreamImplTest, FrameWillClose) { |
// This test what happens if a video source to a MediaSteam fails to start. |
TEST_F(MediaStreamImplTest, MediaVideoSourceFailToStart) { |
ms_impl_->RequestUserMedia(); |
- FakeMediaStreamDispatcherComplete(); |
+ FakeMediaStreamDispatcherRequestUserMediaComplete(); |
FailToStartMockedVideoSource(); |
EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_FAILED, |
ms_impl_->request_state()); |
@@ -332,7 +359,7 @@ TEST_F(MediaStreamImplTest, MediaVideoSourceFailToStart) { |
TEST_F(MediaStreamImplTest, MediaAudioSourceFailToInitialize) { |
FailToCreateNextAudioCapturer(); |
ms_impl_->RequestUserMedia(); |
- FakeMediaStreamDispatcherComplete(); |
+ FakeMediaStreamDispatcherRequestUserMediaComplete(); |
StartMockedVideoSource(); |
EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_FAILED, |
ms_impl_->request_state()); |
@@ -347,7 +374,7 @@ TEST_F(MediaStreamImplTest, MediaAudioSourceFailToInitialize) { |
// started. |
TEST_F(MediaStreamImplTest, MediaStreamImplShutDown) { |
ms_impl_->RequestUserMedia(); |
- FakeMediaStreamDispatcherComplete(); |
+ FakeMediaStreamDispatcherRequestUserMediaComplete(); |
EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); |
EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_NOT_COMPLETE, |
ms_impl_->request_state()); |
@@ -370,7 +397,7 @@ TEST_F(MediaStreamImplTest, ReloadFrameWhileGeneratingStream) { |
// started. |
TEST_F(MediaStreamImplTest, ReloadFrameWhileGeneratingSources) { |
ms_impl_->RequestUserMedia(); |
- FakeMediaStreamDispatcherComplete(); |
+ FakeMediaStreamDispatcherRequestUserMediaComplete(); |
EXPECT_EQ(1, ms_dispatcher_->request_stream_counter()); |
ms_impl_->FrameWillClose(NULL); |
EXPECT_EQ(1, ms_dispatcher_->stop_audio_device_counter()); |
@@ -401,4 +428,22 @@ TEST_F(MediaStreamImplTest, StopTrackAfterReload) { |
EXPECT_EQ(1, ms_dispatcher_->stop_video_device_counter()); |
} |
+TEST_F(MediaStreamImplTest, EnumerateMediaDevices) { |
+ ms_impl_->RequestMediaDevices(); |
+ FakeMediaStreamDispatcherRequestMediaDevicesComplete(); |
+ |
+ EXPECT_EQ(MediaStreamImplUnderTest::REQUEST_SUCCEEDED, |
+ ms_impl_->request_state()); |
+ |
+ EXPECT_FALSE(ms_impl_->last_devices()[0].deviceId().isEmpty()); |
+ EXPECT_EQ(blink::WebMediaDeviceInfo::MediaDeviceKindAudioInput, |
+ ms_impl_->last_devices()[0].kind()); |
+ EXPECT_FALSE(ms_impl_->last_devices()[0].label().isEmpty()); |
+ |
+ EXPECT_FALSE(ms_impl_->last_devices()[1].deviceId().isEmpty()); |
+ EXPECT_EQ(blink::WebMediaDeviceInfo::MediaDeviceKindVideoInput, |
+ ms_impl_->last_devices()[1].kind()); |
+ EXPECT_FALSE(ms_impl_->last_devices()[1].label().isEmpty()); |
+} |
+ |
} // namespace content |