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

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

Issue 7192007: Adding error signalling from device to VideocaptureManager to relay up to MediaStream and WebKit. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Adding the gyp-files. Created 9 years, 6 months 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 | Annotate | Revision Log
OLDNEW
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 // Unit test for VideoCaptureManager 5 // Unit test for VideoCaptureManager
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
11 #include "base/process_util.h" 11 #include "base/process_util.h"
12 #include "content/browser/browser_thread.h" 12 #include "content/browser/browser_thread.h"
13 #include "content/browser/renderer_host/media/media_stream_provider.h" 13 #include "content/browser/renderer_host/media/media_stream_provider.h"
14 #include "content/browser/renderer_host/media/video_capture_manager.h" 14 #include "content/browser/renderer_host/media/video_capture_manager.h"
15 #include "content/common/media/media_stream_options.h"
15 #include "media/video/capture/video_capture_device.h" 16 #include "media/video/capture/video_capture_device.h"
16 #include "testing/gmock/include/gmock/gmock.h" 17 #include "testing/gmock/include/gmock/gmock.h"
17 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
18 19
19 using ::testing::_; 20 using ::testing::_;
20 using ::testing::AnyNumber; 21 using ::testing::AnyNumber;
21 using ::testing::InSequence; 22 using ::testing::InSequence;
22 using ::testing::Return; 23 using ::testing::Return;
23 24
24 namespace media_stream { 25 namespace media_stream {
25 26
26 // Listener class used to track progress of VideoCaptureManager test 27 // Listener class used to track progress of VideoCaptureManager test
27 class MockMediaStreamProviderListener : public MediaStreamProviderListener { 28 class MockMediaStreamProviderListener : public MediaStreamProviderListener {
28 public: 29 public:
29 MockMediaStreamProviderListener() 30 MockMediaStreamProviderListener()
30 : devices_() { 31 : devices_() {
31 } 32 }
32 ~MockMediaStreamProviderListener() {} 33 ~MockMediaStreamProviderListener() {}
33 34
34 MOCK_METHOD2(Opened, void(MediaStreamType, MediaCaptureSessionId)); 35 MOCK_METHOD2(Opened, void(MediaStreamType, int));
35 MOCK_METHOD2(Closed, void(MediaStreamType, MediaCaptureSessionId)); 36 MOCK_METHOD2(Closed, void(MediaStreamType, int));
36 MOCK_METHOD1(DevicesEnumerated, void(const MediaCaptureDevices&)); 37 MOCK_METHOD1(DevicesEnumerated, void(const StreamDeviceInfoArray&));
37 MOCK_METHOD3(Error, void(MediaStreamType, MediaCaptureSessionId, 38 MOCK_METHOD3(Error, void(MediaStreamType, int,
38 MediaStreamProviderError)); 39 MediaStreamProviderError));
39 40
40 virtual void DevicesEnumerated(MediaStreamType stream_type, 41 virtual void DevicesEnumerated(MediaStreamType stream_type,
41 const MediaCaptureDevices& devices) { 42 const StreamDeviceInfoArray& devices) {
42 devices_.clear(); 43 devices_.clear();
43 for (MediaCaptureDevices::const_iterator it = devices.begin(); 44 for (StreamDeviceInfoArray::const_iterator it = devices.begin();
44 it != devices.end(); 45 it != devices.end();
45 ++it) { 46 ++it) {
46 devices_.push_back(*it); 47 devices_.push_back(*it);
47 } 48 }
48 DevicesEnumerated(devices); 49 DevicesEnumerated(devices);
49 } 50 }
50 51
51 media_stream::MediaCaptureDevices devices_; 52 media_stream::StreamDeviceInfoArray devices_;
52 }; // class MockMediaStreamProviderListener 53 }; // class MockMediaStreamProviderListener
53 54
54 } // namespace media_stream 55 } // namespace media_stream
55 56
56 namespace { 57 namespace {
57 58
58 // Needed as an input argument to Start() 59 // Needed as an input argument to Start()
59 class MockFrameObserver: public media::VideoCaptureDevice::EventHandler { 60 class MockFrameObserver: public media::VideoCaptureDevice::EventHandler {
60 public: 61 public:
61 virtual void OnError() {} 62 virtual void OnError() {}
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 media_stream::VideoCaptureManager* vcm = 206 media_stream::VideoCaptureManager* vcm =
206 media_stream::VideoCaptureManager::Get(); 207 media_stream::VideoCaptureManager::Get();
207 // Make sure fake devices are used 208 // Make sure fake devices are used
208 vcm->UseFakeDevice(); 209 vcm->UseFakeDevice();
209 vcm->Register(listener_.get()); 210 vcm->Register(listener_.get());
210 vcm->EnumerateDevices(); 211 vcm->EnumerateDevices();
211 212
212 // Wait to get device callback... 213 // Wait to get device callback...
213 SyncWithVideoCaptureManagerThread(); 214 SyncWithVideoCaptureManagerThread();
214 215
215 media_stream::MediaCaptureDevices::iterator it = 216 media_stream::StreamDeviceInfoArray::iterator it =
216 listener_->devices_.begin(); 217 listener_->devices_.begin();
217 218
218 int video_session_id_first = vcm->Open(*it); 219 int video_session_id_first = vcm->Open(*it);
219 220
220 // This should trigger an error callback with error code 'kDeviceAlreadyInUse' 221 // This should trigger an error callback with error code 'kDeviceAlreadyInUse'
221 ++it; 222 ++it;
222 int video_session_id_second = vcm->Open(*it); 223 int video_session_id_second = vcm->Open(*it);
223 224
224 vcm->Close(video_session_id_first); 225 vcm->Close(video_session_id_first);
225 vcm->Close(video_session_id_second); 226 vcm->Close(video_session_id_second);
(...skipping 18 matching lines...) Expand all
244 vcm->UseFakeDevice(); 245 vcm->UseFakeDevice();
245 vcm->Register(listener_.get()); 246 vcm->Register(listener_.get());
246 vcm->EnumerateDevices(); 247 vcm->EnumerateDevices();
247 248
248 // Wait to get device callback... 249 // Wait to get device callback...
249 SyncWithVideoCaptureManagerThread(); 250 SyncWithVideoCaptureManagerThread();
250 251
251 media_stream::MediaStreamType stream_type = media_stream::kVideoCapture; 252 media_stream::MediaStreamType stream_type = media_stream::kVideoCapture;
252 std::string device_name("device_doesnt_exist"); 253 std::string device_name("device_doesnt_exist");
253 std::string device_id("id_doesnt_exist"); 254 std::string device_id("id_doesnt_exist");
254 media_stream::MediaCaptureDeviceInfo dummy_device(stream_type, device_name, 255 media_stream::StreamDeviceInfo dummy_device(stream_type, device_name,
255 device_id, false); 256 device_id, false);
256 257
257 // This should fail with error code 'kDeviceNotAvailable' 258 // This should fail with error code 'kDeviceNotAvailable'
258 vcm->Open(dummy_device); 259 vcm->Open(dummy_device);
259 260
260 // Wait to check callbacks before removing the listener 261 // Wait to check callbacks before removing the listener
261 SyncWithVideoCaptureManagerThread(); 262 SyncWithVideoCaptureManagerThread();
262 vcm->Unregister(); 263 vcm->Unregister();
263 } 264 }
264 265
265 // Start a device using "magic" id, i.e. call Start without calling Open. 266 // Start a device using "magic" id, i.e. call Start without calling Open.
(...skipping 21 matching lines...) Expand all
287 288
288 // Stop shall trigger the Close callback 289 // Stop shall trigger the Close callback
289 vcm->Stop(media_stream::VideoCaptureManager::kStartOpenSessionId, NULL); 290 vcm->Stop(media_stream::VideoCaptureManager::kStartOpenSessionId, NULL);
290 291
291 // Wait to check callbacks before removing the listener 292 // Wait to check callbacks before removing the listener
292 SyncWithVideoCaptureManagerThread(); 293 SyncWithVideoCaptureManagerThread();
293 vcm->Unregister(); 294 vcm->Unregister();
294 } 295 }
295 296
296 } // namespace 297 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698