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 |