OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // Unit test for VideoCaptureManager. | 5 // Unit test for VideoCaptureManager. |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
154 VideoCaptureControllerID client_id = StartClient(video_session_id, true); | 154 VideoCaptureControllerID client_id = StartClient(video_session_id, true); |
155 | 155 |
156 StopClient(client_id); | 156 StopClient(client_id); |
157 vcm_->Close(video_session_id); | 157 vcm_->Close(video_session_id); |
158 | 158 |
159 // Wait to check callbacks before removing the listener. | 159 // Wait to check callbacks before removing the listener. |
160 message_loop_->RunUntilIdle(); | 160 message_loop_->RunUntilIdle(); |
161 vcm_->Unregister(); | 161 vcm_->Unregister(); |
162 } | 162 } |
163 | 163 |
164 // Open the same device twice. | 164 // Enumerate devices and open the first, then check the capabilities. Then start |
165 TEST_F(VideoCaptureManagerTest, OpenTwice) { | 165 // the opened device. The capability list should be reduced to just one format, |
166 // and this should be the one used when configuring-starting the device. Finally | |
167 // stop the device and check that the capabilities have been restored. | |
168 TEST_F(VideoCaptureManagerTest, ManipulateDeviceAndCheckCapabilities) { | |
perkj_chrome
2013/11/05 09:34:34
Please keep the old test and add a new test for te
mcasas
2013/11/05 22:46:06
Sure, I don't know how I removed the old one :S
| |
166 StreamDeviceInfoArray devices; | 169 StreamDeviceInfoArray devices; |
167 | 170 |
168 InSequence s; | 171 InSequence s; |
169 EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _)) | 172 EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _)) |
170 .Times(1).WillOnce(SaveArg<1>(&devices)); | 173 .Times(1) |
171 EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2); | 174 .WillOnce(SaveArg<1>(&devices)); |
172 EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2); | |
173 | |
174 vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE); | 175 vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE); |
175 | |
176 // Wait to get device callback. | |
177 message_loop_->RunUntilIdle(); | 176 message_loop_->RunUntilIdle(); |
178 | 177 |
179 int video_session_id_first = vcm_->Open(devices.front()); | 178 EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(1); |
179 int video_session_id = vcm_->Open(devices.front()); | |
180 message_loop_->RunUntilIdle(); | |
180 | 181 |
181 // This should trigger an error callback with error code | 182 // When the device has been opened, we should see all the devices' |
182 // 'kDeviceAlreadyInUse'. | 183 // capabilities. |
183 int video_session_id_second = vcm_->Open(devices.front()); | 184 media::VideoCaptureCapabilities device_capabilities; |
184 EXPECT_NE(video_session_id_first, video_session_id_second); | 185 vcm_->GetDeviceCapabilities(video_session_id, &device_capabilities); |
186 ASSERT_EQ(device_capabilities.size(), 2u); | |
187 media::VideoCaptureCapabilities::const_iterator format; | |
perkj_chrome
2013/11/05 09:34:34
declare where you use it.
mcasas
2013/11/05 22:46:06
Interestingly enough, the compiler did not warn ab
| |
188 EXPECT_EQ(device_capabilities[0].width, 640); | |
perkj_chrome
2013/11/05 09:34:34
Is this relevant? ie - do you really care about ab
mcasas
2013/11/05 22:46:06
Wouldn't we like to break-adapt if fake device cha
| |
189 EXPECT_EQ(device_capabilities[0].height, 480); | |
190 EXPECT_EQ(device_capabilities[0].frame_rate, 20); | |
191 EXPECT_EQ(device_capabilities[1].width, 320); | |
192 EXPECT_EQ(device_capabilities[1].height, 240); | |
193 EXPECT_EQ(device_capabilities[1].frame_rate, 20); | |
185 | 194 |
186 vcm_->Close(video_session_id_first); | 195 VideoCaptureControllerID client_id = StartClient(video_session_id, true); |
187 vcm_->Close(video_session_id_second); | 196 message_loop_->RunUntilIdle(); |
197 // After StartClient(), the device's list of capabilities should be reduced | |
198 // to one, coinciding with the configured inside that method: 320x240@30fps. | |
199 vcm_->GetDeviceCapabilities(video_session_id, &device_capabilities); | |
200 ASSERT_EQ(device_capabilities.size(), 1u); | |
201 EXPECT_EQ(device_capabilities[0].width, 320); | |
perkj_chrome
2013/11/05 09:34:34
This should probably verify that device_capabiliti
mcasas
2013/11/05 22:46:06
Again, overly cautious but hey, you're the owner.
| |
202 EXPECT_EQ(device_capabilities[0].height, 240); | |
203 EXPECT_EQ(device_capabilities[0].frame_rate, 30); | |
188 | 204 |
189 // Wait to check callbacks before removing the listener. | 205 EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(1); |
206 StopClient(client_id); | |
207 message_loop_->RunUntilIdle(); | |
208 // After StopClient(), the device's list of capabilities should be restored | |
209 // to the original one. | |
210 vcm_->GetDeviceCapabilities(video_session_id, &device_capabilities); | |
211 ASSERT_EQ(device_capabilities.size(), 2u); | |
212 EXPECT_EQ(device_capabilities[0].width, 640); | |
213 EXPECT_EQ(device_capabilities[0].height, 480); | |
214 EXPECT_EQ(device_capabilities[0].frame_rate, 20); | |
215 EXPECT_EQ(device_capabilities[1].width, 320); | |
216 EXPECT_EQ(device_capabilities[1].height, 240); | |
217 EXPECT_EQ(device_capabilities[1].frame_rate, 20); | |
218 | |
219 vcm_->Close(video_session_id); | |
190 message_loop_->RunUntilIdle(); | 220 message_loop_->RunUntilIdle(); |
191 vcm_->Unregister(); | 221 vcm_->Unregister(); |
192 } | 222 } |
193 | 223 |
194 // Open two different devices. | 224 // Open two different devices. |
195 TEST_F(VideoCaptureManagerTest, OpenTwo) { | 225 TEST_F(VideoCaptureManagerTest, OpenTwo) { |
196 StreamDeviceInfoArray devices; | 226 StreamDeviceInfoArray devices; |
197 | 227 |
198 InSequence s; | 228 InSequence s; |
199 EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _)) | 229 EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _)) |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
285 // VideoCaptureManager destructor otherwise. | 315 // VideoCaptureManager destructor otherwise. |
286 vcm_->Close(video_session_id); | 316 vcm_->Close(video_session_id); |
287 StopClient(client_id); | 317 StopClient(client_id); |
288 | 318 |
289 // Wait to check callbacks before removing the listener | 319 // Wait to check callbacks before removing the listener |
290 message_loop_->RunUntilIdle(); | 320 message_loop_->RunUntilIdle(); |
291 vcm_->Unregister(); | 321 vcm_->Unregister(); |
292 } | 322 } |
293 | 323 |
294 } // namespace content | 324 } // namespace content |
OLD | NEW |