OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "media/blink/webmediaplayer_impl.h" | 5 #include "media/blink/webmediaplayer_impl.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 791 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
802 EXPECT_FALSE(IsIdlePauseTimerRunning()); | 802 EXPECT_FALSE(IsIdlePauseTimerRunning()); |
803 | 803 |
804 SetMetadata(true, true); | 804 SetMetadata(true, true); |
805 ScheduleIdlePauseTimer(); | 805 ScheduleIdlePauseTimer(); |
806 EXPECT_TRUE(IsIdlePauseTimerRunning()); | 806 EXPECT_TRUE(IsIdlePauseTimerRunning()); |
807 } | 807 } |
808 | 808 |
809 class WebMediaPlayerImplBackgroundBehaviorTest | 809 class WebMediaPlayerImplBackgroundBehaviorTest |
810 : public WebMediaPlayerImplTest, | 810 : public WebMediaPlayerImplTest, |
811 public ::testing::WithParamInterface< | 811 public ::testing::WithParamInterface< |
812 std::tuple<bool, bool, int, int, bool, bool>> { | 812 std::tuple<bool, bool, int, int, bool, bool, bool>> { |
813 public: | 813 public: |
814 // Indices of the tuple parameters. | 814 // Indices of the tuple parameters. |
815 static const int kIsMediaSuspendEnabled = 0; | 815 static const int kIsMediaSuspendEnabled = 0; |
816 static const int kIsBackgroundOptimizationEnabled = 1; | 816 static const int kIsBackgroundOptimizationEnabled = 1; |
817 static const int kDurationSec = 2; | 817 static const int kDurationSec = 2; |
818 static const int kAverageKeyframeDistanceSec = 3; | 818 static const int kAverageKeyframeDistanceSec = 3; |
819 static const int kIsResumeBackgroundVideoEnabled = 4; | 819 static const int kIsResumeBackgroundVideoEnabled = 4; |
820 static const int kIsMediaSource = 5; | 820 static const int kIsMediaSource = 5; |
| 821 static const int kIsBackgroundPauseEnabled = 6; |
821 | 822 |
822 void SetUp() override { | 823 void SetUp() override { |
823 WebMediaPlayerImplTest::SetUp(); | 824 WebMediaPlayerImplTest::SetUp(); |
824 | 825 |
825 SetUpMediaSuspend(IsMediaSuspendOn()); | 826 SetUpMediaSuspend(IsMediaSuspendOn()); |
826 | 827 |
827 std::string enabled_features; | 828 std::string enabled_features; |
828 std::string disabled_features; | 829 std::string disabled_features; |
829 if (IsBackgroundOptimizationOn()) { | 830 if (IsBackgroundOptimizationOn()) { |
830 enabled_features += kBackgroundVideoTrackOptimization.name; | 831 enabled_features += kBackgroundVideoTrackOptimization.name; |
831 } else { | 832 } else { |
832 disabled_features += kBackgroundVideoTrackOptimization.name; | 833 disabled_features += kBackgroundVideoTrackOptimization.name; |
833 } | 834 } |
834 | 835 |
| 836 if (IsBackgroundPauseOn()) { |
| 837 if (!enabled_features.empty()) |
| 838 enabled_features += ","; |
| 839 enabled_features += kBackgroundVideoPauseOptimization.name; |
| 840 } else { |
| 841 if (!disabled_features.empty()) |
| 842 disabled_features += ","; |
| 843 disabled_features += kBackgroundVideoPauseOptimization.name; |
| 844 } |
| 845 |
835 if (IsResumeBackgroundVideoEnabled()) { | 846 if (IsResumeBackgroundVideoEnabled()) { |
836 if (!enabled_features.empty()) | 847 if (!enabled_features.empty()) |
837 enabled_features += ","; | 848 enabled_features += ","; |
838 enabled_features += kResumeBackgroundVideo.name; | 849 enabled_features += kResumeBackgroundVideo.name; |
839 } else { | 850 } else { |
840 if (!disabled_features.empty()) | 851 if (!disabled_features.empty()) |
841 disabled_features += ","; | 852 disabled_features += ","; |
842 disabled_features += kResumeBackgroundVideo.name; | 853 disabled_features += kResumeBackgroundVideo.name; |
843 } | 854 } |
844 | 855 |
(...skipping 24 matching lines...) Expand all Loading... |
869 } | 880 } |
870 | 881 |
871 bool IsBackgroundOptimizationOn() { | 882 bool IsBackgroundOptimizationOn() { |
872 return std::get<kIsBackgroundOptimizationEnabled>(GetParam()); | 883 return std::get<kIsBackgroundOptimizationEnabled>(GetParam()); |
873 } | 884 } |
874 | 885 |
875 bool IsResumeBackgroundVideoEnabled() { | 886 bool IsResumeBackgroundVideoEnabled() { |
876 return std::get<kIsResumeBackgroundVideoEnabled>(GetParam()); | 887 return std::get<kIsResumeBackgroundVideoEnabled>(GetParam()); |
877 } | 888 } |
878 | 889 |
| 890 bool IsBackgroundPauseOn() { |
| 891 return std::get<kIsBackgroundPauseEnabled>(GetParam()); |
| 892 } |
| 893 |
879 int GetDurationSec() const { return std::get<kDurationSec>(GetParam()); } | 894 int GetDurationSec() const { return std::get<kDurationSec>(GetParam()); } |
880 | 895 |
881 int GetAverageKeyframeDistanceSec() const { | 896 int GetAverageKeyframeDistanceSec() const { |
882 return std::get<kAverageKeyframeDistanceSec>(GetParam()); | 897 return std::get<kAverageKeyframeDistanceSec>(GetParam()); |
883 } | 898 } |
884 | 899 |
885 int GetMaxKeyframeDistanceSec() const { | 900 int GetMaxKeyframeDistanceSec() const { |
886 base::TimeDelta max_keyframe_distance = | 901 base::TimeDelta max_keyframe_distance = |
887 std::get<kIsMediaSource>(GetParam()) | 902 std::get<kIsMediaSource>(GetParam()) |
888 ? kMaxKeyframeDistanceToDisableBackgroundVideoMSE | 903 ? kMaxKeyframeDistanceToDisableBackgroundVideoMSE |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
931 | 946 |
932 // There's no optimization criteria for video only on Android. | 947 // There's no optimization criteria for video only on Android. |
933 bool matches_requirements = | 948 bool matches_requirements = |
934 IsAndroid() || | 949 IsAndroid() || |
935 ((GetDurationSec() < GetMaxKeyframeDistanceSec()) || | 950 ((GetDurationSec() < GetMaxKeyframeDistanceSec()) || |
936 (GetAverageKeyframeDistanceSec() < GetMaxKeyframeDistanceSec())); | 951 (GetAverageKeyframeDistanceSec() < GetMaxKeyframeDistanceSec())); |
937 EXPECT_EQ(matches_requirements, IsBackgroundOptimizationCandidate()); | 952 EXPECT_EQ(matches_requirements, IsBackgroundOptimizationCandidate()); |
938 | 953 |
939 // Video is always paused when suspension is on and only if matches the | 954 // Video is always paused when suspension is on and only if matches the |
940 // optimization criteria if the optimization is on. | 955 // optimization criteria if the optimization is on. |
941 bool should_pause = IsMediaSuspendOn() || | 956 bool should_pause = |
942 (IsBackgroundOptimizationOn() && matches_requirements); | 957 IsMediaSuspendOn() || (IsBackgroundPauseOn() && matches_requirements); |
943 EXPECT_EQ(should_pause, ShouldPauseVideoWhenHidden()); | 958 EXPECT_EQ(should_pause, ShouldPauseVideoWhenHidden()); |
944 } | 959 } |
945 | 960 |
946 TEST_P(WebMediaPlayerImplBackgroundBehaviorTest, AudioVideo) { | 961 TEST_P(WebMediaPlayerImplBackgroundBehaviorTest, AudioVideo) { |
947 SetMetadata(true, true); | 962 SetMetadata(true, true); |
948 | 963 |
949 // Optimization requirements are the same for all platforms. | 964 // Optimization requirements are the same for all platforms. |
950 bool matches_requirements = | 965 bool matches_requirements = |
951 (GetDurationSec() < GetMaxKeyframeDistanceSec()) || | 966 (GetDurationSec() < GetMaxKeyframeDistanceSec()) || |
952 (GetAverageKeyframeDistanceSec() < GetMaxKeyframeDistanceSec()); | 967 (GetAverageKeyframeDistanceSec() < GetMaxKeyframeDistanceSec()); |
953 | 968 |
954 EXPECT_EQ(matches_requirements, IsBackgroundOptimizationCandidate()); | 969 EXPECT_EQ(matches_requirements, IsBackgroundOptimizationCandidate()); |
955 EXPECT_EQ(IsBackgroundOptimizationOn() && matches_requirements, | 970 EXPECT_EQ(IsBackgroundOptimizationOn() && matches_requirements, |
956 ShouldDisableVideoWhenHidden()); | 971 ShouldDisableVideoWhenHidden()); |
957 | 972 |
958 // Only pause audible videos on Android if both media suspend and resume | 973 // Only pause audible videos if both media suspend and resume background |
959 // background videos is on. On Desktop | 974 // videos is on. Both are on by default on Android and off on desktop. |
960 EXPECT_EQ(IsMediaSuspendOn() && IsResumeBackgroundVideoEnabled(), | 975 EXPECT_EQ(IsMediaSuspendOn() && IsResumeBackgroundVideoEnabled(), |
961 ShouldPauseVideoWhenHidden()); | 976 ShouldPauseVideoWhenHidden()); |
962 } | 977 } |
963 | 978 |
964 INSTANTIATE_TEST_CASE_P(BackgroundBehaviorTestInstances, | 979 INSTANTIATE_TEST_CASE_P(BackgroundBehaviorTestInstances, |
965 WebMediaPlayerImplBackgroundBehaviorTest, | 980 WebMediaPlayerImplBackgroundBehaviorTest, |
966 ::testing::Combine(::testing::Bool(), | 981 ::testing::Combine(::testing::Bool(), |
967 ::testing::Bool(), | 982 ::testing::Bool(), |
968 ::testing::Values(5, 300), | 983 ::testing::Values(5, 300), |
969 ::testing::Values(5, 100), | 984 ::testing::Values(5, 100), |
970 ::testing::Bool(), | 985 ::testing::Bool(), |
| 986 ::testing::Bool(), |
971 ::testing::Bool())); | 987 ::testing::Bool())); |
972 | 988 |
973 } // namespace media | 989 } // namespace media |
OLD | NEW |