diff options
Diffstat (limited to 'chromium/content/renderer/media/mock_media_stream_dispatcher.cc')
-rw-r--r-- | chromium/content/renderer/media/mock_media_stream_dispatcher.cc | 90 |
1 files changed, 71 insertions, 19 deletions
diff --git a/chromium/content/renderer/media/mock_media_stream_dispatcher.cc b/chromium/content/renderer/media/mock_media_stream_dispatcher.cc index ed5c91c91ee..32ac1de61d3 100644 --- a/chromium/content/renderer/media/mock_media_stream_dispatcher.cc +++ b/chromium/content/renderer/media/mock_media_stream_dispatcher.cc @@ -8,11 +8,17 @@ #include "content/public/common/media_stream_request.h" #include "testing/gtest/include/gtest/gtest.h" +// Used for ID for output devices and for matching output device ID for input +// devices. +const char kAudioOutputDeviceIdPrefix[] = "audio_output_device_id"; + namespace content { MockMediaStreamDispatcher::MockMediaStreamDispatcher() : MediaStreamDispatcher(NULL), - request_id_(-1), + audio_input_request_id_(-1), + audio_output_request_id_(-1), + video_request_id_(-1), request_stream_counter_(0), stop_audio_device_counter_(0), stop_video_device_counter_(0), @@ -26,40 +32,54 @@ void MockMediaStreamDispatcher::GenerateStream( const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler, const StreamOptions& components, const GURL& url) { - request_id_ = request_id; + // Audio and video share the same request so we use |audio_input_request_id_| + // only. + audio_input_request_id_ = request_id; stream_label_ = "local_stream" + base::IntToString(request_id); - audio_array_.clear(); + audio_input_array_.clear(); video_array_.clear(); if (components.audio_requested) { - StreamDeviceInfo audio; - audio.device.id = "audio_device_id" + base::IntToString(session_id_); - audio.device.name = "microphone"; - audio.device.type = MEDIA_DEVICE_AUDIO_CAPTURE; - audio.session_id = session_id_; - audio_array_.push_back(audio); + AddAudioInputDeviceToArray(false); } if (components.video_requested) { - StreamDeviceInfo video; - video.device.id = "video_device_id" + base::IntToString(session_id_); - video.device.name = "usb video camera"; - video.device.type = MEDIA_DEVICE_VIDEO_CAPTURE; - video.session_id = session_id_; - video_array_.push_back(video); + AddVideoDeviceToArray(); } ++request_stream_counter_; } void MockMediaStreamDispatcher::CancelGenerateStream( - int request_id, - const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler) { - EXPECT_EQ(request_id, request_id_); + int request_id, + const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler) { + EXPECT_EQ(request_id, audio_input_request_id_); +} + +void MockMediaStreamDispatcher::EnumerateDevices( + int request_id, + const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler, + MediaStreamType type, + const GURL& security_origin, + bool hide_labels_if_no_access) { + if (type == MEDIA_DEVICE_AUDIO_CAPTURE) { + audio_input_request_id_ = request_id; + audio_input_array_.clear(); + AddAudioInputDeviceToArray(true); + AddAudioInputDeviceToArray(false); + } else if (type == MEDIA_DEVICE_AUDIO_OUTPUT) { + audio_output_request_id_ = request_id; + audio_output_array_.clear(); + AddAudioOutputDeviceToArray(); + } else if (type == MEDIA_DEVICE_VIDEO_CAPTURE) { + video_request_id_ = request_id; + video_array_.clear(); + AddVideoDeviceToArray(); + } } void MockMediaStreamDispatcher::StopStreamDevice( const StreamDeviceInfo& device_info) { - if (IsAudioMediaType(device_info.device.type)) { + if (IsAudioInputMediaType(device_info.device.type)) { ++stop_audio_device_counter_; return; } @@ -84,4 +104,36 @@ int MockMediaStreamDispatcher::audio_session_id(const std::string& label, return -1; } +void MockMediaStreamDispatcher::AddAudioInputDeviceToArray( + bool matched_output) { + StreamDeviceInfo audio; + audio.device.id = "audio_input_device_id" + base::IntToString(session_id_); + audio.device.name = "microphone"; + audio.device.type = MEDIA_DEVICE_AUDIO_CAPTURE; + if (matched_output) { + audio.device.matched_output_device_id = + kAudioOutputDeviceIdPrefix + base::IntToString(session_id_); + } + audio.session_id = session_id_; + audio_input_array_.push_back(audio); +} + +void MockMediaStreamDispatcher::AddAudioOutputDeviceToArray() { + StreamDeviceInfo audio; + audio.device.id = kAudioOutputDeviceIdPrefix + base::IntToString(session_id_); + audio.device.name = "speaker"; + audio.device.type = MEDIA_DEVICE_AUDIO_OUTPUT; + audio.session_id = session_id_; + audio_output_array_.push_back(audio); +} + +void MockMediaStreamDispatcher::AddVideoDeviceToArray() { + StreamDeviceInfo video; + video.device.id = "video_device_id" + base::IntToString(session_id_); + video.device.name = "usb video camera"; + video.device.type = MEDIA_DEVICE_VIDEO_CAPTURE; + video.session_id = session_id_; + video_array_.push_back(video); +} + } // namespace content |