| 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 <tuple> | 5 #include <tuple> |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 } | 62 } |
| 63 | 63 |
| 64 void TearDown() override { | 64 void TearDown() override { |
| 65 delegate_manager_.reset(); | 65 delegate_manager_.reset(); |
| 66 RenderViewTest::TearDown(); | 66 RenderViewTest::TearDown(); |
| 67 } | 67 } |
| 68 | 68 |
| 69 protected: | 69 protected: |
| 70 IPC::TestSink& test_sink() { return render_thread_->sink(); } | 70 IPC::TestSink& test_sink() { return render_thread_->sink(); } |
| 71 | 71 |
| 72 void SetBackgroundVideoPlaybackUnlocked(bool is_unlocked) { | |
| 73 delegate_manager_->background_video_allowed_ = is_unlocked; | |
| 74 } | |
| 75 | |
| 76 void CallOnMediaDelegatePlay(int delegate_id) { | 72 void CallOnMediaDelegatePlay(int delegate_id) { |
| 77 delegate_manager_->OnMediaDelegatePlay(delegate_id); | 73 delegate_manager_->OnMediaDelegatePlay(delegate_id); |
| 78 } | 74 } |
| 79 | 75 |
| 80 void CallOnMediaDelegatePause(int delegate_id) { | 76 void CallOnMediaDelegatePause(int delegate_id) { |
| 81 delegate_manager_->OnMediaDelegatePause(delegate_id); | 77 delegate_manager_->OnMediaDelegatePause(delegate_id); |
| 82 } | 78 } |
| 83 | 79 |
| 84 void SetIsLowEndDeviceForTesting() { | 80 void SetIsLowEndDeviceForTesting() { |
| 85 delegate_manager_->SetIdleCleanupParamsForTesting(kIdleTimeout, | 81 delegate_manager_->SetIdleCleanupParamsForTesting(kIdleTimeout, |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 | 264 |
| 269 // Once the player is idle, it should be suspended after |kIdleTimeout|. | 265 // Once the player is idle, it should be suspended after |kIdleTimeout|. |
| 270 delegate_manager_->SetIdle(delegate_id_1, true); | 266 delegate_manager_->SetIdle(delegate_id_1, true); |
| 271 { | 267 { |
| 272 EXPECT_CALL(observer_1_, OnIdleTimeout()); | 268 EXPECT_CALL(observer_1_, OnIdleTimeout()); |
| 273 tick_clock_.Advance(kIdleTimeout + base::TimeDelta::FromMicroseconds(1)); | 269 tick_clock_.Advance(kIdleTimeout + base::TimeDelta::FromMicroseconds(1)); |
| 274 RunLoopOnce(); | 270 RunLoopOnce(); |
| 275 } | 271 } |
| 276 } | 272 } |
| 277 | 273 |
| 278 TEST_F(RendererWebMediaPlayerDelegateTest, IsBackgroundVideoPlaybackUnlocked) { | |
| 279 NiceMock<MockWebMediaPlayerDelegateObserver> observer; | |
| 280 int delegate_id = delegate_manager_->AddObserver(&observer); | |
| 281 EXPECT_FALSE(delegate_manager_->IsBackgroundVideoPlaybackUnlocked()); | |
| 282 | |
| 283 // Showing the frame always clears the flag. | |
| 284 SetBackgroundVideoPlaybackUnlocked(true); | |
| 285 delegate_manager_->WasShown(); | |
| 286 EXPECT_FALSE(delegate_manager_->IsBackgroundVideoPlaybackUnlocked()); | |
| 287 | |
| 288 // Pausing a currently playing video clears the flag. | |
| 289 delegate_manager_->DidPlay(delegate_id, true, true, | |
| 290 MediaContentType::Persistent); | |
| 291 SetBackgroundVideoPlaybackUnlocked(true); | |
| 292 CallOnMediaDelegatePause(delegate_id); | |
| 293 EXPECT_FALSE(delegate_manager_->IsBackgroundVideoPlaybackUnlocked()); | |
| 294 | |
| 295 // TODO(avayvod): this test can't mock the IsFrameHidden() method. | |
| 296 // Just test that the value changes or doesn't depending on whether the video | |
| 297 // is currently playing. | |
| 298 if (delegate_manager_->IsFrameHidden()) { | |
| 299 SetBackgroundVideoPlaybackUnlocked(false); | |
| 300 CallOnMediaDelegatePlay(delegate_id); | |
| 301 EXPECT_TRUE(delegate_manager_->IsBackgroundVideoPlaybackUnlocked()); | |
| 302 CallOnMediaDelegatePause(delegate_id); | |
| 303 EXPECT_FALSE(delegate_manager_->IsBackgroundVideoPlaybackUnlocked()); | |
| 304 } else { | |
| 305 SetBackgroundVideoPlaybackUnlocked(false); | |
| 306 CallOnMediaDelegatePlay(delegate_id); | |
| 307 EXPECT_FALSE(delegate_manager_->IsBackgroundVideoPlaybackUnlocked()); | |
| 308 CallOnMediaDelegatePause(delegate_id); | |
| 309 EXPECT_FALSE(delegate_manager_->IsBackgroundVideoPlaybackUnlocked()); | |
| 310 } | |
| 311 } | |
| 312 | |
| 313 #if defined(OS_ANDROID) | 274 #if defined(OS_ANDROID) |
| 314 | 275 |
| 315 TEST_F(RendererWebMediaPlayerDelegateTest, Histograms) { | 276 TEST_F(RendererWebMediaPlayerDelegateTest, Histograms) { |
| 316 NiceMock<MockWebMediaPlayerDelegateObserver> observer; | 277 NiceMock<MockWebMediaPlayerDelegateObserver> observer; |
| 317 int delegate_id = delegate_manager_->AddObserver(&observer); | 278 int delegate_id = delegate_manager_->AddObserver(&observer); |
| 318 base::HistogramTester histogram_tester; | 279 base::HistogramTester histogram_tester; |
| 319 histogram_tester.ExpectTotalCount("Media.Android.BackgroundVideoTime", 0); | 280 histogram_tester.ExpectTotalCount("Media.Android.BackgroundVideoTime", 0); |
| 320 | 281 |
| 321 // Play/pause while not hidden doesn't record anything. | 282 // Play/pause while not hidden doesn't record anything. |
| 322 delegate_manager_->DidPlay(delegate_id, true, true, | 283 delegate_manager_->DidPlay(delegate_id, true, true, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 341 MediaContentType::Persistent); | 302 MediaContentType::Persistent); |
| 342 RunLoopOnce(); | 303 RunLoopOnce(); |
| 343 delegate_manager_->SetFrameHiddenForTesting(false); | 304 delegate_manager_->SetFrameHiddenForTesting(false); |
| 344 RunLoopOnce(); | 305 RunLoopOnce(); |
| 345 histogram_tester.ExpectTotalCount("Media.Android.BackgroundVideoTime", 2); | 306 histogram_tester.ExpectTotalCount("Media.Android.BackgroundVideoTime", 2); |
| 346 } | 307 } |
| 347 | 308 |
| 348 #endif // OS_ANDROID | 309 #endif // OS_ANDROID |
| 349 | 310 |
| 350 } // namespace media | 311 } // namespace media |
| OLD | NEW |