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 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 | 175 |
176 TEST_F(RendererWebMediaPlayerDelegateTest, IdleDelegatesAreSuspended) { | 176 TEST_F(RendererWebMediaPlayerDelegateTest, IdleDelegatesAreSuspended) { |
177 // Start the tick clock off at a non-null value. | 177 // Start the tick clock off at a non-null value. |
178 base::SimpleTestTickClock tick_clock; | 178 base::SimpleTestTickClock tick_clock; |
179 tick_clock.Advance(base::TimeDelta::FromSeconds(1234)); | 179 tick_clock.Advance(base::TimeDelta::FromSeconds(1234)); |
180 | 180 |
181 const base::TimeDelta kIdleTimeout = base::TimeDelta::FromSeconds(2); | 181 const base::TimeDelta kIdleTimeout = base::TimeDelta::FromSeconds(2); |
182 delegate_manager_->SetIdleCleanupParamsForTesting(kIdleTimeout, &tick_clock); | 182 delegate_manager_->SetIdleCleanupParamsForTesting(kIdleTimeout, &tick_clock); |
183 EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); | 183 EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); |
184 | 184 |
185 // Just adding an observer should not start the idle timer. | 185 // Just adding an observer should start the idle timer. |
186 testing::StrictMock<MockWebMediaPlayerDelegateObserver> observer_1; | 186 testing::StrictMock<MockWebMediaPlayerDelegateObserver> observer_1; |
187 const int delegate_id_1 = delegate_manager_->AddObserver(&observer_1); | 187 const int delegate_id_1 = delegate_manager_->AddObserver(&observer_1); |
188 EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); | 188 EXPECT_TRUE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); |
189 | 189 |
190 // Starting playback should not have an idle timer. | 190 // Starting playback should not have an idle timer. |
191 delegate_manager_->DidPlay(delegate_id_1, true, true, false, | 191 delegate_manager_->DidPlay(delegate_id_1, true, true, false, |
192 media::MediaContentType::Persistent); | 192 media::MediaContentType::Persistent); |
193 EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); | 193 EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); |
194 | 194 |
195 // Never calling DidPlay() but calling DidPause() should count as idle. | 195 // Never calling DidPlay() but calling DidPause() should count as idle. |
196 testing::StrictMock<MockWebMediaPlayerDelegateObserver> observer_2; | 196 testing::StrictMock<MockWebMediaPlayerDelegateObserver> observer_2; |
197 const int delegate_id_2 = delegate_manager_->AddObserver(&observer_2); | 197 const int delegate_id_2 = delegate_manager_->AddObserver(&observer_2); |
198 delegate_manager_->DidPause(delegate_id_2, false); | 198 delegate_manager_->DidPause(delegate_id_2, false); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 // Start the tick clock off at a non-null value. | 262 // Start the tick clock off at a non-null value. |
263 base::SimpleTestTickClock tick_clock; | 263 base::SimpleTestTickClock tick_clock; |
264 tick_clock.Advance(base::TimeDelta::FromSeconds(1234)); | 264 tick_clock.Advance(base::TimeDelta::FromSeconds(1234)); |
265 | 265 |
266 const base::TimeDelta kIdleTimeout = base::TimeDelta::FromSeconds(2); | 266 const base::TimeDelta kIdleTimeout = base::TimeDelta::FromSeconds(2); |
267 delegate_manager_->SetIdleCleanupParamsForTesting(kIdleTimeout, &tick_clock); | 267 delegate_manager_->SetIdleCleanupParamsForTesting(kIdleTimeout, &tick_clock); |
268 EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); | 268 EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); |
269 | 269 |
270 testing::StrictMock<MockWebMediaPlayerDelegateObserver> observer_1; | 270 testing::StrictMock<MockWebMediaPlayerDelegateObserver> observer_1; |
271 const int delegate_id_1 = delegate_manager_->AddObserver(&observer_1); | 271 const int delegate_id_1 = delegate_manager_->AddObserver(&observer_1); |
272 EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); | 272 EXPECT_TRUE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); |
273 | 273 |
274 // Calling DidPause() should instantly queue the timeout task. | 274 // Calling DidPause() should instantly queue the timeout task. |
275 delegate_manager_->DidPause(delegate_id_1, false); | 275 delegate_manager_->DidPause(delegate_id_1, false); |
276 EXPECT_TRUE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); | 276 EXPECT_TRUE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); |
277 | 277 |
278 // Wait for the suspend request, but don't call PlayerGone(). | 278 // Wait for the suspend request, but don't call PlayerGone(). |
279 EXPECT_CALL(observer_1, OnSuspendRequested(false)); | 279 EXPECT_CALL(observer_1, OnSuspendRequested(false)).Times(testing::AtLeast(1)); |
280 base::RunLoop run_loop; | 280 base::RunLoop run_loop; |
281 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, | 281 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, |
282 run_loop.QuitClosure()); | 282 run_loop.QuitClosure()); |
283 tick_clock.Advance(kIdleTimeout + base::TimeDelta::FromMicroseconds(1)); | 283 tick_clock.Advance(kIdleTimeout + base::TimeDelta::FromMicroseconds(1)); |
284 run_loop.Run(); | 284 run_loop.Run(); |
285 | 285 |
286 // Even though the player did not call PlayerGone() it should be removed from | 286 // Even though the player did not call PlayerGone() it should be removed from |
287 // future idle cleanup polls. | 287 // future idle cleanup polls. |
288 EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); | 288 EXPECT_FALSE(delegate_manager_->IsIdleCleanupTimerRunningForTesting()); |
289 delegate_manager_->RemoveObserver(delegate_id_1); | 289 delegate_manager_->RemoveObserver(delegate_id_1); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 EXPECT_FALSE(HasPlayingVideo(delegate_id)); | 331 EXPECT_FALSE(HasPlayingVideo(delegate_id)); |
332 | 332 |
333 // Removing the observer also removes the video from the set. | 333 // Removing the observer also removes the video from the set. |
334 delegate_manager_->DidPlay(delegate_id, true, true, false, | 334 delegate_manager_->DidPlay(delegate_id, true, true, false, |
335 MediaContentType::Persistent); | 335 MediaContentType::Persistent); |
336 delegate_manager_->RemoveObserver(delegate_id); | 336 delegate_manager_->RemoveObserver(delegate_id); |
337 EXPECT_FALSE(HasPlayingVideo(delegate_id)); | 337 EXPECT_FALSE(HasPlayingVideo(delegate_id)); |
338 } | 338 } |
339 | 339 |
340 TEST_F(RendererWebMediaPlayerDelegateTest, IsPlayingBackgroundVideo) { | 340 TEST_F(RendererWebMediaPlayerDelegateTest, IsPlayingBackgroundVideo) { |
341 MockWebMediaPlayerDelegateObserver observer; | 341 testing::NiceMock<MockWebMediaPlayerDelegateObserver> observer; |
342 int delegate_id = delegate_manager_->AddObserver(&observer); | 342 int delegate_id = delegate_manager_->AddObserver(&observer); |
343 EXPECT_FALSE(delegate_manager_->IsPlayingBackgroundVideo()); | 343 EXPECT_FALSE(delegate_manager_->IsPlayingBackgroundVideo()); |
344 | 344 |
345 // Showing the frame always clears the flag. | 345 // Showing the frame always clears the flag. |
346 SetPlayingBackgroundVideo(true); | 346 SetPlayingBackgroundVideo(true); |
347 delegate_manager_->WasShown(); | 347 delegate_manager_->WasShown(); |
348 EXPECT_FALSE(delegate_manager_->IsPlayingBackgroundVideo()); | 348 EXPECT_FALSE(delegate_manager_->IsPlayingBackgroundVideo()); |
349 | 349 |
350 // Pausing anything other than a local playing video doesn't affect the flag. | 350 // Pausing anything other than a local playing video doesn't affect the flag. |
351 SetPlayingBackgroundVideo(true); | 351 SetPlayingBackgroundVideo(true); |
(...skipping 17 matching lines...) Expand all Loading... |
369 | 369 |
370 delegate_manager_->DidPlay(delegate_id, true, true, false, | 370 delegate_manager_->DidPlay(delegate_id, true, true, false, |
371 MediaContentType::Persistent); | 371 MediaContentType::Persistent); |
372 CallOnMediaDelegatePlay(delegate_id); | 372 CallOnMediaDelegatePlay(delegate_id); |
373 EXPECT_NE(old_value, delegate_manager_->IsPlayingBackgroundVideo()); | 373 EXPECT_NE(old_value, delegate_manager_->IsPlayingBackgroundVideo()); |
374 } | 374 } |
375 | 375 |
376 #if defined(OS_ANDROID) | 376 #if defined(OS_ANDROID) |
377 | 377 |
378 TEST_F(RendererWebMediaPlayerDelegateTest, Histograms) { | 378 TEST_F(RendererWebMediaPlayerDelegateTest, Histograms) { |
379 MockWebMediaPlayerDelegateObserver observer; | 379 testing::NiceMock<MockWebMediaPlayerDelegateObserver> observer; |
380 int delegate_id = delegate_manager_->AddObserver(&observer); | 380 int delegate_id = delegate_manager_->AddObserver(&observer); |
381 base::HistogramTester histogram_tester; | 381 base::HistogramTester histogram_tester; |
382 histogram_tester.ExpectTotalCount("Media.Android.BackgroundVideoTime", 0); | 382 histogram_tester.ExpectTotalCount("Media.Android.BackgroundVideoTime", 0); |
383 | 383 |
384 // Pausing or showing doesn't record anything as background playback | 384 // Pausing or showing doesn't record anything as background playback |
385 // hasn't started yet. | 385 // hasn't started yet. |
386 delegate_manager_->DidPlay(delegate_id, true, true, false, | 386 delegate_manager_->DidPlay(delegate_id, true, true, false, |
387 MediaContentType::Persistent); | 387 MediaContentType::Persistent); |
388 CallOnMediaDelegatePause(delegate_id); | 388 CallOnMediaDelegatePause(delegate_id); |
389 histogram_tester.ExpectTotalCount("Media.Android.BackgroundVideoTime", 0); | 389 histogram_tester.ExpectTotalCount("Media.Android.BackgroundVideoTime", 0); |
(...skipping 14 matching lines...) Expand all Loading... |
404 delegate_manager_->DidPlay(delegate_id, true, true, false, | 404 delegate_manager_->DidPlay(delegate_id, true, true, false, |
405 MediaContentType::Persistent); | 405 MediaContentType::Persistent); |
406 SetPlayingBackgroundVideo(true); | 406 SetPlayingBackgroundVideo(true); |
407 delegate_manager_->WasShown(); | 407 delegate_manager_->WasShown(); |
408 histogram_tester.ExpectTotalCount("Media.Android.BackgroundVideoTime", 2); | 408 histogram_tester.ExpectTotalCount("Media.Android.BackgroundVideoTime", 2); |
409 } | 409 } |
410 | 410 |
411 #endif // OS_ANDROID | 411 #endif // OS_ANDROID |
412 | 412 |
413 } // namespace media | 413 } // namespace media |
OLD | NEW |