summaryrefslogtreecommitdiffstats
path: root/chromium/content/renderer/media/mock_media_stream_dispatcher.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/renderer/media/mock_media_stream_dispatcher.cc')
-rw-r--r--chromium/content/renderer/media/mock_media_stream_dispatcher.cc90
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