| Index: content/browser/media/android/media_session_browsertest.cc
|
| diff --git a/content/browser/media/android/media_session_browsertest.cc b/content/browser/media/android/media_session_browsertest.cc
|
| deleted file mode 100644
|
| index f613c6783dee5511742b30ccf61da74556ea586e..0000000000000000000000000000000000000000
|
| --- a/content/browser/media/android/media_session_browsertest.cc
|
| +++ /dev/null
|
| @@ -1,1273 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "content/browser/media/android/media_session.h"
|
| -
|
| -#include <stddef.h>
|
| -
|
| -#include <list>
|
| -#include <vector>
|
| -
|
| -#include "base/macros.h"
|
| -#include "base/metrics/histogram_samples.h"
|
| -#include "base/test/histogram_tester.h"
|
| -#include "base/test/simple_test_clock.h"
|
| -#include "content/browser/media/android/media_session_observer.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "content/public/browser/web_contents_observer.h"
|
| -#include "content/public/test/content_browser_test.h"
|
| -#include "content/shell/browser/shell.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -
|
| -using content::WebContents;
|
| -using content::WebContentsObserver;
|
| -using content::MediaSession;
|
| -using content::MediaSessionObserver;
|
| -using content::MediaSessionUmaHelper;
|
| -
|
| -using ::testing::Expectation;
|
| -
|
| -namespace {
|
| -
|
| -class MockMediaSessionObserver : public MediaSessionObserver {
|
| - public:
|
| - MockMediaSessionObserver()
|
| - : received_resume_calls_(0),
|
| - received_suspend_calls_(0) {
|
| - }
|
| -
|
| - ~MockMediaSessionObserver() override = default;
|
| -
|
| - // Implements MediaSessionObserver.
|
| - void OnSuspend(int player_id) override {
|
| - EXPECT_GE(player_id, 0);
|
| - EXPECT_GT(players_.size(), static_cast<size_t>(player_id));
|
| -
|
| - ++received_suspend_calls_;
|
| - players_[player_id].is_playing_ = false;
|
| - }
|
| -
|
| - void OnResume(int player_id) override {
|
| - EXPECT_GE(player_id, 0);
|
| - EXPECT_GT(players_.size(), static_cast<size_t>(player_id));
|
| -
|
| - ++received_resume_calls_;
|
| - players_[player_id].is_playing_ = true;
|
| - }
|
| -
|
| - void OnSetVolumeMultiplier(int player_id, double volume_multiplier) override {
|
| - EXPECT_GE(player_id, 0);
|
| - EXPECT_GT(players_.size(), static_cast<size_t>(player_id));
|
| -
|
| - EXPECT_GE(volume_multiplier, 0.0f);
|
| - EXPECT_LE(volume_multiplier, 1.0f);
|
| -
|
| - players_[player_id].volume_multiplier_ = volume_multiplier;
|
| - }
|
| -
|
| - int StartNewPlayer() {
|
| - players_.push_back(MockPlayer(true, 1.0f));
|
| - return players_.size() - 1;
|
| - }
|
| -
|
| - bool IsPlaying(size_t player_id) {
|
| - EXPECT_GT(players_.size(), player_id);
|
| - return players_[player_id].is_playing_;
|
| - }
|
| -
|
| - double GetVolumeMultiplier(size_t player_id) {
|
| - EXPECT_GT(players_.size(), player_id);
|
| - return players_[player_id].volume_multiplier_;
|
| - }
|
| -
|
| - void SetPlaying(size_t player_id, bool playing) {
|
| - EXPECT_GT(players_.size(), player_id);
|
| - players_[player_id].is_playing_ = playing;
|
| - }
|
| -
|
| - int received_suspend_calls() const {
|
| - return received_suspend_calls_;
|
| - }
|
| -
|
| - int received_resume_calls() const {
|
| - return received_resume_calls_;
|
| - }
|
| -
|
| - private:
|
| - struct MockPlayer {
|
| - public:
|
| - MockPlayer(bool is_playing = true, double volume_multiplier = 1.0f)
|
| - : is_playing_(is_playing),
|
| - volume_multiplier_(volume_multiplier) {}
|
| - bool is_playing_;
|
| - double volume_multiplier_;
|
| - };
|
| -
|
| - // Basic representation of the players. The position in the vector is the
|
| - // player_id. The value of the vector is the playing status and volume.
|
| - std::vector<MockPlayer> players_;
|
| -
|
| - int received_resume_calls_;
|
| - int received_suspend_calls_;
|
| -};
|
| -
|
| -class MockWebContentsObserver : public WebContentsObserver {
|
| - public:
|
| - MockWebContentsObserver(WebContents* web_contents)
|
| - : WebContentsObserver(web_contents) {}
|
| -
|
| - MOCK_METHOD2(MediaSessionStateChanged,
|
| - void(bool is_controllable, bool is_suspended));
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -class MediaSessionBrowserTest : public content::ContentBrowserTest {
|
| - protected:
|
| - MediaSessionBrowserTest() = default;
|
| -
|
| - void SetUpOnMainThread() override {
|
| - ContentBrowserTest::SetUpOnMainThread();
|
| -
|
| - mock_web_contents_observer_.reset(
|
| - new MockWebContentsObserver(shell()->web_contents()));
|
| - media_session_ = MediaSession::Get(shell()->web_contents());
|
| - media_session_->ResetJavaRefForTest();
|
| - ASSERT_TRUE(media_session_);
|
| - }
|
| -
|
| - void TearDownOnMainThread() override {
|
| - mock_web_contents_observer_.reset();
|
| -
|
| - media_session_->RemoveAllPlayersForTest();
|
| - media_session_ = nullptr;
|
| -
|
| - ContentBrowserTest::TearDownOnMainThread();
|
| - }
|
| -
|
| - void StartNewPlayer(MockMediaSessionObserver* media_session_observer,
|
| - MediaSession::Type type) {
|
| - bool result = AddPlayer(
|
| - media_session_observer,
|
| - media_session_observer->StartNewPlayer(),
|
| - type);
|
| - EXPECT_TRUE(result);
|
| - }
|
| -
|
| - bool AddPlayer(MockMediaSessionObserver* media_session_observer,
|
| - int player_id,
|
| - MediaSession::Type type) {
|
| - return media_session_->AddPlayer(media_session_observer, player_id, type);
|
| - }
|
| -
|
| - void RemovePlayer(MockMediaSessionObserver* media_session_observer,
|
| - int player_id) {
|
| - media_session_->RemovePlayer(media_session_observer, player_id);
|
| - }
|
| -
|
| - void RemovePlayers(MockMediaSessionObserver* media_session_observer) {
|
| - media_session_->RemovePlayers(media_session_observer);
|
| - }
|
| -
|
| - void OnPlayerPaused(MockMediaSessionObserver* media_session_observer,
|
| - int player_id) {
|
| - media_session_->OnPlayerPaused(media_session_observer, player_id);
|
| - }
|
| -
|
| - bool HasAudioFocus() { return media_session_->IsActiveForTest(); }
|
| -
|
| - MediaSession::Type GetSessionType() {
|
| - return media_session_->audio_focus_type_for_test();
|
| - }
|
| -
|
| - bool IsControllable() { return media_session_->IsControllable(); }
|
| -
|
| - bool IsSuspended() { return media_session_->IsSuspended(); }
|
| -
|
| - void UIResume() {
|
| - media_session_->Resume();
|
| - }
|
| -
|
| - void SystemResume() {
|
| - media_session_->OnResume(nullptr, nullptr);
|
| - }
|
| -
|
| - void UISuspend() {
|
| - media_session_->Suspend();
|
| - }
|
| -
|
| - void SystemSuspend(bool temporary) {
|
| - media_session_->OnSuspend(nullptr, nullptr, temporary);
|
| - }
|
| -
|
| - void SystemSetVolumeMultiplier(double volume_multiplier) {
|
| - media_session_->OnSetVolumeMultiplier(
|
| - nullptr, nullptr, volume_multiplier);
|
| - }
|
| -
|
| - MockWebContentsObserver* mock_web_contents_observer() {
|
| - return mock_web_contents_observer_.get();
|
| - }
|
| -
|
| - scoped_ptr<MediaSession> CreateDummyMediaSession() {
|
| - return scoped_ptr<MediaSession>(new MediaSession(nullptr));
|
| - }
|
| -
|
| - MediaSessionUmaHelper* GetMediaSessionUMAHelper() {
|
| - return media_session_->uma_helper_for_test();
|
| - }
|
| -
|
| - protected:
|
| - MediaSession* media_session_;
|
| - scoped_ptr<MockWebContentsObserver> mock_web_contents_observer_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(MediaSessionBrowserTest);
|
| -};
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - PlayersFromSameObserverDoNotStopEachOtherInSameSession) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(0));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(1));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(2));
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - PlayersFromManyObserverDoNotStopEachOtherInSameSession) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer_1(
|
| - new MockMediaSessionObserver);
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer_2(
|
| - new MockMediaSessionObserver);
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer_3(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer_1.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer_2.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer_3.get(), MediaSession::Type::Content);
|
| -
|
| - EXPECT_TRUE(media_session_observer_1->IsPlaying(0));
|
| - EXPECT_TRUE(media_session_observer_2->IsPlaying(0));
|
| - EXPECT_TRUE(media_session_observer_3->IsPlaying(0));
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - SuspendedMediaSessionStopsPlayers) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - SystemSuspend(true);
|
| -
|
| - EXPECT_FALSE(media_session_observer->IsPlaying(0));
|
| - EXPECT_FALSE(media_session_observer->IsPlaying(1));
|
| - EXPECT_FALSE(media_session_observer->IsPlaying(2));
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ResumedMediaSessionRestartsPlayers) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - SystemSuspend(true);
|
| - SystemResume();
|
| -
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(0));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(1));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(2));
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - StartedPlayerOnSuspendedSessionPlaysAlone) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(0));
|
| -
|
| - SystemSuspend(true);
|
| -
|
| - EXPECT_FALSE(media_session_observer->IsPlaying(0));
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - EXPECT_FALSE(media_session_observer->IsPlaying(0));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(1));
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - EXPECT_FALSE(media_session_observer->IsPlaying(0));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(1));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(2));
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - MediaSessionSetVolumeMultiplier) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - double volume_multiplier = 0.2f;
|
| - SystemSetVolumeMultiplier(volume_multiplier);
|
| -
|
| - EXPECT_EQ(volume_multiplier, media_session_observer->GetVolumeMultiplier(0));
|
| - EXPECT_EQ(volume_multiplier, media_session_observer->GetVolumeMultiplier(1));
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - EXPECT_EQ(volume_multiplier, media_session_observer->GetVolumeMultiplier(2));
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, AudioFocusInitialState) {
|
| - EXPECT_FALSE(HasAudioFocus());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StartPlayerGivesFocus) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - EXPECT_TRUE(HasAudioFocus());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, SuspendGivesAwayAudioFocus) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - SystemSuspend(true);
|
| -
|
| - EXPECT_FALSE(HasAudioFocus());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StopGivesAwayAudioFocus) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - media_session_->Stop();
|
| -
|
| - EXPECT_FALSE(HasAudioFocus());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeGivesBackAudioFocus) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - SystemSuspend(true);
|
| - SystemResume();
|
| -
|
| - EXPECT_TRUE(HasAudioFocus());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - RemovingLastPlayerDropsAudioFocus) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - RemovePlayer(media_session_observer.get(), 0);
|
| - EXPECT_TRUE(HasAudioFocus());
|
| - RemovePlayer(media_session_observer.get(), 1);
|
| - EXPECT_TRUE(HasAudioFocus());
|
| - RemovePlayer(media_session_observer.get(), 2);
|
| - EXPECT_FALSE(HasAudioFocus());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - RemovingLastPlayerFromManyObserversDropsAudioFocus) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer_1(
|
| - new MockMediaSessionObserver);
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer_2(
|
| - new MockMediaSessionObserver);
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer_3(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer_1.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer_2.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer_3.get(), MediaSession::Type::Content);
|
| -
|
| - RemovePlayer(media_session_observer_1.get(), 0);
|
| - EXPECT_TRUE(HasAudioFocus());
|
| - RemovePlayer(media_session_observer_2.get(), 0);
|
| - EXPECT_TRUE(HasAudioFocus());
|
| - RemovePlayer(media_session_observer_3.get(), 0);
|
| - EXPECT_FALSE(HasAudioFocus());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - RemovingAllPlayersFromObserversDropsAudioFocus) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer_1(
|
| - new MockMediaSessionObserver);
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer_2(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer_1.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer_1.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer_2.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer_2.get(), MediaSession::Type::Content);
|
| -
|
| - RemovePlayers(media_session_observer_1.get());
|
| - EXPECT_TRUE(HasAudioFocus());
|
| - RemovePlayers(media_session_observer_2.get());
|
| - EXPECT_FALSE(HasAudioFocus());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumePlayGivesAudioFocus) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - RemovePlayer(media_session_observer.get(), 0);
|
| - EXPECT_FALSE(HasAudioFocus());
|
| -
|
| - EXPECT_TRUE(
|
| - AddPlayer(media_session_observer.get(), 0, MediaSession::Type::Content));
|
| - EXPECT_TRUE(HasAudioFocus());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ResumeSuspendAreSentOnlyOncePerPlayers) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - EXPECT_EQ(0, media_session_observer->received_suspend_calls());
|
| - EXPECT_EQ(0, media_session_observer->received_resume_calls());
|
| -
|
| - SystemSuspend(true);
|
| - EXPECT_EQ(3, media_session_observer->received_suspend_calls());
|
| -
|
| - SystemResume();
|
| - EXPECT_EQ(3, media_session_observer->received_resume_calls());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ResumeSuspendAreSentOnlyOncePerPlayersAddedTwice) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - // Adding the three players above again.
|
| - EXPECT_TRUE(
|
| - AddPlayer(media_session_observer.get(), 0, MediaSession::Type::Content));
|
| - EXPECT_TRUE(
|
| - AddPlayer(media_session_observer.get(), 1, MediaSession::Type::Content));
|
| - EXPECT_TRUE(
|
| - AddPlayer(media_session_observer.get(), 2, MediaSession::Type::Content));
|
| -
|
| - EXPECT_EQ(0, media_session_observer->received_suspend_calls());
|
| - EXPECT_EQ(0, media_session_observer->received_resume_calls());
|
| -
|
| - SystemSuspend(true);
|
| - EXPECT_EQ(3, media_session_observer->received_suspend_calls());
|
| -
|
| - SystemResume();
|
| - EXPECT_EQ(3, media_session_observer->received_resume_calls());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - RemovingTheSamePlayerTwiceIsANoop) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - RemovePlayer(media_session_observer.get(), 0);
|
| - RemovePlayer(media_session_observer.get(), 0);
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, MediaSessionType) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - // Starting a player with a given type should set the session to that type.
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient);
|
| - EXPECT_EQ(MediaSession::Type::Transient, GetSessionType());
|
| -
|
| - // Adding a player of the same type should have no effect on the type.
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient);
|
| - EXPECT_EQ(MediaSession::Type::Transient, GetSessionType());
|
| -
|
| - // Adding a player of Content type should override the current type.
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - EXPECT_EQ(MediaSession::Type::Content, GetSessionType());
|
| -
|
| - // Adding a player of the Transient type should have no effect on the type.
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient);
|
| - EXPECT_EQ(MediaSession::Type::Content, GetSessionType());
|
| -
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(0));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(1));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(2));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(3));
|
| -
|
| - SystemSuspend(true);
|
| -
|
| - EXPECT_FALSE(media_session_observer->IsPlaying(0));
|
| - EXPECT_FALSE(media_session_observer->IsPlaying(1));
|
| - EXPECT_FALSE(media_session_observer->IsPlaying(2));
|
| - EXPECT_FALSE(media_session_observer->IsPlaying(3));
|
| -
|
| - EXPECT_EQ(MediaSession::Type::Content, GetSessionType());
|
| -
|
| - SystemResume();
|
| -
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(0));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(1));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(2));
|
| - EXPECT_TRUE(media_session_observer->IsPlaying(3));
|
| -
|
| - EXPECT_EQ(MediaSession::Type::Content, GetSessionType());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShowForContent) {
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - // Starting a player with a content type should show the media controls.
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsNoShowForTransient) {
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(false, false));
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - // Starting a player with a transient type should not show the media controls.
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient);
|
| -
|
| - EXPECT_FALSE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsHideWhenStopped) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(false, true))
|
| - .After(showControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - RemovePlayers(media_session_observer.get());
|
| -
|
| - EXPECT_FALSE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsShownAcceptTransient) {
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - // Transient player join the session without affecting the controls.
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient);
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ControlsShownAfterContentAdded) {
|
| - Expectation dontShowControls = EXPECT_CALL(
|
| - *mock_web_contents_observer(), MediaSessionStateChanged(false, false));
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false))
|
| - .After(dontShowControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient);
|
| -
|
| - // The controls are shown when the content player is added.
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ControlsStayIfOnlyOnePlayerHasBeenPaused) {
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient);
|
| -
|
| - // Removing only content player doesn't hide the controls since the session
|
| - // is still active.
|
| - RemovePlayer(media_session_observer.get(), 0);
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ControlsHideWhenTheLastPlayerIsRemoved) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(false, true))
|
| - .After(showControls);
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - RemovePlayer(media_session_observer.get(), 0);
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -
|
| - RemovePlayer(media_session_observer.get(), 1);
|
| -
|
| - EXPECT_FALSE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ControlsHideWhenAllThePlayersAreRemoved) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(false, true))
|
| - .After(showControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - RemovePlayers(media_session_observer.get());
|
| -
|
| - EXPECT_FALSE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ControlsNotHideWhenTheLastPlayerIsPaused) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, true))
|
| - .After(showControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - OnPlayerPaused(media_session_observer.get(), 0);
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -
|
| - OnPlayerPaused(media_session_observer.get(), 1);
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - SuspendTemporaryUpdatesControls) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, true))
|
| - .After(showControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - SystemSuspend(true);
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ControlsUpdatedWhenResumed) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, true))
|
| - .After(showControls);
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false))
|
| - .After(pauseControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - SystemSuspend(true);
|
| - SystemResume();
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ControlsHideWhenSessionSuspendedPermanently) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(false, true))
|
| - .After(showControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - SystemSuspend(false);
|
| -
|
| - EXPECT_FALSE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ConstrolsHideWhenSessionStops) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, true))
|
| - .After(showControls);
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(false, true))
|
| - .After(pauseControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - media_session_->Stop();
|
| -
|
| - EXPECT_FALSE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ControlsHideWhenSessionChangesFromContentToTransient) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, true))
|
| - .After(showControls);
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(false, false))
|
| - .After(pauseControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - SystemSuspend(true);
|
| -
|
| - // This should reset the session and change it to a transient, so
|
| - // hide the controls.
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Transient);
|
| -
|
| - EXPECT_FALSE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ControlsUpdatedWhenNewPlayerResetsSession) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, true))
|
| - .After(showControls);
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false))
|
| - .After(pauseControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - SystemSuspend(true);
|
| -
|
| - // This should reset the session and update the controls.
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ControlsResumedWhenPlayerIsResumed) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, true))
|
| - .After(showControls);
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false))
|
| - .After(pauseControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - SystemSuspend(true);
|
| -
|
| - // This should resume the session and update the controls.
|
| - AddPlayer(media_session_observer.get(), 0, MediaSession::Type::Content);
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ControlsUpdatedDueToResumeSessionAction) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, true)).After(showControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - UISuspend();
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - ControlsUpdatedDueToSuspendSessionAction) {
|
| - Expectation showControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false));
|
| - Expectation pauseControls = EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, true))
|
| - .After(showControls);
|
| - EXPECT_CALL(*mock_web_contents_observer(),
|
| - MediaSessionStateChanged(true, false))
|
| - .After(pauseControls);
|
| -
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - UISuspend();
|
| - UIResume();
|
| -
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - DontResumeBySystemUISuspendedSessions) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - UISuspend();
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -
|
| - SystemResume();
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - AllowUIResumeForSystemSuspend) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - SystemSuspend(true);
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -
|
| - UIResume();
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeSuspendFromUI) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - UISuspend();
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -
|
| - UIResume();
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, ResumeSuspendFromSystem) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - SystemSuspend(true);
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_TRUE(IsSuspended());
|
| -
|
| - SystemResume();
|
| - EXPECT_TRUE(IsControllable());
|
| - EXPECT_FALSE(IsSuspended());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_SystemTransient) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - SystemSuspend(true);
|
| -
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
|
| - EXPECT_EQ(1, samples->TotalCount());
|
| - EXPECT_EQ(1, samples->GetCount(0)); // System Transient
|
| - EXPECT_EQ(0, samples->GetCount(1)); // System Permanent
|
| - EXPECT_EQ(0, samples->GetCount(2)); // UI
|
| -}
|
| -
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - UMA_Suspended_SystemPermantent) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - SystemSuspend(false);
|
| -
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
|
| - EXPECT_EQ(1, samples->TotalCount());
|
| - EXPECT_EQ(0, samples->GetCount(0)); // System Transient
|
| - EXPECT_EQ(1, samples->GetCount(1)); // System Permanent
|
| - EXPECT_EQ(0, samples->GetCount(2)); // UI
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_UI) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - UISuspend();
|
| -
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
|
| - EXPECT_EQ(1, samples->TotalCount());
|
| - EXPECT_EQ(0, samples->GetCount(0)); // System Transient
|
| - EXPECT_EQ(0, samples->GetCount(1)); // System Permanent
|
| - EXPECT_EQ(1, samples->GetCount(2)); // UI
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Multiple) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - UISuspend();
|
| - UIResume();
|
| -
|
| - SystemSuspend(true);
|
| - SystemResume();
|
| -
|
| - UISuspend();
|
| - UIResume();
|
| -
|
| - SystemSuspend(false);
|
| -
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
|
| - EXPECT_EQ(4, samples->TotalCount());
|
| - EXPECT_EQ(1, samples->GetCount(0)); // System Transient
|
| - EXPECT_EQ(1, samples->GetCount(1)); // System Permanent
|
| - EXPECT_EQ(2, samples->GetCount(2)); // UI
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Crossing) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - UISuspend();
|
| - SystemSuspend(true);
|
| - SystemSuspend(false);
|
| - UIResume();
|
| -
|
| - SystemSuspend(true);
|
| - SystemSuspend(true);
|
| - SystemSuspend(false);
|
| - SystemResume();
|
| -
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
|
| - EXPECT_EQ(2, samples->TotalCount());
|
| - EXPECT_EQ(1, samples->GetCount(0)); // System Transient
|
| - EXPECT_EQ(0, samples->GetCount(1)); // System Permanent
|
| - EXPECT_EQ(1, samples->GetCount(2)); // UI
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_Suspended_Stop) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - media_session_->Stop();
|
| -
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended"));
|
| - EXPECT_EQ(1, samples->TotalCount());
|
| - EXPECT_EQ(0, samples->GetCount(0)); // System Transient
|
| - EXPECT_EQ(0, samples->GetCount(1)); // System Permanent
|
| - EXPECT_EQ(1, samples->GetCount(2)); // UI
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, UMA_ActiveTime_NoActivation) {
|
| - base::HistogramTester tester;
|
| -
|
| - scoped_ptr<MediaSession> media_session = CreateDummyMediaSession();
|
| - media_session.reset();
|
| -
|
| - // A MediaSession that wasn't active doesn't register an active time.
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
|
| - EXPECT_EQ(0, samples->TotalCount());
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - UMA_ActiveTime_SimpleActivation) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
|
| - base::SimpleTestClock* clock = new base::SimpleTestClock();
|
| - clock->SetNow(base::Time::Now());
|
| - media_session_uma_helper->SetClockForTest(
|
| - scoped_ptr<base::SimpleTestClock>(clock));
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(1000));
|
| - media_session_->Stop();
|
| -
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
|
| - EXPECT_EQ(1, samples->TotalCount());
|
| - EXPECT_EQ(1, samples->GetCount(1000));
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - UMA_ActiveTime_ActivationWithUISuspension) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
|
| - base::SimpleTestClock* clock = new base::SimpleTestClock();
|
| - clock->SetNow(base::Time::Now());
|
| - media_session_uma_helper->SetClockForTest(
|
| - scoped_ptr<base::SimpleTestClock>(clock));
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(1000));
|
| - UISuspend();
|
| -
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(2000));
|
| - UIResume();
|
| -
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(1000));
|
| - media_session_->Stop();
|
| -
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
|
| - EXPECT_EQ(1, samples->TotalCount());
|
| - EXPECT_EQ(1, samples->GetCount(2000));
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - UMA_ActiveTime_ActivationWithSystemSuspension) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
|
| - base::SimpleTestClock* clock = new base::SimpleTestClock();
|
| - clock->SetNow(base::Time::Now());
|
| - media_session_uma_helper->SetClockForTest(
|
| - scoped_ptr<base::SimpleTestClock>(clock));
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| -
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(1000));
|
| - SystemSuspend(true);
|
| -
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(2000));
|
| - SystemResume();
|
| -
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(1000));
|
| - media_session_->Stop();
|
| -
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
|
| - EXPECT_EQ(1, samples->TotalCount());
|
| - EXPECT_EQ(1, samples->GetCount(2000));
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - UMA_ActiveTime_ActivateSuspendedButNotStopped) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
|
| - base::SimpleTestClock* clock = new base::SimpleTestClock();
|
| - clock->SetNow(base::Time::Now());
|
| - media_session_uma_helper->SetClockForTest(
|
| - scoped_ptr<base::SimpleTestClock>(clock));
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(500));
|
| - SystemSuspend(true);
|
| -
|
| - {
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
|
| - EXPECT_EQ(0, samples->TotalCount());
|
| - }
|
| -
|
| - SystemResume();
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(5000));
|
| - UISuspend();
|
| -
|
| - {
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
|
| - EXPECT_EQ(0, samples->TotalCount());
|
| - }
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - UMA_ActiveTime_ActivateSuspendStopTwice) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
|
| - base::SimpleTestClock* clock = new base::SimpleTestClock();
|
| - clock->SetNow(base::Time::Now());
|
| - media_session_uma_helper->SetClockForTest(
|
| - scoped_ptr<base::SimpleTestClock>(clock));
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(500));
|
| - SystemSuspend(true);
|
| - media_session_->Stop();
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(5000));
|
| - SystemResume();
|
| - media_session_->Stop();
|
| -
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
|
| - EXPECT_EQ(2, samples->TotalCount());
|
| - EXPECT_EQ(1, samples->GetCount(500));
|
| - EXPECT_EQ(1, samples->GetCount(5000));
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest,
|
| - UMA_ActiveTime_MultipleActivations) {
|
| - scoped_ptr<MockMediaSessionObserver> media_session_observer(
|
| - new MockMediaSessionObserver);
|
| - base::HistogramTester tester;
|
| -
|
| - MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper();
|
| - base::SimpleTestClock* clock = new base::SimpleTestClock();
|
| - clock->SetNow(base::Time::Now());
|
| - media_session_uma_helper->SetClockForTest(
|
| - scoped_ptr<base::SimpleTestClock>(clock));
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(10000));
|
| - RemovePlayer(media_session_observer.get(), 0);
|
| -
|
| - StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content);
|
| - clock->Advance(base::TimeDelta::FromMilliseconds(1000));
|
| - media_session_->Stop();
|
| -
|
| - scoped_ptr<base::HistogramSamples> samples(
|
| - tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime"));
|
| - EXPECT_EQ(2, samples->TotalCount());
|
| - EXPECT_EQ(1, samples->GetCount(1000));
|
| - EXPECT_EQ(1, samples->GetCount(10000));
|
| -}
|
|
|