| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 #include "content/common/media/video_capture_messages.h" | 6 #include "content/common/media/video_capture_messages.h" |
| 7 #include "content/renderer/media/video_capture_impl.h" | 7 #include "content/renderer/media/video_capture_impl.h" |
| 8 #include "testing/gmock/include/gmock/gmock.h" | 8 #include "testing/gmock/include/gmock/gmock.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| 11 using ::testing::_; | 11 using ::testing::_; |
| 12 using ::testing::AtLeast; | 12 using ::testing::AtLeast; |
| 13 using ::testing::Return; | 13 using ::testing::Return; |
| 14 | 14 |
| 15 #define CAPABILITY_SMALL {176, 144, 30, 0, media::VideoFrame::I420, \ | 15 #define CAPABILITY_SMALL {176, 144, 30, media::VideoFrame::I420, 0, \ |
| 16 false } | 16 false } |
| 17 #define CAPABILITY_LARGE {320, 240, 30, 0, media::VideoFrame::I420, \ | 17 #define CAPABILITY_LARGE {320, 240, 30, media::VideoFrame::I420, 0, \ |
| 18 false } | 18 false } |
| 19 | 19 |
| 20 class MockVideoCaptureMessageFilter : public VideoCaptureMessageFilter { | 20 class MockVideoCaptureMessageFilter : public VideoCaptureMessageFilter { |
| 21 public: | 21 public: |
| 22 MockVideoCaptureMessageFilter() : VideoCaptureMessageFilter() {} | 22 MockVideoCaptureMessageFilter() : VideoCaptureMessageFilter() {} |
| 23 virtual ~MockVideoCaptureMessageFilter() {} | 23 virtual ~MockVideoCaptureMessageFilter() {} |
| 24 | 24 |
| 25 // Filter implementation. | 25 // Filter implementation. |
| 26 MOCK_METHOD1(Send, bool(IPC::Message* message)); | 26 MOCK_METHOD1(Send, bool(IPC::Message* message)); |
| 27 | 27 |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 media::VideoCaptureSessionId session_id_; | 123 media::VideoCaptureSessionId session_id_; |
| 124 MockVideoCaptureImpl* video_capture_impl_; | 124 MockVideoCaptureImpl* video_capture_impl_; |
| 125 | 125 |
| 126 private: | 126 private: |
| 127 DISALLOW_COPY_AND_ASSIGN(VideoCaptureImplTest); | 127 DISALLOW_COPY_AND_ASSIGN(VideoCaptureImplTest); |
| 128 }; | 128 }; |
| 129 | 129 |
| 130 TEST_F(VideoCaptureImplTest, Simple) { | 130 TEST_F(VideoCaptureImplTest, Simple) { |
| 131 // Execute SetCapture() and StopCapture() for one client. | 131 // Execute SetCapture() and StopCapture() for one client. |
| 132 scoped_ptr<MockVideoCaptureClient> client(new MockVideoCaptureClient); | 132 scoped_ptr<MockVideoCaptureClient> client(new MockVideoCaptureClient); |
| 133 media::VideoCapture::VideoCaptureCapability capability = | 133 media::VideoCaptureCapability capability = CAPABILITY_SMALL; |
| 134 CAPABILITY_SMALL; | |
| 135 | 134 |
| 136 EXPECT_CALL(*client, OnStarted(_)) | 135 EXPECT_CALL(*client, OnStarted(_)) |
| 137 .WillOnce(Return()); | 136 .WillOnce(Return()); |
| 138 EXPECT_CALL(*client, OnDeviceInfoReceived(_,_)) | 137 EXPECT_CALL(*client, OnDeviceInfoReceived(_,_)) |
| 139 .WillOnce(Return()); | 138 .WillOnce(Return()); |
| 140 | 139 |
| 141 video_capture_impl_->StartCapture(client.get(), capability); | 140 video_capture_impl_->StartCapture(client.get(), capability); |
| 142 message_loop_->RunAllPending(); | 141 message_loop_->RunAllPending(); |
| 143 | 142 |
| 144 EXPECT_CALL(*client, OnStopped(_)) | 143 EXPECT_CALL(*client, OnStopped(_)) |
| 145 .WillOnce(Return()); | 144 .WillOnce(Return()); |
| 146 EXPECT_CALL(*client, OnRemoved(_)) | 145 EXPECT_CALL(*client, OnRemoved(_)) |
| 147 .WillOnce(Return()); | 146 .WillOnce(Return()); |
| 148 | 147 |
| 149 video_capture_impl_->StopCapture(client.get()); | 148 video_capture_impl_->StopCapture(client.get()); |
| 150 message_loop_->RunAllPending(); | 149 message_loop_->RunAllPending(); |
| 151 } | 150 } |
| 152 | 151 |
| 153 TEST_F(VideoCaptureImplTest, TwoClientsInSequence) { | 152 TEST_F(VideoCaptureImplTest, TwoClientsInSequence) { |
| 154 // Execute SetCapture() and StopCapture() for 2 clients in sequence. | 153 // Execute SetCapture() and StopCapture() for 2 clients in sequence. |
| 155 scoped_ptr<MockVideoCaptureClient> client(new MockVideoCaptureClient); | 154 scoped_ptr<MockVideoCaptureClient> client(new MockVideoCaptureClient); |
| 156 media::VideoCapture::VideoCaptureCapability capability = | 155 media::VideoCaptureCapability capability = CAPABILITY_SMALL; |
| 157 CAPABILITY_SMALL; | |
| 158 | 156 |
| 159 EXPECT_CALL(*client, OnStarted(_)) | 157 EXPECT_CALL(*client, OnStarted(_)) |
| 160 .WillOnce(Return()); | 158 .WillOnce(Return()); |
| 161 EXPECT_CALL(*client, OnDeviceInfoReceived(_,_)) | 159 EXPECT_CALL(*client, OnDeviceInfoReceived(_,_)) |
| 162 .WillOnce(Return()); | 160 .WillOnce(Return()); |
| 163 | 161 |
| 164 video_capture_impl_->StartCapture(client.get(), capability); | 162 video_capture_impl_->StartCapture(client.get(), capability); |
| 165 message_loop_->RunAllPending(); | 163 message_loop_->RunAllPending(); |
| 166 | 164 |
| 167 EXPECT_CALL(*client, OnStopped(_)) | 165 EXPECT_CALL(*client, OnStopped(_)) |
| (...skipping 19 matching lines...) Expand all Loading... |
| 187 | 185 |
| 188 video_capture_impl_->StopCapture(client.get()); | 186 video_capture_impl_->StopCapture(client.get()); |
| 189 message_loop_->RunAllPending(); | 187 message_loop_->RunAllPending(); |
| 190 } | 188 } |
| 191 | 189 |
| 192 TEST_F(VideoCaptureImplTest, LargeAndSmall) { | 190 TEST_F(VideoCaptureImplTest, LargeAndSmall) { |
| 193 // Execute SetCapture() and StopCapture() for 2 clients simultaneously. | 191 // Execute SetCapture() and StopCapture() for 2 clients simultaneously. |
| 194 // The large client starts first and stops first. | 192 // The large client starts first and stops first. |
| 195 scoped_ptr<MockVideoCaptureClient> client_small(new MockVideoCaptureClient); | 193 scoped_ptr<MockVideoCaptureClient> client_small(new MockVideoCaptureClient); |
| 196 scoped_ptr<MockVideoCaptureClient> client_large(new MockVideoCaptureClient); | 194 scoped_ptr<MockVideoCaptureClient> client_large(new MockVideoCaptureClient); |
| 197 media::VideoCapture::VideoCaptureCapability capability_small = | 195 media::VideoCaptureCapability capability_small = CAPABILITY_SMALL; |
| 198 CAPABILITY_SMALL; | 196 media::VideoCaptureCapability capability_large = CAPABILITY_LARGE; |
| 199 media::VideoCapture::VideoCaptureCapability capability_large = | |
| 200 CAPABILITY_LARGE; | |
| 201 | 197 |
| 202 EXPECT_CALL(*client_large, OnStarted(_)) | 198 EXPECT_CALL(*client_large, OnStarted(_)) |
| 203 .WillOnce(Return()); | 199 .WillOnce(Return()); |
| 204 EXPECT_CALL(*client_large, OnDeviceInfoReceived(_,_)) | 200 EXPECT_CALL(*client_large, OnDeviceInfoReceived(_,_)) |
| 205 .WillOnce(Return()); | 201 .WillOnce(Return()); |
| 206 EXPECT_CALL(*client_small, OnStarted(_)) | 202 EXPECT_CALL(*client_small, OnStarted(_)) |
| 207 .WillOnce(Return()); | 203 .WillOnce(Return()); |
| 208 EXPECT_CALL(*client_small, OnDeviceInfoReceived(_,_)) | 204 EXPECT_CALL(*client_small, OnDeviceInfoReceived(_,_)) |
| 209 .WillOnce(Return()); | 205 .WillOnce(Return()); |
| 210 | 206 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 224 video_capture_impl_->StopCapture(client_large.get()); | 220 video_capture_impl_->StopCapture(client_large.get()); |
| 225 video_capture_impl_->StopCapture(client_small.get()); | 221 video_capture_impl_->StopCapture(client_small.get()); |
| 226 message_loop_->RunAllPending(); | 222 message_loop_->RunAllPending(); |
| 227 } | 223 } |
| 228 | 224 |
| 229 TEST_F(VideoCaptureImplTest, SmallAndLarge) { | 225 TEST_F(VideoCaptureImplTest, SmallAndLarge) { |
| 230 // Execute SetCapture() and StopCapture() for 2 clients simultaneously. | 226 // Execute SetCapture() and StopCapture() for 2 clients simultaneously. |
| 231 // The small client starts first and stops first. | 227 // The small client starts first and stops first. |
| 232 scoped_ptr<MockVideoCaptureClient> client_small(new MockVideoCaptureClient); | 228 scoped_ptr<MockVideoCaptureClient> client_small(new MockVideoCaptureClient); |
| 233 scoped_ptr<MockVideoCaptureClient> client_large(new MockVideoCaptureClient); | 229 scoped_ptr<MockVideoCaptureClient> client_large(new MockVideoCaptureClient); |
| 234 media::VideoCapture::VideoCaptureCapability capability_small = | 230 media::VideoCaptureCapability capability_small = CAPABILITY_SMALL; |
| 235 CAPABILITY_SMALL; | 231 media::VideoCaptureCapability capability_large = CAPABILITY_LARGE; |
| 236 media::VideoCapture::VideoCaptureCapability capability_large = | |
| 237 CAPABILITY_LARGE; | |
| 238 | 232 |
| 239 EXPECT_CALL(*client_large, OnStarted(_)) | 233 EXPECT_CALL(*client_large, OnStarted(_)) |
| 240 .WillOnce(Return()); | 234 .WillOnce(Return()); |
| 241 EXPECT_CALL(*client_large, OnDeviceInfoReceived(_,_)) | 235 EXPECT_CALL(*client_large, OnDeviceInfoReceived(_,_)) |
| 242 .WillOnce(Return()); | 236 .WillOnce(Return()); |
| 243 EXPECT_CALL(*client_small, OnStarted(_)) | 237 EXPECT_CALL(*client_small, OnStarted(_)) |
| 244 .WillOnce(Return()); | 238 .WillOnce(Return()); |
| 245 EXPECT_CALL(*client_small, OnDeviceInfoReceived(_,_)) | 239 EXPECT_CALL(*client_small, OnDeviceInfoReceived(_,_)) |
| 246 .Times(AtLeast(1)) | 240 .Times(AtLeast(1)) |
| 247 .WillRepeatedly(Return()); | 241 .WillRepeatedly(Return()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 262 video_capture_impl_->StopCapture(client_small.get()); | 256 video_capture_impl_->StopCapture(client_small.get()); |
| 263 video_capture_impl_->StopCapture(client_large.get()); | 257 video_capture_impl_->StopCapture(client_large.get()); |
| 264 message_loop_->RunAllPending(); | 258 message_loop_->RunAllPending(); |
| 265 } | 259 } |
| 266 | 260 |
| 267 TEST_F(VideoCaptureImplTest, TwoClientsWithSameSize) { | 261 TEST_F(VideoCaptureImplTest, TwoClientsWithSameSize) { |
| 268 // Execute SetCapture() and StopCapture() for 2 clients simultaneously. | 262 // Execute SetCapture() and StopCapture() for 2 clients simultaneously. |
| 269 // The client1 starts first and stops first. | 263 // The client1 starts first and stops first. |
| 270 scoped_ptr<MockVideoCaptureClient> client1(new MockVideoCaptureClient); | 264 scoped_ptr<MockVideoCaptureClient> client1(new MockVideoCaptureClient); |
| 271 scoped_ptr<MockVideoCaptureClient> client2(new MockVideoCaptureClient); | 265 scoped_ptr<MockVideoCaptureClient> client2(new MockVideoCaptureClient); |
| 272 media::VideoCapture::VideoCaptureCapability capability = CAPABILITY_SMALL; | 266 media::VideoCaptureCapability capability = CAPABILITY_SMALL; |
| 273 | 267 |
| 274 EXPECT_CALL(*client1, OnStarted(_)) | 268 EXPECT_CALL(*client1, OnStarted(_)) |
| 275 .WillOnce(Return()); | 269 .WillOnce(Return()); |
| 276 EXPECT_CALL(*client1, OnDeviceInfoReceived(_,_)) | 270 EXPECT_CALL(*client1, OnDeviceInfoReceived(_,_)) |
| 277 .WillOnce(Return()); | 271 .WillOnce(Return()); |
| 278 EXPECT_CALL(*client2, OnStarted(_)) | 272 EXPECT_CALL(*client2, OnStarted(_)) |
| 279 .WillOnce(Return()); | 273 .WillOnce(Return()); |
| 280 EXPECT_CALL(*client2, OnDeviceInfoReceived(_,_)) | 274 EXPECT_CALL(*client2, OnDeviceInfoReceived(_,_)) |
| 281 .WillOnce(Return()); | 275 .WillOnce(Return()); |
| 282 | 276 |
| 283 video_capture_impl_->StartCapture(client1.get(), capability); | 277 video_capture_impl_->StartCapture(client1.get(), capability); |
| 284 video_capture_impl_->StartCapture(client2.get(), capability); | 278 video_capture_impl_->StartCapture(client2.get(), capability); |
| 285 message_loop_->RunAllPending(); | 279 message_loop_->RunAllPending(); |
| 286 | 280 |
| 287 EXPECT_CALL(*client1, OnStopped(_)) | 281 EXPECT_CALL(*client1, OnStopped(_)) |
| 288 .WillOnce(Return()); | 282 .WillOnce(Return()); |
| 289 EXPECT_CALL(*client1, OnRemoved(_)) | 283 EXPECT_CALL(*client1, OnRemoved(_)) |
| 290 .WillOnce(Return()); | 284 .WillOnce(Return()); |
| 291 EXPECT_CALL(*client2, OnStopped(_)) | 285 EXPECT_CALL(*client2, OnStopped(_)) |
| 292 .WillOnce(Return()); | 286 .WillOnce(Return()); |
| 293 EXPECT_CALL(*client2, OnRemoved(_)) | 287 EXPECT_CALL(*client2, OnRemoved(_)) |
| 294 .WillOnce(Return()); | 288 .WillOnce(Return()); |
| 295 | 289 |
| 296 video_capture_impl_->StopCapture(client1.get()); | 290 video_capture_impl_->StopCapture(client1.get()); |
| 297 video_capture_impl_->StopCapture(client2.get()); | 291 video_capture_impl_->StopCapture(client2.get()); |
| 298 message_loop_->RunAllPending(); | 292 message_loop_->RunAllPending(); |
| 299 } | 293 } |
| OLD | NEW |