| Index: content/renderer/media/media_stream_dispatcher_unittest.cc
|
| ===================================================================
|
| --- content/renderer/media/media_stream_dispatcher_unittest.cc (revision 118766)
|
| +++ content/renderer/media/media_stream_dispatcher_unittest.cc (working copy)
|
| @@ -19,6 +19,8 @@
|
| const int kVideoSessionId = 5;
|
| const int kRequestId1 = 10;
|
| const int kRequestId2 = 20;
|
| +const int kRequestId3 = 30;
|
| +const int kRequestId4 = 40;
|
|
|
| class MockMediaStreamDispatcherEventHandler
|
| : public MediaStreamDispatcherEventHandler {
|
| @@ -32,25 +34,47 @@
|
| int request_id,
|
| const std::string &label,
|
| const media_stream::StreamDeviceInfoArray& audio_device_array,
|
| - const media_stream::StreamDeviceInfoArray& video_device_array) {
|
| + const media_stream::StreamDeviceInfoArray& video_device_array) OVERRIDE {
|
| request_id_ = request_id;
|
| label_ = label;
|
| }
|
|
|
| - virtual void OnStreamGenerationFailed(int request_id) {
|
| + virtual void OnStreamGenerationFailed(int request_id) OVERRIDE {
|
| request_id_ = request_id;
|
| }
|
|
|
| virtual void OnAudioDeviceFailed(const std::string& label,
|
| - int index) {
|
| + int index) OVERRIDE {
|
| audio_failed = true;
|
| }
|
|
|
| virtual void OnVideoDeviceFailed(const std::string& label,
|
| - int index) {
|
| + int index) OVERRIDE {
|
| video_failed = true;
|
| }
|
|
|
| + virtual void OnDevicesEnumerated(
|
| + int request_id,
|
| + const media_stream::StreamDeviceInfoArray& device_array) OVERRIDE {
|
| + request_id_ = request_id;
|
| + }
|
| +
|
| + virtual void OnDevicesEnumerationFailed(int request_id) OVERRIDE {
|
| + request_id_ = request_id;
|
| + }
|
| +
|
| + virtual void OnDeviceOpened(
|
| + int request_id,
|
| + const std::string& label,
|
| + const media_stream::StreamDeviceInfo& video_device) OVERRIDE {
|
| + request_id_ = request_id;
|
| + label_ = label;
|
| + }
|
| +
|
| + virtual void OnDeviceOpenFailed(int request_id) OVERRIDE {
|
| + request_id_ = request_id;
|
| + }
|
| +
|
| int request_id_;
|
| std::string label_;
|
| bool audio_failed;
|
| @@ -61,7 +85,7 @@
|
|
|
| } // namespace
|
|
|
| -TEST(MediaStreamDispatcherTest, Basic) {
|
| +TEST(MediaStreamDispatcherTest, BasicStream) {
|
| scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL));
|
| scoped_ptr<MockMediaStreamDispatcherEventHandler>
|
| handler(new MockMediaStreamDispatcherEventHandler);
|
| @@ -135,6 +159,88 @@
|
| EXPECT_EQ(dispatcher->requests_.size(), size_t(0));
|
| }
|
|
|
| +TEST(MediaStreamDispatcherTest, BasicVideoDevice) {
|
| + scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL));
|
| + scoped_ptr<MockMediaStreamDispatcherEventHandler>
|
| + handler(new MockMediaStreamDispatcherEventHandler);
|
| + std::string security_origin;
|
| +
|
| + int ipc_request_id1 = dispatcher->next_ipc_id_;
|
| + dispatcher->EnumerateDevices(kRequestId1, handler.get(),
|
| + media_stream::kVideoCapture, security_origin);
|
| + int ipc_request_id2 = dispatcher->next_ipc_id_;
|
| + EXPECT_NE(ipc_request_id1, ipc_request_id2);
|
| + dispatcher->EnumerateDevices(kRequestId2, handler.get(),
|
| + media_stream::kVideoCapture, security_origin);
|
| + EXPECT_EQ(dispatcher->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 = media_stream::kVideoCapture;
|
| + video_device_info.session_id = kVideoSessionId;
|
| + video_device_array[0] = video_device_info;
|
| +
|
| + // Complete the enumeration of request 1.
|
| + dispatcher->OnMessageReceived(MediaStreamMsg_DevicesEnumerated(
|
| + kRouteId, ipc_request_id1, video_device_array));
|
| + EXPECT_EQ(handler->request_id_, kRequestId1);
|
| +
|
| + // Complete the enumeration of request 2.
|
| + dispatcher->OnMessageReceived(MediaStreamMsg_DevicesEnumerated(
|
| + kRouteId, ipc_request_id2, video_device_array));
|
| + EXPECT_EQ(handler->request_id_, kRequestId2);
|
| +
|
| + EXPECT_EQ(dispatcher->requests_.size(), size_t(0));
|
| + EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0));
|
| +
|
| + int ipc_request_id3 = dispatcher->next_ipc_id_;
|
| + dispatcher->OpenDevice(kRequestId3, handler.get(),
|
| + video_device_info.device_id,
|
| + media_stream::kVideoCapture, security_origin);
|
| + int ipc_request_id4 = dispatcher->next_ipc_id_;
|
| + EXPECT_NE(ipc_request_id3, ipc_request_id4);
|
| + dispatcher->OpenDevice(kRequestId4, handler.get(),
|
| + video_device_info.device_id,
|
| + media_stream::kVideoCapture, security_origin);
|
| + EXPECT_EQ(dispatcher->requests_.size(), size_t(2));
|
| +
|
| + // Complete the OpenDevice of request 1.
|
| + std::string stream_label1 = std::string("stream1");
|
| + dispatcher->OnMessageReceived(MediaStreamMsg_DeviceOpened(
|
| + kRouteId, ipc_request_id3, stream_label1, video_device_info));
|
| + EXPECT_EQ(handler->request_id_, kRequestId3);
|
| +
|
| + // Complete the OpenDevice of request 2.
|
| + std::string stream_label2 = std::string("stream2");
|
| + dispatcher->OnMessageReceived(MediaStreamMsg_DeviceOpened(
|
| + kRouteId, ipc_request_id4, stream_label2, video_device_info));
|
| + EXPECT_EQ(handler->request_id_, kRequestId4);
|
| +
|
| + EXPECT_EQ(dispatcher->requests_.size(), size_t(0));
|
| + EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(2));
|
| +
|
| + // Check the video_session_id.
|
| + EXPECT_EQ(dispatcher->video_session_id(stream_label1, 0), kVideoSessionId);
|
| + EXPECT_EQ(dispatcher->video_session_id(stream_label2, 0), kVideoSessionId);
|
| +
|
| + // Stop stream2.
|
| + dispatcher->StopStream(stream_label2);
|
| + EXPECT_EQ(dispatcher->video_session_id(stream_label2, 0),
|
| + media_stream::StreamDeviceInfo::kNoId);
|
| +
|
| + // Stop stream1.
|
| + dispatcher->StopStream(stream_label1);
|
| + 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 have been completed.
|
| + EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0));
|
| + EXPECT_EQ(dispatcher->requests_.size(), size_t(0));
|
| +}
|
| +
|
| TEST(MediaStreamDispatcherTest, TestFailure) {
|
| scoped_ptr<MediaStreamDispatcher> dispatcher(new MediaStreamDispatcher(NULL));
|
| scoped_ptr<MockMediaStreamDispatcherEventHandler>
|
|
|