Index: content/renderer/media/media_stream_constraints_util_video_source_unittest.cc |
diff --git a/content/renderer/media/media_stream_constraints_util_video_source_unittest.cc b/content/renderer/media/media_stream_constraints_util_video_source_unittest.cc |
index c8e697ce5a5dfa1d75879fb233b23eb24b219875..cc92442fc08e3c78e8b32bb4932e925c3f2d8958 100644 |
--- a/content/renderer/media/media_stream_constraints_util_video_source_unittest.cc |
+++ b/content/renderer/media/media_stream_constraints_util_video_source_unittest.cc |
@@ -20,6 +20,7 @@ namespace { |
const char kDeviceID1[] = "fake_device_1"; |
const char kDeviceID2[] = "fake_device_2"; |
const char kDeviceID3[] = "fake_device_3"; |
+const char kDeviceID4[] = "fake_device_4"; |
} |
class MediaStreamConstraintsUtilVideoSourceTest : public testing::Test { |
@@ -85,6 +86,14 @@ class MediaStreamConstraintsUtilVideoSourceTest : public testing::Test { |
}; |
capabilities_.device_capabilities.push_back(std::move(device)); |
+ // A depth capture device. |
+ device = ::mojom::VideoInputDeviceCapabilities::New(); |
+ device->device_id = kDeviceID4; |
+ device->facing_mode = ::mojom::FacingMode::ENVIRONMENT; |
+ device->formats = {media::VideoCaptureFormat(gfx::Size(640, 480), 30.0f, |
+ media::PIXEL_FORMAT_Y16)}; |
+ capabilities_.device_capabilities.push_back(std::move(device)); |
+ |
capabilities_.power_line_capabilities = { |
media::PowerLineFrequency::FREQUENCY_DEFAULT, |
media::PowerLineFrequency::FREQUENCY_50HZ, |
@@ -154,6 +163,17 @@ TEST_F(MediaStreamConstraintsUtilVideoSourceTest, OverconstrainedOnFacingMode) { |
result.failed_constraint_name); |
} |
+TEST_F(MediaStreamConstraintsUtilVideoSourceTest, OverconstrainedOnVideoKind) { |
+ constraint_factory_.Reset(); |
+ // No device in |capabilities_| has video kind infrared. |
+ constraint_factory_.basic().videoKind.setExact( |
+ blink::WebString::fromASCII("infrared")); |
+ auto result = SelectSettings(); |
+ EXPECT_FALSE(result.has_value()); |
+ EXPECT_EQ(constraint_factory_.basic().videoKind.name(), |
+ result.failed_constraint_name); |
+} |
+ |
TEST_F(MediaStreamConstraintsUtilVideoSourceTest, OverconstrainedOnHeight) { |
constraint_factory_.Reset(); |
constraint_factory_.basic().height.setExact(123467890); |
@@ -330,6 +350,22 @@ TEST_F(MediaStreamConstraintsUtilVideoSourceTest, MandatoryFacingMode) { |
result.settings.power_line_frequency()); |
} |
+TEST_F(MediaStreamConstraintsUtilVideoSourceTest, MandatoryVideoKind) { |
+ constraint_factory_.Reset(); |
+ constraint_factory_.basic().videoKind.setExact( |
+ blink::WebString::fromASCII("depth")); |
+ auto result = SelectSettings(); |
+ EXPECT_TRUE(result.has_value()); |
+ EXPECT_EQ(kDeviceID4, result.settings.device_id()); |
+ EXPECT_EQ(media::PIXEL_FORMAT_Y16, result.settings.format().pixel_format); |
+ |
+ constraint_factory_.basic().videoKind.setExact( |
+ blink::WebString::fromASCII("color")); |
+ result = SelectSettings(); |
+ EXPECT_TRUE(result.has_value()); |
+ EXPECT_EQ(default_device_->device_id, result.settings.device_id()); |
+} |
+ |
TEST_F(MediaStreamConstraintsUtilVideoSourceTest, MandatoryPowerLineFrequency) { |
constraint_factory_.Reset(); |
const media::PowerLineFrequency kPowerLineFrequencies[] = { |