Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Side by Side Diff: content/browser/renderer_host/media/video_capture_manager_unittest.cc

Issue 29423003: Added video capture capabilities retrieval and caching to VideoCaptureManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changed mechanics of Caps enumeration to be asynchronous and 2 threaded. UT adapted. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 22 matching lines...) Expand all
33 public: 33 public:
34 MockMediaStreamProviderListener() {} 34 MockMediaStreamProviderListener() {}
35 ~MockMediaStreamProviderListener() {} 35 ~MockMediaStreamProviderListener() {}
36 36
37 MOCK_METHOD2(Opened, void(MediaStreamType, int)); 37 MOCK_METHOD2(Opened, void(MediaStreamType, int));
38 MOCK_METHOD2(Closed, void(MediaStreamType, int)); 38 MOCK_METHOD2(Closed, void(MediaStreamType, int));
39 MOCK_METHOD2(DevicesEnumerated, void(MediaStreamType, 39 MOCK_METHOD2(DevicesEnumerated, void(MediaStreamType,
40 const StreamDeviceInfoArray&)); 40 const StreamDeviceInfoArray&));
41 MOCK_METHOD3(Error, void(MediaStreamType, int, 41 MOCK_METHOD3(Error, void(MediaStreamType, int,
42 MediaStreamProviderError)); 42 MediaStreamProviderError));
43 MOCK_METHOD2(
44 DeviceCapabilitiesEnumerated,
45 void(const StreamDeviceInfo&, const media::VideoCaptureCapabilities&));
43 }; // class MockMediaStreamProviderListener 46 }; // class MockMediaStreamProviderListener
44 47
45 // Needed as an input argument to StartCaptureForClient(). 48 // Needed as an input argument to StartCaptureForClient().
46 class MockFrameObserver : public VideoCaptureControllerEventHandler { 49 class MockFrameObserver : public VideoCaptureControllerEventHandler {
47 public: 50 public:
48 MOCK_METHOD1(OnError, void(const VideoCaptureControllerID& id)); 51 MOCK_METHOD1(OnError, void(const VideoCaptureControllerID& id));
49 52
50 virtual void OnBufferCreated(const VideoCaptureControllerID& id, 53 virtual void OnBufferCreated(const VideoCaptureControllerID& id,
51 base::SharedMemoryHandle handle, 54 base::SharedMemoryHandle handle,
52 int length, int buffer_id) OVERRIDE {} 55 int length, int buffer_id) OVERRIDE {}
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 VideoCaptureControllerID client_id = StartClient(video_session_id, true); 157 VideoCaptureControllerID client_id = StartClient(video_session_id, true);
155 158
156 StopClient(client_id); 159 StopClient(client_id);
157 vcm_->Close(video_session_id); 160 vcm_->Close(video_session_id);
158 161
159 // Wait to check callbacks before removing the listener. 162 // Wait to check callbacks before removing the listener.
160 message_loop_->RunUntilIdle(); 163 message_loop_->RunUntilIdle();
161 vcm_->Unregister(); 164 vcm_->Unregister();
162 } 165 }
163 166
167 // Try to enumerate devices, then check their capture capabilities.
168 TEST_F(VideoCaptureManagerTest, EnumerateDevicesAndCheckCapabilities) {
169 StreamDeviceInfoArray devices;
170
171 InSequence s;
172 EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
173 .Times(1).WillOnce(SaveArg<1>(&devices));
174 vcm_->EnumerateDevices(MEDIA_DEVICE_VIDEO_CAPTURE);
175 message_loop_->RunUntilIdle();
176
tommi (sloooow) - chröme 2013/10/25 14:15:34 1 empty line
mcasas 2013/10/28 12:50:08 Done.
177
178 media::VideoCaptureCapabilities device_capabilities;
179 StreamDeviceInfoArray::iterator device_it;
180 for (device_it = devices.begin(); device_it != devices.end(); ++device_it) {
181 EXPECT_CALL(*listener_, DeviceCapabilitiesEnumerated(_, _))
182 .Times(1).WillOnce(SaveArg<1>(&device_capabilities));
183
184 vcm_->EnumerateDeviceCapabilities(*device_it);
185 message_loop_->RunUntilIdle();
tommi (sloooow) - chröme 2013/10/25 14:15:34 can you add a comment that explains what happens d
mcasas 2013/10/28 12:50:08 (Tentatively) Done.
186 DCHECK_GE(device_capabilities.size(), 1u);
tommi (sloooow) - chröme 2013/10/25 14:15:34 ASSERT_GE?
mcasas 2013/10/28 12:50:08 Hmm device documentation says devices may return e
187
188 media::VideoCaptureCapabilities::const_iterator format;
189 for (format = device_capabilities.begin();
190 format != device_capabilities.end();
191 ++format) {
192 DCHECK_GE(format->width, 1);
tommi (sloooow) - chröme 2013/10/25 14:15:34 EXPECT_GE? (same below)
mcasas 2013/10/28 12:50:08 Oops :) Yes, all should be EXPECT_GE
193 DCHECK_GE(format->height, 1);
194 DCHECK_GE(format->frame_rate, 1);
195 DVLOG(1) << " Device name: " << device_it->device.name << ", format ("
196 << format->width << "x" << format->height << ")@"
197 << format->frame_rate << "fps";
198 }
199 }
200 vcm_->Unregister();
201 }
202
164 // Open the same device twice. 203 // Open the same device twice.
165 TEST_F(VideoCaptureManagerTest, OpenTwice) { 204 TEST_F(VideoCaptureManagerTest, OpenTwice) {
166 StreamDeviceInfoArray devices; 205 StreamDeviceInfoArray devices;
167 206
168 InSequence s; 207 InSequence s;
169 EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _)) 208 EXPECT_CALL(*listener_, DevicesEnumerated(MEDIA_DEVICE_VIDEO_CAPTURE, _))
170 .Times(1).WillOnce(SaveArg<1>(&devices)); 209 .Times(1).WillOnce(SaveArg<1>(&devices));
171 EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2); 210 EXPECT_CALL(*listener_, Opened(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2);
172 EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2); 211 EXPECT_CALL(*listener_, Closed(MEDIA_DEVICE_VIDEO_CAPTURE, _)).Times(2);
173 212
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 // VideoCaptureManager destructor otherwise. 324 // VideoCaptureManager destructor otherwise.
286 vcm_->Close(video_session_id); 325 vcm_->Close(video_session_id);
287 StopClient(client_id); 326 StopClient(client_id);
288 327
289 // Wait to check callbacks before removing the listener 328 // Wait to check callbacks before removing the listener
290 message_loop_->RunUntilIdle(); 329 message_loop_->RunUntilIdle();
291 vcm_->Unregister(); 330 vcm_->Unregister();
292 } 331 }
293 332
294 } // namespace content 333 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698