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

Unified Diff: content/renderer/media/media_stream_video_capture_source_unittest.cc

Issue 1124263004: New resolution change policies for desktop and tab capture. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments from mcasas. Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/media_stream_video_capture_source_unittest.cc
diff --git a/content/renderer/media/media_stream_video_capture_source_unittest.cc b/content/renderer/media/media_stream_video_capture_source_unittest.cc
index ceec81390e20f360edc1553f80c022e9ff6445f3..7995437891ef92d84fc06fdf9bcbc2a25bf73db2 100644
--- a/content/renderer/media/media_stream_video_capture_source_unittest.cc
+++ b/content/renderer/media/media_stream_video_capture_source_unittest.cc
@@ -66,12 +66,15 @@ class MediaStreamVideoCapturerSourceTest : public testing::Test {
webkit_source_id_ = webkit_source_.id();
}
+ MockMediaConstraintFactory* constraint_factory() {
+ return &constraint_factory_;
+ }
+
blink::WebMediaStreamTrack StartSource() {
- MockMediaConstraintFactory factory;
bool enabled = true;
// CreateVideoTrack will trigger OnConstraintsApplied.
return MediaStreamVideoTrack::CreateVideoTrack(
- source_, factory.CreateWebMediaConstraints(),
+ source_, constraint_factory_.CreateWebMediaConstraints(),
base::Bind(
&MediaStreamVideoCapturerSourceTest::OnConstraintsApplied,
base::Unretained(this)),
@@ -100,16 +103,28 @@ class MediaStreamVideoCapturerSourceTest : public testing::Test {
MockVideoCapturerDelegate* delegate_; // owned by |source|.
blink::WebString webkit_source_id_;
bool source_stopped_;
+ MockMediaConstraintFactory constraint_factory_;
};
-TEST_F(MediaStreamVideoCapturerSourceTest, TabCaptureAllowResolutionChange) {
+TEST_F(MediaStreamVideoCapturerSourceTest, TabCaptureFixedResolutionByDefault) {
StreamDeviceInfo device_info;
device_info.device.type = MEDIA_TAB_VIDEO_CAPTURE;
InitWithDeviceInfo(device_info);
+ // No constraints are being provided to the implementation, so expect only
+ // default values.
+ media::VideoCaptureParams expected_params;
+ expected_params.requested_format.frame_size.SetSize(
+ MediaStreamVideoSource::kDefaultWidth,
+ MediaStreamVideoSource::kDefaultHeight);
+ expected_params.requested_format.frame_rate =
+ MediaStreamVideoSource::kDefaultFrameRate;
+ expected_params.requested_format.pixel_format = media::PIXEL_FORMAT_I420;
+ expected_params.resolution_change_policy =
+ media::RESOLUTION_POLICY_FIXED_RESOLUTION;
+
EXPECT_CALL(mock_delegate(), StartCapture(
- testing::Field(&media::VideoCaptureParams::resolution_change_policy,
- media::RESOLUTION_POLICY_DYNAMIC_WITHIN_LIMIT),
+ expected_params,
testing::_,
testing::_,
testing::_)).Times(1);
@@ -119,14 +134,88 @@ TEST_F(MediaStreamVideoCapturerSourceTest, TabCaptureAllowResolutionChange) {
}
TEST_F(MediaStreamVideoCapturerSourceTest,
- DesktopCaptureAllowResolutionChange) {
+ DesktopCaptureAllowAnyResolutionChangeByDefault) {
StreamDeviceInfo device_info;
device_info.device.type = MEDIA_DESKTOP_VIDEO_CAPTURE;
InitWithDeviceInfo(device_info);
+ // No constraints are being provided to the implementation, so expect only
+ // default values.
+ media::VideoCaptureParams expected_params;
+ expected_params.requested_format.frame_size.SetSize(
+ MediaStreamVideoSource::kDefaultWidth,
+ MediaStreamVideoSource::kDefaultHeight);
+ expected_params.requested_format.frame_rate =
+ MediaStreamVideoSource::kDefaultFrameRate;
+ expected_params.requested_format.pixel_format = media::PIXEL_FORMAT_I420;
+ expected_params.resolution_change_policy =
+ media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT;
+
+ EXPECT_CALL(mock_delegate(), StartCapture(
+ expected_params,
+ testing::_,
+ testing::_,
+ testing::_)).Times(1);
+ blink::WebMediaStreamTrack track = StartSource();
+ // When the track goes out of scope, the source will be stopped.
+ EXPECT_CALL(mock_delegate(), StopCapture());
+}
+
+TEST_F(MediaStreamVideoCapturerSourceTest,
+ TabCaptureConstraintsImplyFixedAspectRatio) {
+ StreamDeviceInfo device_info;
+ device_info.device.type = MEDIA_TAB_VIDEO_CAPTURE;
+ InitWithDeviceInfo(device_info);
+
+ // Specify max and min size constraints that have the same ~16:9 aspect ratio.
+ constraint_factory()->AddMandatory(MediaStreamVideoSource::kMaxWidth, 1920);
+ constraint_factory()->AddMandatory(MediaStreamVideoSource::kMaxHeight, 1080);
+ constraint_factory()->AddMandatory(MediaStreamVideoSource::kMinWidth, 854);
+ constraint_factory()->AddMandatory(MediaStreamVideoSource::kMinHeight, 480);
+ constraint_factory()->AddMandatory(MediaStreamVideoSource::kMaxFrameRate,
+ 60.0);
+
+ media::VideoCaptureParams expected_params;
+ expected_params.requested_format.frame_size.SetSize(1920, 1080);
+ expected_params.requested_format.frame_rate = 60.0;
+ expected_params.requested_format.pixel_format = media::PIXEL_FORMAT_I420;
+ expected_params.resolution_change_policy =
+ media::RESOLUTION_POLICY_FIXED_ASPECT_RATIO;
+
EXPECT_CALL(mock_delegate(), StartCapture(
testing::Field(&media::VideoCaptureParams::resolution_change_policy,
- media::RESOLUTION_POLICY_DYNAMIC_WITHIN_LIMIT),
+ media::RESOLUTION_POLICY_FIXED_ASPECT_RATIO),
+ testing::_,
+ testing::_,
+ testing::_)).Times(1);
+ blink::WebMediaStreamTrack track = StartSource();
+ // When the track goes out of scope, the source will be stopped.
+ EXPECT_CALL(mock_delegate(), StopCapture());
+}
+
+TEST_F(MediaStreamVideoCapturerSourceTest,
+ TabCaptureConstraintsImplyAllowingAnyResolutionChange) {
+ StreamDeviceInfo device_info;
+ device_info.device.type = MEDIA_TAB_VIDEO_CAPTURE;
+ InitWithDeviceInfo(device_info);
+
+ // Specify max and min size constraints with different aspect ratios.
+ constraint_factory()->AddMandatory(MediaStreamVideoSource::kMaxWidth, 1920);
+ constraint_factory()->AddMandatory(MediaStreamVideoSource::kMaxHeight, 1080);
+ constraint_factory()->AddMandatory(MediaStreamVideoSource::kMinWidth, 0);
+ constraint_factory()->AddMandatory(MediaStreamVideoSource::kMinHeight, 0);
+ constraint_factory()->AddMandatory(MediaStreamVideoSource::kMaxFrameRate,
+ 60.0);
+
+ media::VideoCaptureParams expected_params;
+ expected_params.requested_format.frame_size.SetSize(1920, 1080);
+ expected_params.requested_format.frame_rate = 60.0;
+ expected_params.requested_format.pixel_format = media::PIXEL_FORMAT_I420;
+ expected_params.resolution_change_policy =
+ media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT;
+
+ EXPECT_CALL(mock_delegate(), StartCapture(
+ expected_params,
testing::_,
testing::_,
testing::_)).Times(1);

Powered by Google App Engine
This is Rietveld 408576698