Index: content/renderer/media/media_stream_dispatcher_unittest.cc |
diff --git a/content/renderer/media/media_stream_dispatcher_unittest.cc b/content/renderer/media/media_stream_dispatcher_unittest.cc |
index 458d61b7e3fdb10bad1b306b615edd2a3d5e1533..a7190b940095e5cb290ee3a3dd917f6580ac6282 100644 |
--- a/content/renderer/media/media_stream_dispatcher_unittest.cc |
+++ b/content/renderer/media/media_stream_dispatcher_unittest.cc |
@@ -8,6 +8,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/message_loop.h" |
#include "content/common/media/media_stream_messages.h" |
+#include "content/public/common/media_stream_request.h" |
#include "content/renderer/media/media_stream_dispatcher.h" |
#include "content/renderer/media/media_stream_dispatcher_eventhandler.h" |
#include "googleurl/src/gurl.h" |
@@ -24,6 +25,13 @@ const int kRequestId3 = 30; |
const int kRequestId4 = 40; |
static const char kLabel[] = "test"; |
+const content::MediaStreamDeviceType kAudioType = |
+ content::MEDIA_DEVICE_AUDIO_CAPTURE; |
+const content::MediaStreamDeviceType kVideoType = |
+ content::MEDIA_DEVICE_VIDEO_CAPTURE; |
+const content::MediaStreamDeviceType kNoAudioType = |
+ content::MEDIA_NO_SERVICE; |
+ |
class MockMediaStreamDispatcherEventHandler |
: public MediaStreamDispatcherEventHandler, |
public base::SupportsWeakPtr<MockMediaStreamDispatcherEventHandler> { |
@@ -108,16 +116,14 @@ TEST(MediaStreamDispatcherTest, BasicStream) { |
media_stream::StreamDeviceInfoArray audio_device_array(1); |
media_stream::StreamDeviceInfo audio_device_info; |
audio_device_info.name = "Microphone"; |
- audio_device_info.stream_type = |
- content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE; |
+ audio_device_info.stream_type = kAudioType; |
audio_device_info.session_id = kAudioSessionId; |
audio_device_array[0] = audio_device_info; |
media_stream::StreamDeviceInfoArray video_device_array(1); |
media_stream::StreamDeviceInfo video_device_info; |
video_device_info.name = "Camera"; |
- video_device_info.stream_type = |
- content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE; |
+ video_device_info.stream_type = kVideoType; |
video_device_info.session_id = kVideoSessionId; |
video_device_array[0] = video_device_info; |
@@ -159,7 +165,78 @@ TEST(MediaStreamDispatcherTest, BasicStream) { |
media_stream::StreamDeviceInfo::kNoId); |
EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); |
- // Verify that the request have been completed. |
+ // Verify that the request has been completed. |
+ EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); |
+ EXPECT_EQ(dispatcher->requests_.size(), size_t(0)); |
+} |
+ |
+TEST(MediaStreamDispatcherTest, BasicStreamForDevice) { |
+ static const char kDeviceId[] = "/dev/video0"; |
+ |
+ scoped_ptr<MessageLoop> message_loop(new MessageLoop()); |
+ scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL)); |
+ scoped_ptr<MockMediaStreamDispatcherEventHandler> |
+ handler(new MockMediaStreamDispatcherEventHandler); |
+ media_stream::StreamOptions components(kNoAudioType, kVideoType); |
+ GURL security_origin; |
+ |
+ int ipc_request_id1 = dispatcher->next_ipc_id_; |
+ dispatcher->GenerateStreamForDevice(kRequestId1, handler.get()->AsWeakPtr(), |
+ components, kDeviceId, security_origin); |
+ int ipc_request_id2 = dispatcher->next_ipc_id_; |
+ EXPECT_NE(ipc_request_id1, ipc_request_id2); |
+ dispatcher->GenerateStreamForDevice(kRequestId2, handler.get()->AsWeakPtr(), |
+ components, kDeviceId, security_origin); |
+ EXPECT_EQ(dispatcher->requests_.size(), size_t(2)); |
+ |
+ // No audio requested. |
+ media_stream::StreamDeviceInfoArray audio_device_array; |
+ |
+ media_stream::StreamDeviceInfoArray video_device_array(1); |
+ media_stream::StreamDeviceInfo video_device_info; |
+ video_device_info.name = "Fake Video Capture Device"; |
+ video_device_info.stream_type = kVideoType; |
+ video_device_info.session_id = kVideoSessionId; |
+ video_device_array[0] = video_device_info; |
+ |
+ // Complete the creation of stream1. |
+ std::string stream_label1 = std::string("stream1"); |
+ dispatcher->OnMessageReceived(MediaStreamMsg_StreamGenerated( |
+ kRouteId, ipc_request_id1, stream_label1, |
+ audio_device_array, video_device_array)); |
+ EXPECT_EQ(handler->request_id_, kRequestId1); |
+ EXPECT_EQ(handler->label_, stream_label1); |
+ |
+ // Complete the creation of stream2. |
+ std::string stream_label2 = std::string("stream2"); |
+ dispatcher->OnMessageReceived(MediaStreamMsg_StreamGenerated( |
+ kRouteId, ipc_request_id2, stream_label2, |
+ audio_device_array, video_device_array)); |
+ EXPECT_EQ(handler->request_id_, kRequestId2); |
+ EXPECT_EQ(handler->label_, stream_label2); |
+ |
+ EXPECT_EQ(dispatcher->requests_.size(), size_t(0)); |
+ EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(2)); |
+ |
+ // Check the session_id of stream2. |
+ EXPECT_EQ(dispatcher->video_session_id(stream_label2, 0), kVideoSessionId); |
+ |
+ // Stop stream2. |
+ dispatcher->StopStream(stream_label2); |
+ EXPECT_EQ(dispatcher->audio_session_id(stream_label2, 0), |
+ media_stream::StreamDeviceInfo::kNoId); |
+ EXPECT_EQ(dispatcher->video_session_id(stream_label2, 0), |
+ media_stream::StreamDeviceInfo::kNoId); |
+ |
+ // Stop stream1. |
+ dispatcher->StopStream(stream_label1); |
+ EXPECT_EQ(dispatcher->audio_session_id(stream_label1, 0), |
+ media_stream::StreamDeviceInfo::kNoId); |
+ EXPECT_EQ(dispatcher->video_session_id(stream_label1, 0), |
+ media_stream::StreamDeviceInfo::kNoId); |
+ EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); |
+ |
+ // Verify that the request has been completed. |
EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); |
EXPECT_EQ(dispatcher->requests_.size(), size_t(0)); |
} |
@@ -174,22 +251,23 @@ TEST(MediaStreamDispatcherTest, BasicVideoDevice) { |
GURL security_origin; |
int ipc_request_id1 = dispatcher->next_ipc_id_; |
- dispatcher->EnumerateDevices(kRequestId1, handler1.get()->AsWeakPtr(), |
- content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, |
- security_origin); |
+ dispatcher->EnumerateDevices( |
+ kRequestId1, handler1.get()->AsWeakPtr(), |
+ kVideoType, |
+ security_origin); |
int ipc_request_id2 = dispatcher->next_ipc_id_; |
EXPECT_NE(ipc_request_id1, ipc_request_id2); |
- dispatcher->EnumerateDevices(kRequestId2, handler2.get()->AsWeakPtr(), |
- content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, |
- security_origin); |
+ dispatcher->EnumerateDevices( |
+ kRequestId2, handler2.get()->AsWeakPtr(), |
+ kVideoType, |
+ security_origin); |
EXPECT_EQ(dispatcher->video_enumeration_state_.requests.size(), size_t(2)); |
media_stream::StreamDeviceInfoArray video_device_array(1); |
media_stream::StreamDeviceInfo video_device_info; |
video_device_info.name = "Camera"; |
video_device_info.device_id = "device_path"; |
- video_device_info.stream_type = |
- content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE; |
+ video_device_info.stream_type = kVideoType; |
video_device_info.session_id = kVideoSessionId; |
video_device_array[0] = video_device_info; |
@@ -205,13 +283,13 @@ TEST(MediaStreamDispatcherTest, BasicVideoDevice) { |
int ipc_request_id3 = dispatcher->next_ipc_id_; |
dispatcher->OpenDevice(kRequestId3, handler1.get()->AsWeakPtr(), |
video_device_info.device_id, |
- content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, |
+ kVideoType, |
security_origin); |
int ipc_request_id4 = dispatcher->next_ipc_id_; |
EXPECT_NE(ipc_request_id3, ipc_request_id4); |
dispatcher->OpenDevice(kRequestId4, handler1.get()->AsWeakPtr(), |
video_device_info.device_id, |
- content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE, |
+ kVideoType, |
security_origin); |
EXPECT_EQ(dispatcher->requests_.size(), size_t(2)); |
@@ -277,16 +355,14 @@ TEST(MediaStreamDispatcherTest, TestFailure) { |
media_stream::StreamDeviceInfoArray audio_device_array(1); |
media_stream::StreamDeviceInfo audio_device_info; |
audio_device_info.name = "Microphone"; |
- audio_device_info.stream_type = |
- content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE; |
+ audio_device_info.stream_type = kAudioType; |
audio_device_info.session_id = kAudioSessionId; |
audio_device_array[0] = audio_device_info; |
media_stream::StreamDeviceInfoArray video_device_array(1); |
media_stream::StreamDeviceInfo video_device_info; |
video_device_info.name = "Camera"; |
- video_device_info.stream_type = |
- content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE; |
+ video_device_info.stream_type = kVideoType; |
video_device_info.session_id = kVideoSessionId; |
video_device_array[0] = video_device_info; |
@@ -337,16 +413,14 @@ TEST(MediaStreamDispatcherTest, CancelGenerateStream) { |
// Complete the creation of stream1. |
media_stream::StreamDeviceInfo audio_device_info; |
audio_device_info.name = "Microphone"; |
- audio_device_info.stream_type = |
- content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE; |
+ audio_device_info.stream_type = kAudioType; |
audio_device_info.session_id = kAudioSessionId; |
media_stream::StreamDeviceInfoArray audio_device_array(1); |
audio_device_array[0] = audio_device_info; |
media_stream::StreamDeviceInfo video_device_info; |
video_device_info.name = "Camera"; |
- video_device_info.stream_type = |
- content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE; |
+ video_device_info.stream_type = kVideoType; |
video_device_info.session_id = kVideoSessionId; |
media_stream::StreamDeviceInfoArray video_device_array(1); |
video_device_array[0] = video_device_info; |