| 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 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 bool IsSuspended() { return wmpi_->pipeline_controller_.IsSuspended(); } | 272 bool IsSuspended() { return wmpi_->pipeline_controller_.IsSuspended(); } |
| 273 | 273 |
| 274 void AddBufferedRanges() { | 274 void AddBufferedRanges() { |
| 275 wmpi_->buffered_data_source_host_.AddBufferedByteRange(0, 1); | 275 wmpi_->buffered_data_source_host_.AddBufferedByteRange(0, 1); |
| 276 } | 276 } |
| 277 | 277 |
| 278 void SetDelegateState(WebMediaPlayerImpl::DelegateState state) { | 278 void SetDelegateState(WebMediaPlayerImpl::DelegateState state) { |
| 279 wmpi_->SetDelegateState(state, false); | 279 wmpi_->SetDelegateState(state, false); |
| 280 } | 280 } |
| 281 | 281 |
| 282 bool ShouldDisableVideoWhenHidden() const { | 282 bool ShouldDisableVideoWhenBackground() const { |
| 283 return wmpi_->ShouldDisableVideoWhenHidden(); | 283 return wmpi_->ShouldDisableVideoWhenBackground(); |
| 284 } | 284 } |
| 285 | 285 |
| 286 bool ShouldPauseVideoWhenHidden() const { | 286 bool ShouldPauseVideoWhenBackground() const { |
| 287 return wmpi_->ShouldPauseVideoWhenHidden(); | 287 return wmpi_->ShouldPauseVideoWhenBackground(); |
| 288 } | 288 } |
| 289 | 289 |
| 290 bool IsBackgroundOptimizationCandidate() const { | 290 bool IsBackgroundOptimizationCandidate() const { |
| 291 return wmpi_->IsBackgroundOptimizationCandidate(); | 291 return wmpi_->IsBackgroundOptimizationCandidate(); |
| 292 } | 292 } |
| 293 | 293 |
| 294 void SetVideoKeyframeDistanceAverage(base::TimeDelta value) { | 294 void SetVideoKeyframeDistanceAverage(base::TimeDelta value) { |
| 295 PipelineStatistics statistics; | 295 PipelineStatistics statistics; |
| 296 statistics.video_keyframe_distance_average = value; | 296 statistics.video_keyframe_distance_average = value; |
| 297 wmpi_->SetPipelineStatisticsForTest(statistics); | 297 wmpi_->SetPipelineStatisticsForTest(statistics); |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 TEST_F(WebMediaPlayerImplTest, BackgroundOptimizationsFeatureEnabled) { | 682 TEST_F(WebMediaPlayerImplTest, BackgroundOptimizationsFeatureEnabled) { |
| 683 base::test::ScopedFeatureList scoped_feature_list; | 683 base::test::ScopedFeatureList scoped_feature_list; |
| 684 scoped_feature_list.InitAndEnableFeature(kBackgroundVideoTrackOptimization); | 684 scoped_feature_list.InitAndEnableFeature(kBackgroundVideoTrackOptimization); |
| 685 InitializeWebMediaPlayerImpl(); | 685 InitializeWebMediaPlayerImpl(); |
| 686 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(5)); | 686 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(5)); |
| 687 SetDuration(base::TimeDelta::FromSeconds(300)); | 687 SetDuration(base::TimeDelta::FromSeconds(300)); |
| 688 | 688 |
| 689 // Audible video. | 689 // Audible video. |
| 690 SetMetadata(true, true); | 690 SetMetadata(true, true); |
| 691 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); | 691 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); |
| 692 EXPECT_TRUE(ShouldDisableVideoWhenHidden()); | 692 EXPECT_TRUE(ShouldDisableVideoWhenBackground()); |
| 693 EXPECT_FALSE(ShouldPauseVideoWhenHidden()); | 693 EXPECT_FALSE(ShouldPauseVideoWhenBackground()); |
| 694 | 694 |
| 695 // Video only. | 695 // Video only. |
| 696 SetMetadata(false, true); | 696 SetMetadata(false, true); |
| 697 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); | 697 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); |
| 698 EXPECT_TRUE(ShouldPauseVideoWhenHidden()); | 698 EXPECT_TRUE(ShouldPauseVideoWhenBackground()); |
| 699 EXPECT_FALSE(ShouldDisableVideoWhenHidden()); | 699 EXPECT_FALSE(ShouldDisableVideoWhenBackground()); |
| 700 | 700 |
| 701 // Audio only. | 701 // Audio only. |
| 702 SetMetadata(true, false); | 702 SetMetadata(true, false); |
| 703 EXPECT_FALSE(IsBackgroundOptimizationCandidate()); | 703 EXPECT_FALSE(IsBackgroundOptimizationCandidate()); |
| 704 EXPECT_FALSE(ShouldPauseVideoWhenHidden()); | 704 EXPECT_FALSE(ShouldPauseVideoWhenBackground()); |
| 705 EXPECT_FALSE(ShouldDisableVideoWhenHidden()); | 705 EXPECT_FALSE(ShouldDisableVideoWhenBackground()); |
| 706 | 706 |
| 707 // Duration is shorter than max video keyframe distance. | 707 // Duration is shorter than max video keyframe distance. |
| 708 SetDuration(base::TimeDelta::FromSeconds(5)); | 708 SetDuration(base::TimeDelta::FromSeconds(5)); |
| 709 SetMetadata(true, true); | 709 SetMetadata(true, true); |
| 710 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); | 710 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); |
| 711 EXPECT_FALSE(ShouldPauseVideoWhenHidden()); | 711 EXPECT_FALSE(ShouldPauseVideoWhenBackground()); |
| 712 EXPECT_TRUE(ShouldDisableVideoWhenHidden()); | 712 EXPECT_TRUE(ShouldDisableVideoWhenBackground()); |
| 713 | 713 |
| 714 // Average keyframe distance is too big. | 714 // Average keyframe distance is too big. |
| 715 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(100)); | 715 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(100)); |
| 716 SetDuration(base::TimeDelta::FromSeconds(300)); | 716 SetDuration(base::TimeDelta::FromSeconds(300)); |
| 717 EXPECT_FALSE(IsBackgroundOptimizationCandidate()); | 717 EXPECT_FALSE(IsBackgroundOptimizationCandidate()); |
| 718 EXPECT_FALSE(ShouldPauseVideoWhenHidden()); | 718 EXPECT_FALSE(ShouldPauseVideoWhenBackground()); |
| 719 EXPECT_FALSE(ShouldDisableVideoWhenHidden()); | 719 EXPECT_FALSE(ShouldDisableVideoWhenBackground()); |
| 720 } | 720 } |
| 721 | 721 |
| 722 TEST_F(WebMediaPlayerImplTest, BackgroundOptimizationsFeatureDisabled) { | 722 TEST_F(WebMediaPlayerImplTest, BackgroundOptimizationsFeatureDisabled) { |
| 723 base::test::ScopedFeatureList scoped_feature_list; | 723 base::test::ScopedFeatureList scoped_feature_list; |
| 724 scoped_feature_list.InitAndDisableFeature(kBackgroundVideoTrackOptimization); | 724 scoped_feature_list.InitAndDisableFeature(kBackgroundVideoTrackOptimization); |
| 725 | 725 |
| 726 InitializeWebMediaPlayerImpl(); | 726 InitializeWebMediaPlayerImpl(); |
| 727 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(5)); | 727 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(5)); |
| 728 SetDuration(base::TimeDelta::FromSeconds(300)); | 728 SetDuration(base::TimeDelta::FromSeconds(300)); |
| 729 | 729 |
| 730 // Audible video. | 730 // Audible video. |
| 731 SetMetadata(true, true); | 731 SetMetadata(true, true); |
| 732 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); | 732 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); |
| 733 EXPECT_FALSE(ShouldDisableVideoWhenHidden()); | 733 EXPECT_FALSE(ShouldDisableVideoWhenBackground()); |
| 734 EXPECT_FALSE(ShouldPauseVideoWhenHidden()); | 734 EXPECT_FALSE(ShouldPauseVideoWhenBackground()); |
| 735 | 735 |
| 736 // Video only (pausing is enabled on Android). | 736 // Video only (pausing is enabled on Android). |
| 737 SetMetadata(false, true); | 737 SetMetadata(false, true); |
| 738 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); | 738 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); |
| 739 EXPECT_FALSE(ShouldDisableVideoWhenHidden()); | 739 EXPECT_FALSE(ShouldDisableVideoWhenBackground()); |
| 740 #if defined(OS_ANDROID) | 740 #if defined(OS_ANDROID) |
| 741 EXPECT_TRUE(ShouldPauseVideoWhenHidden()); | 741 EXPECT_TRUE(ShouldPauseVideoWhenBackground()); |
| 742 | 742 |
| 743 // On Android, the duration and keyframe distance don't matter for video-only. | 743 // On Android, the duration and keyframe distance don't matter for video-only. |
| 744 SetDuration(base::TimeDelta::FromSeconds(5)); | 744 SetDuration(base::TimeDelta::FromSeconds(5)); |
| 745 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); | 745 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); |
| 746 EXPECT_TRUE(ShouldPauseVideoWhenHidden()); | 746 EXPECT_TRUE(ShouldPauseVideoWhenBackground()); |
| 747 | 747 |
| 748 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(100)); | 748 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(100)); |
| 749 SetDuration(base::TimeDelta::FromSeconds(300)); | 749 SetDuration(base::TimeDelta::FromSeconds(300)); |
| 750 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); | 750 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); |
| 751 EXPECT_TRUE(ShouldPauseVideoWhenHidden()); | 751 EXPECT_TRUE(ShouldPauseVideoWhenBackground()); |
| 752 | 752 |
| 753 // Restore average keyframe distance. | 753 // Restore average keyframe distance. |
| 754 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(5)); | 754 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(5)); |
| 755 #else | 755 #else |
| 756 EXPECT_FALSE(ShouldPauseVideoWhenHidden()); | 756 EXPECT_FALSE(ShouldPauseVideoWhenBackground()); |
| 757 #endif | 757 #endif |
| 758 | 758 |
| 759 // Audio only. | 759 // Audio only. |
| 760 SetMetadata(true, false); | 760 SetMetadata(true, false); |
| 761 EXPECT_FALSE(IsBackgroundOptimizationCandidate()); | 761 EXPECT_FALSE(IsBackgroundOptimizationCandidate()); |
| 762 EXPECT_FALSE(ShouldPauseVideoWhenHidden()); | 762 EXPECT_FALSE(ShouldPauseVideoWhenBackground()); |
| 763 EXPECT_FALSE(ShouldDisableVideoWhenHidden()); | 763 EXPECT_FALSE(ShouldDisableVideoWhenBackground()); |
| 764 | 764 |
| 765 // Duration is shorter than max video keyframe distance. | 765 // Duration is shorter than max video keyframe distance. |
| 766 SetDuration(base::TimeDelta::FromSeconds(5)); | 766 SetDuration(base::TimeDelta::FromSeconds(5)); |
| 767 SetMetadata(true, true); | 767 SetMetadata(true, true); |
| 768 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); | 768 EXPECT_TRUE(IsBackgroundOptimizationCandidate()); |
| 769 EXPECT_FALSE(ShouldPauseVideoWhenHidden()); | 769 EXPECT_FALSE(ShouldPauseVideoWhenBackground()); |
| 770 EXPECT_FALSE(ShouldDisableVideoWhenHidden()); | 770 EXPECT_FALSE(ShouldDisableVideoWhenBackground()); |
| 771 | 771 |
| 772 // Average keyframe distance is too big. | 772 // Average keyframe distance is too big. |
| 773 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(100)); | 773 SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(100)); |
| 774 SetDuration(base::TimeDelta::FromSeconds(300)); | 774 SetDuration(base::TimeDelta::FromSeconds(300)); |
| 775 EXPECT_FALSE(IsBackgroundOptimizationCandidate()); | 775 EXPECT_FALSE(IsBackgroundOptimizationCandidate()); |
| 776 EXPECT_FALSE(ShouldPauseVideoWhenHidden()); | 776 EXPECT_FALSE(ShouldPauseVideoWhenBackground()); |
| 777 EXPECT_FALSE(ShouldDisableVideoWhenHidden()); | 777 EXPECT_FALSE(ShouldDisableVideoWhenBackground()); |
| 778 } | 778 } |
| 779 | 779 |
| 780 } // namespace media | 780 } // namespace media |
| OLD | NEW |