Index: media/video/capture/video_capture_device_unittest.cc |
diff --git a/media/video/capture/video_capture_device_unittest.cc b/media/video/capture/video_capture_device_unittest.cc |
index 1742b9fb51eea638ff43b4fc7faf3b6f93aba613..afeced3dbf92300f3dc40f0c9ef1adba85a3556a 100644 |
--- a/media/video/capture/video_capture_device_unittest.cc |
+++ b/media/video/capture/video_capture_device_unittest.cc |
@@ -128,6 +128,32 @@ class VideoCaptureDeviceTest : public testing::Test { |
const VideoCaptureFormat& last_format() const { return last_format_; } |
+ scoped_ptr<VideoCaptureDevice::Name> GetFirstDeviceNameSupportingPixelFormat( |
+ const VideoPixelFormat& pixel_format) { |
+ VideoCaptureDevice::GetDeviceNames(&names_); |
+ if (!names_.size()) { |
+ DVLOG(1) << "No camera available."; |
+ return scoped_ptr<VideoCaptureDevice::Name>(); |
+ } |
+ VideoCaptureDevice::Names::iterator names_iterator; |
+ for (names_iterator = names_.begin(); names_iterator != names_.end(); |
+ ++names_iterator) { |
+ VideoCaptureFormats supported_formats; |
+ VideoCaptureDevice::GetDeviceSupportedFormats(*names_iterator, |
+ &supported_formats); |
+ VideoCaptureFormats::iterator formats_iterator; |
+ for (formats_iterator = supported_formats.begin(); |
+ formats_iterator != supported_formats.end(); ++formats_iterator) { |
+ if (formats_iterator->pixel_format == pixel_format) { |
+ return scoped_ptr<VideoCaptureDevice::Name>( |
+ new VideoCaptureDevice::Name(*names_iterator)); |
+ } |
+ } |
+ } |
+ DVLOG(1) << "No camera can capture the format: " << pixel_format; |
+ return scoped_ptr<VideoCaptureDevice::Name>(); |
+ } |
+ |
#if defined(OS_WIN) |
base::win::ScopedCOMInitializer initialize_com_; |
#endif |
@@ -161,7 +187,7 @@ TEST_F(VideoCaptureDeviceTest, CaptureVGA) { |
scoped_ptr<VideoCaptureDevice> device( |
VideoCaptureDevice::Create(names_.front())); |
- ASSERT_FALSE(device.get() == NULL); |
+ ASSERT_TRUE(device); |
DVLOG(1) << names_.front().id(); |
EXPECT_CALL(*client_, OnErr()) |
@@ -189,7 +215,7 @@ TEST_F(VideoCaptureDeviceTest, Capture720p) { |
scoped_ptr<VideoCaptureDevice> device( |
VideoCaptureDevice::Create(names_.front())); |
- ASSERT_FALSE(device.get() == NULL); |
+ ASSERT_TRUE(device); |
EXPECT_CALL(*client_, OnErr()) |
.Times(0); |
@@ -213,7 +239,7 @@ TEST_F(VideoCaptureDeviceTest, MAYBE_AllocateBadSize) { |
} |
scoped_ptr<VideoCaptureDevice> device( |
VideoCaptureDevice::Create(names_.front())); |
- ASSERT_TRUE(device.get() != NULL); |
+ ASSERT_TRUE(device); |
EXPECT_CALL(*client_, OnErr()) |
.Times(0); |
@@ -284,7 +310,7 @@ TEST_F(VideoCaptureDeviceTest, DeAllocateCameraWhileRunning) { |
} |
scoped_ptr<VideoCaptureDevice> device( |
VideoCaptureDevice::Create(names_.front())); |
- ASSERT_TRUE(device.get() != NULL); |
+ ASSERT_TRUE(device); |
EXPECT_CALL(*client_, OnErr()) |
.Times(0); |
@@ -312,7 +338,7 @@ TEST_F(VideoCaptureDeviceTest, FakeCapture) { |
scoped_ptr<VideoCaptureDevice> device( |
FakeVideoCaptureDevice::Create(names.front())); |
- ASSERT_TRUE(device.get() != NULL); |
+ ASSERT_TRUE(device); |
EXPECT_CALL(*client_, OnErr()) |
.Times(0); |
@@ -332,14 +358,14 @@ TEST_F(VideoCaptureDeviceTest, FakeCapture) { |
// Start the camera in 720p to capture MJPEG instead of a raw format. |
TEST_F(VideoCaptureDeviceTest, MAYBE_CaptureMjpeg) { |
- VideoCaptureDevice::GetDeviceNames(&names_); |
- if (!names_.size()) { |
- DVLOG(1) << "No camera available. Exiting test."; |
+ scoped_ptr<VideoCaptureDevice::Name> name = |
+ GetFirstDeviceNameSupportingPixelFormat(PIXEL_FORMAT_MJPEG); |
+ if (!name) { |
+ DVLOG(1) << "No camera supports MJPEG format. Exiting test."; |
return; |
} |
- scoped_ptr<VideoCaptureDevice> device( |
- VideoCaptureDevice::Create(names_.front())); |
- ASSERT_TRUE(device.get() != NULL); |
+ scoped_ptr<VideoCaptureDevice> device(VideoCaptureDevice::Create(*name)); |
+ ASSERT_TRUE(device); |
EXPECT_CALL(*client_, OnErr()) |
.Times(0); |
@@ -359,19 +385,13 @@ TEST_F(VideoCaptureDeviceTest, MAYBE_CaptureMjpeg) { |
} |
TEST_F(VideoCaptureDeviceTest, GetDeviceSupportedFormats) { |
- VideoCaptureDevice::GetDeviceNames(&names_); |
- if (!names_.size()) { |
- DVLOG(1) << "No camera available. Exiting test."; |
- return; |
- } |
- VideoCaptureFormats supported_formats; |
- VideoCaptureDevice::Names::iterator names_iterator; |
- for (names_iterator = names_.begin(); names_iterator != names_.end(); |
- ++names_iterator) { |
- VideoCaptureDevice::GetDeviceSupportedFormats(*names_iterator, |
- &supported_formats); |
- // Nothing to test here since we cannot forecast the hardware capabilities. |
- } |
+ // Use PIXEL_FORMAT_MAX to iterate all device names for testing |
+ // GetDeviceSupportedFormats(). |
+ scoped_ptr<VideoCaptureDevice::Name> name = |
+ GetFirstDeviceNameSupportingPixelFormat(PIXEL_FORMAT_MAX); |
+ // Verify no camera returned for PIXEL_FORMAT_MAX. Nothing else to test here |
+ // since we cannot forecast the hardware capabilities. |
+ ASSERT_FALSE(name); |
} |
TEST_F(VideoCaptureDeviceTest, FakeCaptureVariableResolution) { |
@@ -388,7 +408,7 @@ TEST_F(VideoCaptureDeviceTest, FakeCaptureVariableResolution) { |
scoped_ptr<VideoCaptureDevice> device( |
FakeVideoCaptureDevice::Create(names.front())); |
- ASSERT_TRUE(device.get() != NULL); |
+ ASSERT_TRUE(device); |
EXPECT_CALL(*client_, OnErr()) |
.Times(0); |