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

Unified Diff: content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc

Issue 1796403002: Don't mark a WebMediaPlayer as idle until it has size and first frame. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc
diff --git a/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc b/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc
index eb4ecd64a8bc07f433d263953cd8fb45d9db2b0f..2205a8b53d325afb90730c2d5a1b6f474ebcbf2c 100644
--- a/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc
+++ b/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc
@@ -160,16 +160,20 @@ TEST_F(RendererWebMediaPlayerDelegateTest, IdleDelegatesAreSuspended) {
delegate_manager_->SetIdleCleanupParamsForTesting(kIdleTimeout, &tick_clock);
EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting());
+ // Just adding an observer should not start the idle timer.
testing::StrictMock<MockWebMediaPlayerDelegateObserver> observer_1;
const int delegate_id_1 = delegate_manager_->AddObserver(&observer_1);
- EXPECT_TRUE(delegate_manager_->IsIdleCleanupTimerRunningForTesting());
+ EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting());
+
+ // Starting playback should not have an idle timer.
delegate_manager_->DidPlay(delegate_id_1, true, true, false,
base::TimeDelta());
EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting());
- // Never playing should count as idle.
+ // Never calling DidPlay() but calling DidPause() should count as idle.
testing::StrictMock<MockWebMediaPlayerDelegateObserver> observer_2;
const int delegate_id_2 = delegate_manager_->AddObserver(&observer_2);
+ delegate_manager_->DidPause(delegate_id_2, false);
EXPECT_TRUE(delegate_manager_->IsIdleCleanupTimerRunningForTesting());
// Adding the observer should instantly queue the timeout task, once run the
@@ -240,10 +244,13 @@ TEST_F(RendererWebMediaPlayerDelegateTest, IdleDelegatesIgnoresSuspendRequest) {
testing::StrictMock<MockWebMediaPlayerDelegateObserver> observer_1;
const int delegate_id_1 = delegate_manager_->AddObserver(&observer_1);
+ EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting());
+
+ // Calling DidPause() should instantly queue the timeout task.
+ delegate_manager_->DidPause(delegate_id_1, false);
EXPECT_TRUE(delegate_manager_->IsIdleCleanupTimerRunningForTesting());
- // Adding the observer should instantly queue the timeout task, once run the
- // second delegate should be expired while the first is kept alive.
+ // Wait for the suspend request, but don't call PlayerGone().
EXPECT_CALL(observer_1, OnSuspendRequested(false));
base::RunLoop run_loop;
base::MessageLoop::current()->PostTask(FROM_HERE, run_loop.QuitClosure());

Powered by Google App Engine
This is Rietveld 408576698