Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(254)

Side by Side Diff: content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc

Issue 2681863005: [Video] MediaSession API event handlers can resume background video. (Closed)
Patch Set: Updated the comment in ComputePlayState Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « content/renderer/media/renderer_webmediaplayer_delegate.cc ('k') | content/renderer/media/webmediaplayer_ms_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698