| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 #include "content/renderer/media/media_stream_constraints_util_video_content.h" | 5 #include "content/renderer/media/media_stream_constraints_util_video_content.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "content/renderer/media/mock_constraint_factory.h" | 10 #include "content/renderer/media/mock_constraint_factory.h" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 71 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); |
| 72 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); | 72 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); |
| 73 CheckNonResolutionDefaults(result); | 73 CheckNonResolutionDefaults(result); |
| 74 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); | 74 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
| 75 } | 75 } |
| 76 | 76 |
| 77 // The "Overconstrained" tests verify that failure of any single required | 77 // The "Overconstrained" tests verify that failure of any single required |
| 78 // constraint results in failure to select a candidate. | 78 // constraint results in failure to select a candidate. |
| 79 TEST_F(MediaStreamConstraintsUtilVideoContentTest, OverconstrainedOnHeight) { | 79 TEST_F(MediaStreamConstraintsUtilVideoContentTest, OverconstrainedOnHeight) { |
| 80 constraint_factory_.Reset(); | 80 constraint_factory_.Reset(); |
| 81 constraint_factory_.basic().height.SetExact(123467890); | 81 constraint_factory_.basic().height.SetExact(kMaxScreenCastDimension + 1); |
| 82 auto result = SelectSettings(); | 82 auto result = SelectSettings(); |
| 83 EXPECT_FALSE(result.HasValue()); | 83 EXPECT_FALSE(result.HasValue()); |
| 84 EXPECT_EQ(constraint_factory_.basic().height.GetName(), | 84 EXPECT_EQ(constraint_factory_.basic().height.GetName(), |
| 85 result.failed_constraint_name()); | 85 result.failed_constraint_name()); |
| 86 | 86 |
| 87 constraint_factory_.Reset(); | 87 constraint_factory_.Reset(); |
| 88 constraint_factory_.basic().height.SetMin(123467890); | 88 constraint_factory_.basic().height.SetMin(kMaxScreenCastDimension + 1); |
| 89 result = SelectSettings(); | 89 result = SelectSettings(); |
| 90 EXPECT_FALSE(result.HasValue()); | 90 EXPECT_FALSE(result.HasValue()); |
| 91 EXPECT_EQ(constraint_factory_.basic().height.GetName(), | 91 EXPECT_EQ(constraint_factory_.basic().height.GetName(), |
| 92 result.failed_constraint_name()); | 92 result.failed_constraint_name()); |
| 93 | 93 |
| 94 constraint_factory_.Reset(); | 94 constraint_factory_.Reset(); |
| 95 constraint_factory_.basic().height.SetMax(0); | 95 constraint_factory_.basic().height.SetMax(kMinScreenCastDimension - 1); |
| 96 result = SelectSettings(); | 96 result = SelectSettings(); |
| 97 EXPECT_FALSE(result.HasValue()); | 97 EXPECT_FALSE(result.HasValue()); |
| 98 EXPECT_EQ(constraint_factory_.basic().height.GetName(), | 98 EXPECT_EQ(constraint_factory_.basic().height.GetName(), |
| 99 result.failed_constraint_name()); | 99 result.failed_constraint_name()); |
| 100 } | 100 } |
| 101 | 101 |
| 102 TEST_F(MediaStreamConstraintsUtilVideoContentTest, OverconstrainedOnWidth) { | 102 TEST_F(MediaStreamConstraintsUtilVideoContentTest, OverconstrainedOnWidth) { |
| 103 constraint_factory_.Reset(); | 103 constraint_factory_.Reset(); |
| 104 constraint_factory_.basic().width.SetExact(123467890); | 104 constraint_factory_.basic().width.SetExact(kMaxScreenCastDimension + 1); |
| 105 auto result = SelectSettings(); | 105 auto result = SelectSettings(); |
| 106 EXPECT_FALSE(result.HasValue()); | 106 EXPECT_FALSE(result.HasValue()); |
| 107 EXPECT_EQ(constraint_factory_.basic().width.GetName(), | 107 EXPECT_EQ(constraint_factory_.basic().width.GetName(), |
| 108 result.failed_constraint_name()); | 108 result.failed_constraint_name()); |
| 109 | 109 |
| 110 constraint_factory_.Reset(); | 110 constraint_factory_.Reset(); |
| 111 constraint_factory_.basic().width.SetMin(123467890); | 111 constraint_factory_.basic().width.SetMin(kMaxScreenCastDimension + 1); |
| 112 result = SelectSettings(); | 112 result = SelectSettings(); |
| 113 EXPECT_FALSE(result.HasValue()); | 113 EXPECT_FALSE(result.HasValue()); |
| 114 EXPECT_EQ(constraint_factory_.basic().width.GetName(), | 114 EXPECT_EQ(constraint_factory_.basic().width.GetName(), |
| 115 result.failed_constraint_name()); | 115 result.failed_constraint_name()); |
| 116 | 116 |
| 117 constraint_factory_.Reset(); | 117 constraint_factory_.Reset(); |
| 118 constraint_factory_.basic().width.SetMax(0); | 118 constraint_factory_.basic().width.SetMax(kMinScreenCastDimension - 1); |
| 119 result = SelectSettings(); | 119 result = SelectSettings(); |
| 120 EXPECT_FALSE(result.HasValue()); | 120 EXPECT_FALSE(result.HasValue()); |
| 121 EXPECT_EQ(constraint_factory_.basic().width.GetName(), | 121 EXPECT_EQ(constraint_factory_.basic().width.GetName(), |
| 122 result.failed_constraint_name()); | 122 result.failed_constraint_name()); |
| 123 } | 123 } |
| 124 | 124 |
| 125 TEST_F(MediaStreamConstraintsUtilVideoContentTest, | 125 TEST_F(MediaStreamConstraintsUtilVideoContentTest, |
| 126 OverconstrainedOnAspectRatio) { | 126 OverconstrainedOnAspectRatio) { |
| 127 constraint_factory_.Reset(); | 127 constraint_factory_.Reset(); |
| 128 constraint_factory_.basic().aspect_ratio.SetExact(123467890); | 128 constraint_factory_.basic().aspect_ratio.SetExact(123467890); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 141 constraint_factory_.Reset(); | 141 constraint_factory_.Reset(); |
| 142 constraint_factory_.basic().aspect_ratio.SetMax(0.00001); | 142 constraint_factory_.basic().aspect_ratio.SetMax(0.00001); |
| 143 result = SelectSettings(); | 143 result = SelectSettings(); |
| 144 EXPECT_FALSE(result.HasValue()); | 144 EXPECT_FALSE(result.HasValue()); |
| 145 EXPECT_EQ(constraint_factory_.basic().aspect_ratio.GetName(), | 145 EXPECT_EQ(constraint_factory_.basic().aspect_ratio.GetName(), |
| 146 result.failed_constraint_name()); | 146 result.failed_constraint_name()); |
| 147 } | 147 } |
| 148 | 148 |
| 149 TEST_F(MediaStreamConstraintsUtilVideoContentTest, OverconstrainedOnFrameRate) { | 149 TEST_F(MediaStreamConstraintsUtilVideoContentTest, OverconstrainedOnFrameRate) { |
| 150 constraint_factory_.Reset(); | 150 constraint_factory_.Reset(); |
| 151 constraint_factory_.basic().frame_rate.SetExact(123467890.0); | 151 constraint_factory_.basic().frame_rate.SetExact(kMaxScreenCastFrameRate + |
| 152 0.1); |
| 152 auto result = SelectSettings(); | 153 auto result = SelectSettings(); |
| 153 EXPECT_FALSE(result.HasValue()); | 154 EXPECT_FALSE(result.HasValue()); |
| 154 EXPECT_EQ(constraint_factory_.basic().frame_rate.GetName(), | 155 EXPECT_EQ(constraint_factory_.basic().frame_rate.GetName(), |
| 155 result.failed_constraint_name()); | 156 result.failed_constraint_name()); |
| 156 | 157 |
| 157 constraint_factory_.Reset(); | 158 constraint_factory_.Reset(); |
| 158 constraint_factory_.basic().frame_rate.SetMin(123467890.0); | 159 constraint_factory_.basic().frame_rate.SetMin(kMaxScreenCastFrameRate + 0.1); |
| 159 result = SelectSettings(); | 160 result = SelectSettings(); |
| 160 EXPECT_FALSE(result.HasValue()); | 161 EXPECT_FALSE(result.HasValue()); |
| 161 EXPECT_EQ(constraint_factory_.basic().frame_rate.GetName(), | 162 EXPECT_EQ(constraint_factory_.basic().frame_rate.GetName(), |
| 162 result.failed_constraint_name()); | 163 result.failed_constraint_name()); |
| 163 | 164 |
| 164 constraint_factory_.Reset(); | 165 constraint_factory_.Reset(); |
| 165 constraint_factory_.basic().frame_rate.SetMax(0.0); | 166 constraint_factory_.basic().frame_rate.SetMax(kMinScreenCastFrameRate - 0.1); |
| 166 result = SelectSettings(); | 167 result = SelectSettings(); |
| 167 EXPECT_FALSE(result.HasValue()); | 168 EXPECT_FALSE(result.HasValue()); |
| 168 EXPECT_EQ(constraint_factory_.basic().frame_rate.GetName(), | 169 EXPECT_EQ(constraint_factory_.basic().frame_rate.GetName(), |
| 169 result.failed_constraint_name()); | 170 result.failed_constraint_name()); |
| 170 } | 171 } |
| 171 | 172 |
| 172 // The "Mandatory" and "Ideal" tests check that various selection criteria work | 173 // The "Mandatory" and "Ideal" tests check that various selection criteria work |
| 173 // for each individual constraint in the basic constraint set. | 174 // for each individual constraint in the basic constraint set. |
| 174 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryDeviceID) { | 175 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryDeviceID) { |
| 175 const std::string kDeviceID = "Some ID"; | 176 const std::string kDeviceID = "Some ID"; |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 EXPECT_EQ(1.0 / kMaxHeight, | 328 EXPECT_EQ(1.0 / kMaxHeight, |
| 328 result.track_adapter_settings().min_aspect_ratio); | 329 result.track_adapter_settings().min_aspect_ratio); |
| 329 EXPECT_EQ(kMaxScreenCastDimension, | 330 EXPECT_EQ(kMaxScreenCastDimension, |
| 330 result.track_adapter_settings().max_aspect_ratio); | 331 result.track_adapter_settings().max_aspect_ratio); |
| 331 CheckTrackAdapterSettingsEqualsFormat(result); | 332 CheckTrackAdapterSettingsEqualsFormat(result); |
| 332 } | 333 } |
| 333 | 334 |
| 334 // kMaxHeight greater than the maximum allowed. | 335 // kMaxHeight greater than the maximum allowed. |
| 335 { | 336 { |
| 336 constraint_factory_.Reset(); | 337 constraint_factory_.Reset(); |
| 337 constraint_factory_.basic().height.SetMax(kMaxScreenCastDimension + 100); | 338 constraint_factory_.basic().height.SetMax(kMaxScreenCastDimension + 1); |
| 338 auto result = SelectSettings(); | 339 auto result = SelectSettings(); |
| 339 EXPECT_TRUE(result.HasValue()); | 340 EXPECT_TRUE(result.HasValue()); |
| 340 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 341 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); |
| 341 EXPECT_EQ( | 342 EXPECT_EQ( |
| 342 std::round(kDefaultScreenCastHeight * kDefaultScreenCastAspectRatio), | 343 std::round(kDefaultScreenCastHeight * kDefaultScreenCastAspectRatio), |
| 343 result.Width()); | 344 result.Width()); |
| 344 CheckNonResolutionDefaults(result); | 345 CheckNonResolutionDefaults(result); |
| 345 EXPECT_EQ(1.0 / kMaxScreenCastDimension, | 346 EXPECT_EQ(1.0 / kMaxScreenCastDimension, |
| 346 result.track_adapter_settings().min_aspect_ratio); | 347 result.track_adapter_settings().min_aspect_ratio); |
| 347 EXPECT_EQ(kMaxScreenCastDimension, | 348 EXPECT_EQ(kMaxScreenCastDimension, |
| 348 result.track_adapter_settings().max_aspect_ratio); | 349 result.track_adapter_settings().max_aspect_ratio); |
| 349 CheckTrackAdapterSettingsEqualsFormat(result); | 350 CheckTrackAdapterSettingsEqualsFormat(result); |
| 350 } | 351 } |
| 352 |
| 353 // kMaxHeight equal to the maximum allowed. |
| 354 { |
| 355 constraint_factory_.Reset(); |
| 356 const int kMaxHeight = kMaxScreenCastDimension; |
| 357 constraint_factory_.basic().height.SetMax(kMaxHeight); |
| 358 auto result = SelectSettings(); |
| 359 EXPECT_TRUE(result.HasValue()); |
| 360 EXPECT_EQ(kMaxHeight, result.Height()); |
| 361 // Since the given max is too large, the default aspect ratio cannot be |
| 362 // used and the width is clamped to the maximum. |
| 363 EXPECT_EQ(kMaxScreenCastDimension, result.Width()); |
| 364 CheckNonResolutionDefaults(result); |
| 365 EXPECT_EQ(1.0 / kMaxHeight, |
| 366 result.track_adapter_settings().min_aspect_ratio); |
| 367 EXPECT_EQ(kMaxScreenCastDimension, |
| 368 result.track_adapter_settings().max_aspect_ratio); |
| 369 CheckTrackAdapterSettingsEqualsFormat(result); |
| 370 } |
| 351 } | 371 } |
| 352 | 372 |
| 353 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryHeightRange) { | 373 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryHeightRange) { |
| 354 // Range includes the default. | 374 // Range includes the default. |
| 355 { | 375 { |
| 356 constraint_factory_.Reset(); | 376 constraint_factory_.Reset(); |
| 357 const int kMinHeight = kDefaultScreenCastHeight - 100; | 377 const int kMinHeight = kDefaultScreenCastHeight - 100; |
| 358 const int kMaxHeight = kDefaultScreenCastHeight + 100; | 378 const int kMaxHeight = kDefaultScreenCastHeight + 100; |
| 359 constraint_factory_.basic().height.SetMin(kMinHeight); | 379 constraint_factory_.basic().height.SetMin(kMinHeight); |
| 360 constraint_factory_.basic().height.SetMax(kMaxHeight); | 380 constraint_factory_.basic().height.SetMax(kMaxHeight); |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 } | 612 } |
| 593 | 613 |
| 594 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxWidth) { | 614 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxWidth) { |
| 595 // kMaxWidth less than the default. | 615 // kMaxWidth less than the default. |
| 596 { | 616 { |
| 597 constraint_factory_.Reset(); | 617 constraint_factory_.Reset(); |
| 598 const int kMaxWidth = kDefaultScreenCastWidth - 100; | 618 const int kMaxWidth = kDefaultScreenCastWidth - 100; |
| 599 constraint_factory_.basic().width.SetMax(kMaxWidth); | 619 constraint_factory_.basic().width.SetMax(kMaxWidth); |
| 600 auto result = SelectSettings(); | 620 auto result = SelectSettings(); |
| 601 EXPECT_TRUE(result.HasValue()); | 621 EXPECT_TRUE(result.HasValue()); |
| 602 // kSmallWidth is less that the default, so expect kSmallWidth. | 622 // If max is provided, max is used as default. |
| 603 EXPECT_EQ(kMaxWidth, result.Width()); | 623 EXPECT_EQ(kMaxWidth, result.Width()); |
| 604 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), | 624 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), |
| 605 result.Height()); | 625 result.Height()); |
| 606 CheckNonResolutionDefaults(result); | 626 CheckNonResolutionDefaults(result); |
| 607 EXPECT_EQ(1.0 / kMaxScreenCastDimension, | 627 EXPECT_EQ(1.0 / kMaxScreenCastDimension, |
| 608 result.track_adapter_settings().min_aspect_ratio); | 628 result.track_adapter_settings().min_aspect_ratio); |
| 609 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, | 629 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, |
| 610 result.track_adapter_settings().max_aspect_ratio); | 630 result.track_adapter_settings().max_aspect_ratio); |
| 611 CheckTrackAdapterSettingsEqualsFormat(result); | 631 CheckTrackAdapterSettingsEqualsFormat(result); |
| 612 } | 632 } |
| 613 | 633 |
| 614 // kMaxWidth greater than the default. | 634 // kMaxWidth greater than the default. |
| 615 { | 635 { |
| 616 constraint_factory_.Reset(); | 636 constraint_factory_.Reset(); |
| 617 const int kMaxWidth = kDefaultScreenCastWidth + 100; | 637 const int kMaxWidth = kDefaultScreenCastWidth + 100; |
| 618 constraint_factory_.basic().width.SetMax(kMaxWidth); | 638 constraint_factory_.basic().width.SetMax(kMaxWidth); |
| 619 auto result = SelectSettings(); | 639 auto result = SelectSettings(); |
| 620 EXPECT_TRUE(result.HasValue()); | 640 EXPECT_TRUE(result.HasValue()); |
| 621 // kSmallWidth is less that the default, so expect kSmallWidth. | 641 // If max is provided, max is used as default. |
| 622 EXPECT_EQ(kMaxWidth, result.Width()); | 642 EXPECT_EQ(kMaxWidth, result.Width()); |
| 623 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), | 643 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), |
| 624 result.Height()); | 644 result.Height()); |
| 625 CheckNonResolutionDefaults(result); | 645 CheckNonResolutionDefaults(result); |
| 626 EXPECT_EQ(1.0 / kMaxScreenCastDimension, | 646 EXPECT_EQ(1.0 / kMaxScreenCastDimension, |
| 627 result.track_adapter_settings().min_aspect_ratio); | 647 result.track_adapter_settings().min_aspect_ratio); |
| 628 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, | 648 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, |
| 629 result.track_adapter_settings().max_aspect_ratio); | 649 result.track_adapter_settings().max_aspect_ratio); |
| 630 CheckTrackAdapterSettingsEqualsFormat(result); | 650 CheckTrackAdapterSettingsEqualsFormat(result); |
| 631 } | 651 } |
| 632 | 652 |
| 633 // kMaxWidth greater than the maximum allowed (gets ignored). | 653 // kMaxWidth greater than the maximum allowed (gets ignored). |
| 634 { | 654 { |
| 635 constraint_factory_.Reset(); | 655 constraint_factory_.Reset(); |
| 636 constraint_factory_.basic().width.SetMax(kMaxScreenCastDimension + 100); | 656 constraint_factory_.basic().width.SetMax(kMaxScreenCastDimension + 1); |
| 637 auto result = SelectSettings(); | 657 auto result = SelectSettings(); |
| 638 EXPECT_TRUE(result.HasValue()); | 658 EXPECT_TRUE(result.HasValue()); |
| 639 // kSmallWidth is less that the default, so expect kSmallWidth. | 659 // Expect the default, since the given max value cannot be used as default. |
| 640 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); | 660 EXPECT_EQ(kDefaultScreenCastWidth, result.Width()); |
| 641 EXPECT_EQ( | 661 EXPECT_EQ( |
| 642 std::round(kDefaultScreenCastWidth / kDefaultScreenCastAspectRatio), | 662 std::round(kDefaultScreenCastWidth / kDefaultScreenCastAspectRatio), |
| 643 result.Height()); | 663 result.Height()); |
| 644 CheckNonResolutionDefaults(result); | 664 CheckNonResolutionDefaults(result); |
| 645 EXPECT_EQ(1.0 / kMaxScreenCastDimension, | 665 EXPECT_EQ(1.0 / kMaxScreenCastDimension, |
| 646 result.track_adapter_settings().min_aspect_ratio); | 666 result.track_adapter_settings().min_aspect_ratio); |
| 647 EXPECT_EQ( | 667 EXPECT_EQ( |
| 648 static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension, | 668 static_cast<double>(kMaxScreenCastDimension) / kMinScreenCastDimension, |
| 649 result.track_adapter_settings().max_aspect_ratio); | 669 result.track_adapter_settings().max_aspect_ratio); |
| 650 CheckTrackAdapterSettingsEqualsFormat(result); | 670 CheckTrackAdapterSettingsEqualsFormat(result); |
| 651 } | 671 } |
| 672 |
| 673 // kMaxWidth equal to the maximum allowed. |
| 674 { |
| 675 constraint_factory_.Reset(); |
| 676 const int kMaxWidth = kMaxScreenCastDimension; |
| 677 constraint_factory_.basic().width.SetMax(kMaxWidth); |
| 678 auto result = SelectSettings(); |
| 679 EXPECT_TRUE(result.HasValue()); |
| 680 EXPECT_EQ(kMaxWidth, result.Width()); |
| 681 EXPECT_EQ(std::round(kMaxWidth / kDefaultScreenCastAspectRatio), |
| 682 result.Height()); |
| 683 CheckNonResolutionDefaults(result); |
| 684 EXPECT_EQ(1.0 / kMaxScreenCastDimension, |
| 685 result.track_adapter_settings().min_aspect_ratio); |
| 686 EXPECT_EQ(static_cast<double>(kMaxWidth) / kMinScreenCastDimension, |
| 687 result.track_adapter_settings().max_aspect_ratio); |
| 688 CheckTrackAdapterSettingsEqualsFormat(result); |
| 689 } |
| 652 } | 690 } |
| 653 | 691 |
| 654 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryWidthRange) { | 692 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryWidthRange) { |
| 655 // The whole range is less than the default. | 693 // The whole range is less than the default. |
| 656 { | 694 { |
| 657 constraint_factory_.Reset(); | 695 constraint_factory_.Reset(); |
| 658 const int kMinWidth = kDefaultScreenCastWidth - 200; | 696 const int kMinWidth = kDefaultScreenCastWidth - 200; |
| 659 const int kMaxWidth = kDefaultScreenCastWidth - 100; | 697 const int kMaxWidth = kDefaultScreenCastWidth - 100; |
| 660 constraint_factory_.basic().width.SetMin(kMinWidth); | 698 constraint_factory_.basic().width.SetMin(kMinWidth); |
| 661 constraint_factory_.basic().width.SetMax(kMaxWidth); | 699 constraint_factory_.basic().width.SetMax(kMaxWidth); |
| (...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1230 result = SelectSettings(); | 1268 result = SelectSettings(); |
| 1231 EXPECT_TRUE(result.HasValue()); | 1269 EXPECT_TRUE(result.HasValue()); |
| 1232 // kFrameRate is greater that the default, so expect kFrameRate. | 1270 // kFrameRate is greater that the default, so expect kFrameRate. |
| 1233 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); | 1271 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); |
| 1234 CheckNonFrameRateDefaults(result); | 1272 CheckNonFrameRateDefaults(result); |
| 1235 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); | 1273 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
| 1236 } | 1274 } |
| 1237 | 1275 |
| 1238 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxFrameRate) { | 1276 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryMaxFrameRate) { |
| 1239 constraint_factory_.Reset(); | 1277 constraint_factory_.Reset(); |
| 1240 const double kFrameRate = 45.0; | 1278 // kMaxFrameRate greater than default |
| 1241 constraint_factory_.basic().frame_rate.SetMax(kFrameRate); | 1279 { |
| 1242 auto result = SelectSettings(); | 1280 const double kMaxFrameRate = 45.0; |
| 1243 EXPECT_TRUE(result.HasValue()); | 1281 constraint_factory_.basic().frame_rate.SetMax(kMaxFrameRate); |
| 1244 // kFrameRate is greater that the default, so expect the default. | 1282 auto result = SelectSettings(); |
| 1245 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); | 1283 EXPECT_TRUE(result.HasValue()); |
| 1246 CheckNonFrameRateDefaults(result); | 1284 // If max frame rate is provided, it is used as default. |
| 1247 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); | 1285 EXPECT_EQ(kMaxFrameRate, result.FrameRate()); |
| 1286 CheckNonFrameRateDefaults(result); |
| 1287 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
| 1288 } |
| 1248 | 1289 |
| 1249 const double kSmallFrameRate = 5.0; | 1290 // kMaxFrameRate less than default |
| 1250 constraint_factory_.basic().frame_rate.SetMax(kSmallFrameRate); | 1291 { |
| 1251 result = SelectSettings(); | 1292 const double kMaxFrameRate = 5.0; |
| 1252 EXPECT_TRUE(result.HasValue()); | 1293 constraint_factory_.basic().frame_rate.SetMax(kMaxFrameRate); |
| 1253 // kFrameRate is less that the default, so expect kFrameRate. | 1294 auto result = SelectSettings(); |
| 1254 EXPECT_EQ(kSmallFrameRate, result.FrameRate()); | 1295 EXPECT_TRUE(result.HasValue()); |
| 1255 CheckNonFrameRateDefaults(result); | 1296 // If max frame rate is provided, it is used as default. |
| 1256 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); | 1297 EXPECT_EQ(kMaxFrameRate, result.FrameRate()); |
| 1298 CheckNonFrameRateDefaults(result); |
| 1299 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
| 1300 } |
| 1301 |
| 1302 // kMaxFrameRate greater than the maximum allowed |
| 1303 { |
| 1304 const double kMaxFrameRate = kMaxScreenCastFrameRate + 0.1; |
| 1305 constraint_factory_.basic().frame_rate.SetMax(kMaxFrameRate); |
| 1306 auto result = SelectSettings(); |
| 1307 EXPECT_TRUE(result.HasValue()); |
| 1308 // Expect the default, since the given maximum is invalid. |
| 1309 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); |
| 1310 CheckNonFrameRateDefaults(result); |
| 1311 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
| 1312 } |
| 1313 |
| 1314 // kMaxFrameRate equal to the maximum allowed |
| 1315 { |
| 1316 const double kMaxFrameRate = kMaxScreenCastFrameRate; |
| 1317 constraint_factory_.basic().frame_rate.SetMax(kMaxFrameRate); |
| 1318 auto result = SelectSettings(); |
| 1319 EXPECT_TRUE(result.HasValue()); |
| 1320 // If max frame rate is provided, it is used as default. |
| 1321 EXPECT_EQ(kMaxFrameRate, result.FrameRate()); |
| 1322 CheckNonFrameRateDefaults(result); |
| 1323 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
| 1324 } |
| 1257 } | 1325 } |
| 1258 | 1326 |
| 1259 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryRangeFrameRate) { | 1327 TEST_F(MediaStreamConstraintsUtilVideoContentTest, MandatoryRangeFrameRate) { |
| 1260 constraint_factory_.Reset(); | 1328 constraint_factory_.Reset(); |
| 1261 { | 1329 { |
| 1262 const double kMinFrameRate = 15.0; | 1330 const double kMinFrameRate = 15.0; |
| 1263 const double kMaxFrameRate = 45.0; | 1331 const double kMaxFrameRate = 45.0; |
| 1264 constraint_factory_.basic().frame_rate.SetMax(kMinFrameRate); | 1332 constraint_factory_.basic().frame_rate.SetMax(kMinFrameRate); |
| 1265 constraint_factory_.basic().frame_rate.SetMax(kMaxFrameRate); | 1333 constraint_factory_.basic().frame_rate.SetMax(kMaxFrameRate); |
| 1266 auto result = SelectSettings(); | 1334 auto result = SelectSettings(); |
| 1267 EXPECT_TRUE(result.HasValue()); | 1335 EXPECT_TRUE(result.HasValue()); |
| 1268 // The range includes the default, so expect the default. | 1336 // If max frame rate is provided, it is used as default. |
| 1269 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); | 1337 EXPECT_EQ(kMaxFrameRate, result.FrameRate()); |
| 1270 CheckNonFrameRateDefaults(result); | 1338 CheckNonFrameRateDefaults(result); |
| 1271 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); | 1339 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
| 1272 } | 1340 } |
| 1273 | 1341 |
| 1274 { | 1342 { |
| 1275 const double kMinFrameRate = 45.0; | 1343 const double kMinFrameRate = 45.0; |
| 1276 const double kMaxFrameRate = 55.0; | 1344 const double kMaxFrameRate = 55.0; |
| 1277 constraint_factory_.basic().frame_rate.SetMax(kMinFrameRate); | 1345 constraint_factory_.basic().frame_rate.SetMax(kMinFrameRate); |
| 1278 constraint_factory_.basic().frame_rate.SetMax(kMaxFrameRate); | 1346 constraint_factory_.basic().frame_rate.SetMax(kMaxFrameRate); |
| 1279 auto result = SelectSettings(); | 1347 auto result = SelectSettings(); |
| 1280 EXPECT_TRUE(result.HasValue()); | 1348 EXPECT_TRUE(result.HasValue()); |
| 1281 // The whole range is greater that the default, so expect the minimum. | 1349 // If max frame rate is provided, it is used as default. |
| 1282 EXPECT_EQ(kDefaultScreenCastFrameRate, result.FrameRate()); | 1350 EXPECT_EQ(kMaxFrameRate, result.FrameRate()); |
| 1283 CheckNonFrameRateDefaults(result); | 1351 CheckNonFrameRateDefaults(result); |
| 1284 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); | 1352 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
| 1285 } | 1353 } |
| 1286 | 1354 |
| 1287 { | 1355 { |
| 1288 const double kMinFrameRate = 10.0; | 1356 const double kMinFrameRate = 10.0; |
| 1289 const double kMaxFrameRate = 15.0; | 1357 const double kMaxFrameRate = 15.0; |
| 1290 constraint_factory_.basic().frame_rate.SetMax(kMinFrameRate); | 1358 constraint_factory_.basic().frame_rate.SetMax(kMinFrameRate); |
| 1291 constraint_factory_.basic().frame_rate.SetMax(kMaxFrameRate); | 1359 constraint_factory_.basic().frame_rate.SetMax(kMaxFrameRate); |
| 1292 auto result = SelectSettings(); | 1360 auto result = SelectSettings(); |
| 1293 EXPECT_TRUE(result.HasValue()); | 1361 EXPECT_TRUE(result.HasValue()); |
| 1294 // The whole range is less that the default, so expect the maximum. | 1362 // If max frame rate is provided, it is used as default. |
| 1295 EXPECT_EQ(kMaxFrameRate, result.FrameRate()); | 1363 EXPECT_EQ(kMaxFrameRate, result.FrameRate()); |
| 1296 CheckNonFrameRateDefaults(result); | 1364 CheckNonFrameRateDefaults(result); |
| 1297 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); | 1365 CheckTrackAdapterSettingsEqualsFormatDefaultAspectRatio(result); |
| 1298 } | 1366 } |
| 1299 } | 1367 } |
| 1300 | 1368 |
| 1301 TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealFrameRate) { | 1369 TEST_F(MediaStreamConstraintsUtilVideoContentTest, IdealFrameRate) { |
| 1302 // Unconstrained. | 1370 // Unconstrained. |
| 1303 { | 1371 { |
| 1304 constraint_factory_.Reset(); | 1372 constraint_factory_.Reset(); |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1667 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight, | 1735 EXPECT_EQ(static_cast<double>(kMaxScreenCastDimension) / kMinHeight, |
| 1668 result.track_adapter_settings().max_aspect_ratio); | 1736 result.track_adapter_settings().max_aspect_ratio); |
| 1669 CheckTrackAdapterSettingsEqualsFormat(result); | 1737 CheckTrackAdapterSettingsEqualsFormat(result); |
| 1670 } | 1738 } |
| 1671 | 1739 |
| 1672 TEST_F(MediaStreamConstraintsUtilVideoContentTest, | 1740 TEST_F(MediaStreamConstraintsUtilVideoContentTest, |
| 1673 AdvancedContradictoryExactAspectRatio) { | 1741 AdvancedContradictoryExactAspectRatio) { |
| 1674 constraint_factory_.Reset(); | 1742 constraint_factory_.Reset(); |
| 1675 blink::WebMediaTrackConstraintSet& advanced1 = | 1743 blink::WebMediaTrackConstraintSet& advanced1 = |
| 1676 constraint_factory_.AddAdvanced(); | 1744 constraint_factory_.AddAdvanced(); |
| 1677 advanced1.aspect_ratio.SetExact(10.0); | 1745 const double kMinAspectRatio = 5.0; |
| 1746 advanced1.aspect_ratio.SetExact(kMinAspectRatio); |
| 1678 blink::WebMediaTrackConstraintSet& advanced2 = | 1747 blink::WebMediaTrackConstraintSet& advanced2 = |
| 1679 constraint_factory_.AddAdvanced(); | 1748 constraint_factory_.AddAdvanced(); |
| 1680 advanced2.aspect_ratio.SetExact(3.0); | 1749 advanced2.aspect_ratio.SetExact(3.0); |
| 1681 auto result = SelectSettings(); | 1750 auto result = SelectSettings(); |
| 1682 EXPECT_TRUE(result.HasValue()); | 1751 EXPECT_TRUE(result.HasValue()); |
| 1683 EXPECT_EQ(std::round(kDefaultScreenCastHeight * 10.0), result.Width()); | 1752 EXPECT_EQ(std::round(kDefaultScreenCastHeight * kMinAspectRatio), |
| 1753 result.Width()); |
| 1684 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 1754 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); |
| 1685 CheckNonResolutionDefaults(result); | 1755 CheckNonResolutionDefaults(result); |
| 1686 EXPECT_EQ(10.0, result.track_adapter_settings().min_aspect_ratio); | 1756 EXPECT_EQ(kMinAspectRatio, result.track_adapter_settings().min_aspect_ratio); |
| 1687 EXPECT_EQ(10.0, result.track_adapter_settings().max_aspect_ratio); | 1757 EXPECT_EQ(kMinAspectRatio, result.track_adapter_settings().max_aspect_ratio); |
| 1688 CheckTrackAdapterSettingsEqualsFormat(result); | 1758 CheckTrackAdapterSettingsEqualsFormat(result); |
| 1689 } | 1759 } |
| 1690 | 1760 |
| 1691 TEST_F(MediaStreamConstraintsUtilVideoContentTest, | 1761 TEST_F(MediaStreamConstraintsUtilVideoContentTest, |
| 1692 AdvancedContradictoryAspectRatioRange) { | 1762 AdvancedContradictoryAspectRatioRange) { |
| 1693 constraint_factory_.Reset(); | 1763 constraint_factory_.Reset(); |
| 1694 blink::WebMediaTrackConstraintSet& advanced1 = | 1764 blink::WebMediaTrackConstraintSet& advanced1 = |
| 1695 constraint_factory_.AddAdvanced(); | 1765 constraint_factory_.AddAdvanced(); |
| 1696 advanced1.aspect_ratio.SetMin(10.0); | 1766 const double kMinAspectRatio = 5.0; |
| 1767 advanced1.aspect_ratio.SetMin(kMinAspectRatio); |
| 1697 blink::WebMediaTrackConstraintSet& advanced2 = | 1768 blink::WebMediaTrackConstraintSet& advanced2 = |
| 1698 constraint_factory_.AddAdvanced(); | 1769 constraint_factory_.AddAdvanced(); |
| 1699 advanced2.aspect_ratio.SetMax(3.0); | 1770 advanced2.aspect_ratio.SetMax(3.0); |
| 1700 auto result = SelectSettings(); | 1771 auto result = SelectSettings(); |
| 1701 EXPECT_TRUE(result.HasValue()); | 1772 EXPECT_TRUE(result.HasValue()); |
| 1702 EXPECT_EQ(std::round(kDefaultScreenCastHeight * 10.0), result.Width()); | 1773 EXPECT_EQ(std::round(kDefaultScreenCastHeight * kMinAspectRatio), |
| 1774 result.Width()); |
| 1703 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); | 1775 EXPECT_EQ(kDefaultScreenCastHeight, result.Height()); |
| 1704 CheckNonResolutionDefaults(result); | 1776 CheckNonResolutionDefaults(result); |
| 1705 EXPECT_EQ(10.0, result.track_adapter_settings().min_aspect_ratio); | 1777 EXPECT_EQ(kMinAspectRatio, result.track_adapter_settings().min_aspect_ratio); |
| 1706 EXPECT_EQ( | 1778 EXPECT_EQ( |
| 1707 kMaxScreenCastDimension / static_cast<double>(kMinScreenCastDimension), | 1779 kMaxScreenCastDimension / static_cast<double>(kMinScreenCastDimension), |
| 1708 result.track_adapter_settings().max_aspect_ratio); | 1780 result.track_adapter_settings().max_aspect_ratio); |
| 1709 CheckTrackAdapterSettingsEqualsFormat(result); | 1781 CheckTrackAdapterSettingsEqualsFormat(result); |
| 1710 } | 1782 } |
| 1711 | 1783 |
| 1712 TEST_F(MediaStreamConstraintsUtilVideoContentTest, | 1784 TEST_F(MediaStreamConstraintsUtilVideoContentTest, |
| 1713 AdvancedContradictoryExactFrameRate) { | 1785 AdvancedContradictoryExactFrameRate) { |
| 1714 constraint_factory_.Reset(); | 1786 constraint_factory_.Reset(); |
| 1715 blink::WebMediaTrackConstraintSet& advanced1 = | 1787 blink::WebMediaTrackConstraintSet& advanced1 = |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1979 // Only specifying a maximum resolution allows resolution adjustment. | 2051 // Only specifying a maximum resolution allows resolution adjustment. |
| 1980 EXPECT_EQ(media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT, | 2052 EXPECT_EQ(media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT, |
| 1981 result.ResolutionChangePolicy()); | 2053 result.ResolutionChangePolicy()); |
| 1982 EXPECT_EQ(1.0 / 4000, result.track_adapter_settings().min_aspect_ratio); | 2054 EXPECT_EQ(1.0 / 4000, result.track_adapter_settings().min_aspect_ratio); |
| 1983 EXPECT_EQ(4000.0, result.track_adapter_settings().max_aspect_ratio); | 2055 EXPECT_EQ(4000.0, result.track_adapter_settings().max_aspect_ratio); |
| 1984 CheckTrackAdapterSettingsEqualsFormat(result); | 2056 CheckTrackAdapterSettingsEqualsFormat(result); |
| 1985 } | 2057 } |
| 1986 } | 2058 } |
| 1987 | 2059 |
| 1988 } // namespace content | 2060 } // namespace content |
| OLD | NEW |