| 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
|
|
|