Chromium Code Reviews| 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 82f609719209be4aa34c40fcef98926247ba5e3b..8ce41a701dc23a1f32c70aa60837a9b19baa37d9 100644 |
| --- a/content/renderer/media/media_stream_dispatcher_unittest.cc |
| +++ b/content/renderer/media/media_stream_dispatcher_unittest.cc |
| @@ -26,11 +26,13 @@ namespace { |
| const int kRouteId = 0; |
| const int kAudioSessionId = 3; |
| const int kVideoSessionId = 5; |
| +const int kScreenSessionId = 7; |
| const int kRequestId1 = 10; |
| const int kRequestId2 = 20; |
| const MediaStreamType kAudioType = MEDIA_DEVICE_AUDIO_CAPTURE; |
| const MediaStreamType kVideoType = MEDIA_DEVICE_VIDEO_CAPTURE; |
| +const MediaStreamType kScreenType = MEDIA_DESKTOP_VIDEO_CAPTURE; |
| class MockMediaStreamDispatcherEventHandler |
| : public MediaStreamDispatcherEventHandler, |
| @@ -378,4 +380,72 @@ TEST_F(MediaStreamDispatcherTest, DeviceClosed) { |
| StreamDeviceInfo::kNoId); |
| } |
| +TEST_F(MediaStreamDispatcherTest, GetVideoCaptureDevices) { |
| + std::unique_ptr<MediaStreamDispatcher> dispatcher( |
| + new MediaStreamDispatcher(NULL)); |
|
tommi (sloooow) - chröme
2017/03/21 09:21:17
nullptr
braveyao
2017/03/22 00:45:32
Done.
|
| + std::unique_ptr<MockMediaStreamDispatcherEventHandler> handler( |
| + new MockMediaStreamDispatcherEventHandler); |
| + url::Origin security_origin; |
| + |
| + StreamDeviceInfo video_device_info; |
| + video_device_info.device.name = "Camera"; |
| + video_device_info.device.id = "device_path"; |
| + video_device_info.device.type = kVideoType; |
| + video_device_info.session_id = kVideoSessionId; |
| + |
| + StreamDeviceInfo screen_device_info; |
| + screen_device_info.device.name = "Screen"; |
| + screen_device_info.device.id = "screen_capture"; |
| + screen_device_info.device.type = kScreenType; |
| + screen_device_info.session_id = kScreenSessionId; |
| + |
| + EXPECT_EQ(dispatcher->requests_.size(), size_t(0)); |
|
tommi (sloooow) - chröme
2017/03/21 09:21:17
EXPECT_TRUE(dispatcher->requests_.empty());
In Ch
braveyao
2017/03/22 00:45:32
Acknowledged.
Done.
|
| + EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(0)); |
| + |
| + int ipc_request_id1 = dispatcher->next_ipc_id_; |
| + dispatcher->OpenDevice(kRequestId1, handler.get()->AsWeakPtr(), |
| + video_device_info.device.id, kVideoType, |
| + security_origin); |
| + int ipc_request_id2 = dispatcher->next_ipc_id_; |
| + EXPECT_NE(ipc_request_id1, ipc_request_id2); |
| + dispatcher->OpenDevice(kRequestId2, handler.get()->AsWeakPtr(), |
| + screen_device_info.device.id, kScreenType, |
| + 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_id1, stream_label1, video_device_info)); |
| + EXPECT_EQ(handler->request_id_, kRequestId1); |
| + |
| + // Complete the OpenDevice of request 2. |
| + std::string stream_label2 = std::string("stream2"); |
| + dispatcher->OnMessageReceived(MediaStreamMsg_DeviceOpened( |
| + kRouteId, ipc_request_id2, stream_label2, screen_device_info)); |
| + EXPECT_EQ(handler->request_id_, kRequestId2); |
| + |
| + EXPECT_EQ(dispatcher->requests_.size(), size_t(0)); |
| + EXPECT_EQ(dispatcher->label_stream_map_.size(), size_t(2)); |
| + |
| + // Only the device with |kVideoType| will be got. |
| + StreamDeviceInfoArray video_device_array; |
| + dispatcher->GetVideoCaptureDevices(video_device_array); |
| + EXPECT_EQ(video_device_array.size(), size_t(1)); |
| + |
| + // Close the device from request 2. |
| + dispatcher->CloseDevice(stream_label2); |
| + EXPECT_EQ(dispatcher->video_session_id(stream_label2, 0), |
| + StreamDeviceInfo::kNoId); |
| + |
| + // Close the device from request 1. |
| + dispatcher->CloseDevice(stream_label1); |
| + EXPECT_EQ(dispatcher->video_session_id(stream_label1, 0), |
| + StreamDeviceInfo::kNoId); |
| + |
| + // 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)); |
| +} |
| + |
| } // namespace content |