| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "content/browser/media/session/media_session_impl.h" | 5 #include "content/browser/media/session/media_session_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <list> | 9 #include <list> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "base/memory/ptr_util.h" |
| 13 #include "base/metrics/histogram_samples.h" | 14 #include "base/metrics/histogram_samples.h" |
| 14 #include "base/test/histogram_tester.h" | 15 #include "base/test/histogram_tester.h" |
| 15 #include "base/test/simple_test_tick_clock.h" | 16 #include "base/test/simple_test_tick_clock.h" |
| 16 #include "content/browser/media/session/audio_focus_delegate.h" | 17 #include "content/browser/media/session/audio_focus_delegate.h" |
| 17 #include "content/browser/media/session/mock_media_session_player_observer.h" | 18 #include "content/browser/media/session/mock_media_session_player_observer.h" |
| 18 #include "content/public/browser/media_session.h" | 19 #include "content/public/browser/media_session.h" |
| 19 #include "content/public/browser/media_session_observer.h" | 20 #include "content/public/browser/media_session_observer.h" |
| 20 #include "content/public/browser/web_contents.h" | 21 #include "content/public/browser/web_contents.h" |
| 21 #include "content/public/test/content_browser_test.h" | 22 #include "content/public/test/content_browser_test.h" |
| 22 #include "content/shell/browser/shell.h" | 23 #include "content/shell/browser/shell.h" |
| 23 #include "media/base/media_content_type.h" | 24 #include "media/base/media_content_type.h" |
| 24 #include "testing/gmock/include/gmock/gmock.h" | 25 #include "testing/gmock/include/gmock/gmock.h" |
| 25 | 26 |
| 26 using content::WebContents; | 27 using content::WebContents; |
| 27 using content::MediaSession; | 28 using content::MediaSession; |
| 28 using content::MediaSessionImpl; | 29 using content::MediaSessionImpl; |
| 29 using content::MediaSessionObserver; | 30 using content::MediaSessionObserver; |
| 30 using content::AudioFocusDelegate; | 31 using content::AudioFocusDelegate; |
| 31 using content::MediaSessionPlayerObserver; | 32 using content::MediaSessionPlayerObserver; |
| 32 using content::MediaSessionUmaHelper; | 33 using content::MediaSessionUmaHelper; |
| 33 using content::MockMediaSessionPlayerObserver; | 34 using content::MockMediaSessionPlayerObserver; |
| 34 | 35 |
| 35 using ::testing::Expectation; | 36 using ::testing::Expectation; |
| 37 using ::testing::_; |
| 36 | 38 |
| 37 namespace { | 39 namespace { |
| 38 | 40 |
| 39 const double kDefaultVolumeMultiplier = 1.0; | 41 const double kDefaultVolumeMultiplier = 1.0; |
| 40 const double kDuckingVolumeMultiplier = 0.2; | 42 const double kDuckingVolumeMultiplier = 0.2; |
| 41 | 43 |
| 42 class MockAudioFocusDelegate : public AudioFocusDelegate { | 44 class MockAudioFocusDelegate : public AudioFocusDelegate { |
| 43 public: | 45 public: |
| 44 bool RequestAudioFocus(content::AudioFocusManager::AudioFocusType) override { | 46 MockAudioFocusDelegate() { |
| 45 return true; | 47 ON_CALL(*this, RequestAudioFocus(_)).WillByDefault(::testing::Return(true)); |
| 46 } | 48 } |
| 47 | 49 |
| 48 void AbandonAudioFocus() override {} | 50 MOCK_METHOD1(RequestAudioFocus, |
| 51 bool(content::AudioFocusManager::AudioFocusType)); |
| 52 MOCK_METHOD0(AbandonAudioFocus, void()); |
| 49 }; | 53 }; |
| 50 | 54 |
| 51 class MockMediaSessionObserver : public MediaSessionObserver { | 55 class MockMediaSessionObserver : public MediaSessionObserver { |
| 52 public: | 56 public: |
| 53 MockMediaSessionObserver(MediaSession* media_session) | 57 MockMediaSessionObserver(MediaSession* media_session) |
| 54 : MediaSessionObserver(media_session) {} | 58 : MediaSessionObserver(media_session) {} |
| 55 | 59 |
| 56 MOCK_METHOD2(MediaSessionStateChanged, | 60 MOCK_METHOD2(MediaSessionStateChanged, |
| 57 void(bool is_controllable, bool is_suspended)); | 61 void(bool is_controllable, bool is_suspended)); |
| 58 MOCK_METHOD0(MediaSessionDestroyed, void()); | 62 MOCK_METHOD0(MediaSessionDestroyed, void()); |
| 59 }; | 63 }; |
| 60 | 64 |
| 61 } // namespace | 65 } // namespace |
| 62 | 66 |
| 63 class MediaSessionImplBrowserTest : public content::ContentBrowserTest { | 67 class MediaSessionImplBrowserTest : public content::ContentBrowserTest { |
| 64 protected: | 68 protected: |
| 65 MediaSessionImplBrowserTest() = default; | 69 MediaSessionImplBrowserTest() = default; |
| 66 | 70 |
| 67 void SetUpOnMainThread() override { | 71 void SetUpOnMainThread() override { |
| 68 ContentBrowserTest::SetUpOnMainThread(); | 72 ContentBrowserTest::SetUpOnMainThread(); |
| 69 | 73 |
| 70 media_session_ = MediaSessionImpl::Get(shell()->web_contents()); | 74 media_session_ = MediaSessionImpl::Get(shell()->web_contents()); |
| 71 mock_media_session_observer_.reset( | 75 mock_media_session_observer_.reset( |
| 72 new MockMediaSessionObserver(media_session_)); | 76 new MockMediaSessionObserver(media_session_)); |
| 77 mock_audio_focus_delegate_ = new MockAudioFocusDelegate; |
| 73 media_session_->SetDelegateForTests( | 78 media_session_->SetDelegateForTests( |
| 74 std::unique_ptr<AudioFocusDelegate>(new MockAudioFocusDelegate())); | 79 base::WrapUnique(mock_audio_focus_delegate_)); |
| 75 ASSERT_TRUE(media_session_); | 80 ASSERT_TRUE(media_session_); |
| 76 } | 81 } |
| 77 | 82 |
| 78 void TearDownOnMainThread() override { | 83 void TearDownOnMainThread() override { |
| 79 mock_media_session_observer_.reset(); | 84 mock_media_session_observer_.reset(); |
| 80 | 85 |
| 81 media_session_->RemoveAllPlayersForTest(); | 86 media_session_->RemoveAllPlayersForTest(); |
| 82 media_session_ = nullptr; | 87 media_session_ = nullptr; |
| 83 | 88 |
| 84 ContentBrowserTest::TearDownOnMainThread(); | 89 ContentBrowserTest::TearDownOnMainThread(); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 } | 142 } |
| 138 | 143 |
| 139 void SystemStartDucking() { media_session_->StartDucking(); } | 144 void SystemStartDucking() { media_session_->StartDucking(); } |
| 140 | 145 |
| 141 void SystemStopDucking() { media_session_->StopDucking(); } | 146 void SystemStopDucking() { media_session_->StopDucking(); } |
| 142 | 147 |
| 143 MockMediaSessionObserver* mock_media_session_observer() { | 148 MockMediaSessionObserver* mock_media_session_observer() { |
| 144 return mock_media_session_observer_.get(); | 149 return mock_media_session_observer_.get(); |
| 145 } | 150 } |
| 146 | 151 |
| 152 MockAudioFocusDelegate* mock_audio_focus_delegate() { |
| 153 return mock_audio_focus_delegate_; |
| 154 } |
| 155 |
| 147 std::unique_ptr<MediaSessionImpl> CreateDummyMediaSession() { | 156 std::unique_ptr<MediaSessionImpl> CreateDummyMediaSession() { |
| 148 return std::unique_ptr<MediaSessionImpl>(new MediaSessionImpl(nullptr)); | 157 return base::WrapUnique<MediaSessionImpl>(new MediaSessionImpl(nullptr)); |
| 149 } | 158 } |
| 150 | 159 |
| 151 MediaSessionUmaHelper* GetMediaSessionUMAHelper() { | 160 MediaSessionUmaHelper* GetMediaSessionUMAHelper() { |
| 152 return media_session_->uma_helper_for_test(); | 161 return media_session_->uma_helper_for_test(); |
| 153 } | 162 } |
| 154 | 163 |
| 155 protected: | 164 protected: |
| 156 MediaSessionImpl* media_session_; | 165 MediaSessionImpl* media_session_; |
| 157 std::unique_ptr<MockMediaSessionObserver> mock_media_session_observer_; | 166 std::unique_ptr<MockMediaSessionObserver> mock_media_session_observer_; |
| 167 MockAudioFocusDelegate* mock_audio_focus_delegate_; |
| 158 | 168 |
| 159 DISALLOW_COPY_AND_ASSIGN(MediaSessionImplBrowserTest); | 169 DISALLOW_COPY_AND_ASSIGN(MediaSessionImplBrowserTest); |
| 160 }; | 170 }; |
| 161 | 171 |
| 162 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 172 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 163 PlayersFromSameObserverDoNotStopEachOtherInSameSession) { | 173 PlayersFromSameObserverDoNotStopEachOtherInSameSession) { |
| 164 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 174 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 165 new MockMediaSessionPlayerObserver); | |
| 166 | 175 |
| 167 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 176 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 168 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 177 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 169 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 178 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 170 | 179 |
| 171 EXPECT_TRUE(player_observer->IsPlaying(0)); | 180 EXPECT_TRUE(player_observer->IsPlaying(0)); |
| 172 EXPECT_TRUE(player_observer->IsPlaying(1)); | 181 EXPECT_TRUE(player_observer->IsPlaying(1)); |
| 173 EXPECT_TRUE(player_observer->IsPlaying(2)); | 182 EXPECT_TRUE(player_observer->IsPlaying(2)); |
| 174 } | 183 } |
| 175 | 184 |
| 176 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 185 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 177 PlayersFromManyObserverDoNotStopEachOtherInSameSession) { | 186 PlayersFromManyObserverDoNotStopEachOtherInSameSession) { |
| 178 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer_1( | 187 auto player_observer_1 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 179 new MockMediaSessionPlayerObserver); | 188 auto player_observer_2 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 180 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer_2( | 189 auto player_observer_3 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 181 new MockMediaSessionPlayerObserver); | |
| 182 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer_3( | |
| 183 new MockMediaSessionPlayerObserver); | |
| 184 | 190 |
| 185 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); | 191 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); |
| 186 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); | 192 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); |
| 187 StartNewPlayer(player_observer_3.get(), media::MediaContentType::Persistent); | 193 StartNewPlayer(player_observer_3.get(), media::MediaContentType::Persistent); |
| 188 | 194 |
| 189 EXPECT_TRUE(player_observer_1->IsPlaying(0)); | 195 EXPECT_TRUE(player_observer_1->IsPlaying(0)); |
| 190 EXPECT_TRUE(player_observer_2->IsPlaying(0)); | 196 EXPECT_TRUE(player_observer_2->IsPlaying(0)); |
| 191 EXPECT_TRUE(player_observer_3->IsPlaying(0)); | 197 EXPECT_TRUE(player_observer_3->IsPlaying(0)); |
| 192 } | 198 } |
| 193 | 199 |
| 194 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 200 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 195 SuspendedMediaSessionStopsPlayers) { | 201 SuspendedMediaSessionStopsPlayers) { |
| 196 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 202 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 197 new MockMediaSessionPlayerObserver); | |
| 198 | 203 |
| 199 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 204 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 200 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 205 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 201 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 206 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 202 | 207 |
| 203 SystemSuspend(true); | 208 SystemSuspend(true); |
| 204 | 209 |
| 205 EXPECT_FALSE(player_observer->IsPlaying(0)); | 210 EXPECT_FALSE(player_observer->IsPlaying(0)); |
| 206 EXPECT_FALSE(player_observer->IsPlaying(1)); | 211 EXPECT_FALSE(player_observer->IsPlaying(1)); |
| 207 EXPECT_FALSE(player_observer->IsPlaying(2)); | 212 EXPECT_FALSE(player_observer->IsPlaying(2)); |
| 208 } | 213 } |
| 209 | 214 |
| 210 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 215 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 211 ResumedMediaSessionRestartsPlayers) { | 216 ResumedMediaSessionRestartsPlayers) { |
| 212 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 217 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 213 new MockMediaSessionPlayerObserver); | |
| 214 | 218 |
| 215 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 219 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 216 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 220 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 217 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 221 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 218 | 222 |
| 219 SystemSuspend(true); | 223 SystemSuspend(true); |
| 220 SystemResume(); | 224 SystemResume(); |
| 221 | 225 |
| 222 EXPECT_TRUE(player_observer->IsPlaying(0)); | 226 EXPECT_TRUE(player_observer->IsPlaying(0)); |
| 223 EXPECT_TRUE(player_observer->IsPlaying(1)); | 227 EXPECT_TRUE(player_observer->IsPlaying(1)); |
| 224 EXPECT_TRUE(player_observer->IsPlaying(2)); | 228 EXPECT_TRUE(player_observer->IsPlaying(2)); |
| 225 } | 229 } |
| 226 | 230 |
| 227 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 231 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 228 StartedPlayerOnSuspendedSessionPlaysAlone) { | 232 StartedPlayerOnSuspendedSessionPlaysAlone) { |
| 229 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 233 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 230 new MockMediaSessionPlayerObserver); | |
| 231 | 234 |
| 232 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 235 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 233 | 236 |
| 234 EXPECT_TRUE(player_observer->IsPlaying(0)); | 237 EXPECT_TRUE(player_observer->IsPlaying(0)); |
| 235 | 238 |
| 236 SystemSuspend(true); | 239 SystemSuspend(true); |
| 237 | 240 |
| 238 EXPECT_FALSE(player_observer->IsPlaying(0)); | 241 EXPECT_FALSE(player_observer->IsPlaying(0)); |
| 239 | 242 |
| 240 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 243 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 241 | 244 |
| 242 EXPECT_FALSE(player_observer->IsPlaying(0)); | 245 EXPECT_FALSE(player_observer->IsPlaying(0)); |
| 243 EXPECT_TRUE(player_observer->IsPlaying(1)); | 246 EXPECT_TRUE(player_observer->IsPlaying(1)); |
| 244 | 247 |
| 245 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 248 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 246 | 249 |
| 247 EXPECT_FALSE(player_observer->IsPlaying(0)); | 250 EXPECT_FALSE(player_observer->IsPlaying(0)); |
| 248 EXPECT_TRUE(player_observer->IsPlaying(1)); | 251 EXPECT_TRUE(player_observer->IsPlaying(1)); |
| 249 EXPECT_TRUE(player_observer->IsPlaying(2)); | 252 EXPECT_TRUE(player_observer->IsPlaying(2)); |
| 250 } | 253 } |
| 251 | 254 |
| 252 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, InitialVolumeMultiplier) { | 255 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, InitialVolumeMultiplier) { |
| 253 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 256 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 254 new MockMediaSessionPlayerObserver); | |
| 255 | 257 |
| 256 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 258 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 257 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 259 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 258 | 260 |
| 259 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(0)); | 261 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(0)); |
| 260 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(1)); | 262 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(1)); |
| 261 } | 263 } |
| 262 | 264 |
| 263 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 265 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 264 StartDuckingReducesVolumeMultiplier) { | 266 StartDuckingReducesVolumeMultiplier) { |
| 265 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 267 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 266 new MockMediaSessionPlayerObserver); | |
| 267 | 268 |
| 268 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 269 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 269 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 270 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 270 SystemStartDucking(); | 271 SystemStartDucking(); |
| 271 | 272 |
| 272 EXPECT_EQ(kDuckingVolumeMultiplier, player_observer->GetVolumeMultiplier(0)); | 273 EXPECT_EQ(kDuckingVolumeMultiplier, player_observer->GetVolumeMultiplier(0)); |
| 273 EXPECT_EQ(kDuckingVolumeMultiplier, player_observer->GetVolumeMultiplier(1)); | 274 EXPECT_EQ(kDuckingVolumeMultiplier, player_observer->GetVolumeMultiplier(1)); |
| 274 | 275 |
| 275 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 276 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 276 | 277 |
| 277 EXPECT_EQ(kDuckingVolumeMultiplier, player_observer->GetVolumeMultiplier(2)); | 278 EXPECT_EQ(kDuckingVolumeMultiplier, player_observer->GetVolumeMultiplier(2)); |
| 278 } | 279 } |
| 279 | 280 |
| 280 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 281 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 281 StopDuckingRecoversVolumeMultiplier) { | 282 StopDuckingRecoversVolumeMultiplier) { |
| 282 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 283 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 283 new MockMediaSessionPlayerObserver); | |
| 284 | 284 |
| 285 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 285 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 286 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 286 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 287 SystemStartDucking(); | 287 SystemStartDucking(); |
| 288 SystemStopDucking(); | 288 SystemStopDucking(); |
| 289 | 289 |
| 290 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(0)); | 290 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(0)); |
| 291 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(1)); | 291 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(1)); |
| 292 | 292 |
| 293 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 293 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 294 | 294 |
| 295 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(2)); | 295 EXPECT_EQ(kDefaultVolumeMultiplier, player_observer->GetVolumeMultiplier(2)); |
| 296 } | 296 } |
| 297 | 297 |
| 298 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, AudioFocusInitialState) { | 298 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, AudioFocusInitialState) { |
| 299 EXPECT_FALSE(HasAudioFocus()); | 299 EXPECT_FALSE(HasAudioFocus()); |
| 300 } | 300 } |
| 301 | 301 |
| 302 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, StartPlayerGivesFocus) { | 302 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, StartPlayerGivesFocus) { |
| 303 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 303 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 304 new MockMediaSessionPlayerObserver); | |
| 305 | 304 |
| 306 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 305 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 307 | 306 |
| 308 EXPECT_TRUE(HasAudioFocus()); | 307 EXPECT_TRUE(HasAudioFocus()); |
| 309 } | 308 } |
| 310 | 309 |
| 311 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 310 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 312 SuspendGivesAwayAudioFocus) { | 311 SuspendGivesAwayAudioFocus) { |
| 313 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 312 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 314 new MockMediaSessionPlayerObserver); | |
| 315 | 313 |
| 316 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 314 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 317 | 315 |
| 318 SystemSuspend(true); | 316 SystemSuspend(true); |
| 319 | 317 |
| 320 EXPECT_FALSE(HasAudioFocus()); | 318 EXPECT_FALSE(HasAudioFocus()); |
| 321 } | 319 } |
| 322 | 320 |
| 323 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, StopGivesAwayAudioFocus) { | 321 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, StopGivesAwayAudioFocus) { |
| 324 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 322 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 325 new MockMediaSessionPlayerObserver); | |
| 326 | 323 |
| 327 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 324 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 328 | 325 |
| 329 media_session_->Stop(MediaSession::SuspendType::UI); | 326 media_session_->Stop(MediaSession::SuspendType::UI); |
| 330 | 327 |
| 331 EXPECT_FALSE(HasAudioFocus()); | 328 EXPECT_FALSE(HasAudioFocus()); |
| 332 } | 329 } |
| 333 | 330 |
| 334 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeGivesBackAudioFocus) { | 331 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeGivesBackAudioFocus) { |
| 335 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 332 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 336 new MockMediaSessionPlayerObserver); | |
| 337 | 333 |
| 338 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 334 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 339 | 335 |
| 340 SystemSuspend(true); | 336 SystemSuspend(true); |
| 341 SystemResume(); | 337 SystemResume(); |
| 342 | 338 |
| 343 EXPECT_TRUE(HasAudioFocus()); | 339 EXPECT_TRUE(HasAudioFocus()); |
| 344 } | 340 } |
| 345 | 341 |
| 346 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 342 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 347 RemovingLastPlayerDropsAudioFocus) { | 343 RemovingLastPlayerDropsAudioFocus) { |
| 348 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 344 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 349 new MockMediaSessionPlayerObserver); | |
| 350 | 345 |
| 351 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 346 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 352 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 347 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 353 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 348 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 354 | 349 |
| 355 RemovePlayer(player_observer.get(), 0); | 350 RemovePlayer(player_observer.get(), 0); |
| 356 EXPECT_TRUE(HasAudioFocus()); | 351 EXPECT_TRUE(HasAudioFocus()); |
| 357 RemovePlayer(player_observer.get(), 1); | 352 RemovePlayer(player_observer.get(), 1); |
| 358 EXPECT_TRUE(HasAudioFocus()); | 353 EXPECT_TRUE(HasAudioFocus()); |
| 359 RemovePlayer(player_observer.get(), 2); | 354 RemovePlayer(player_observer.get(), 2); |
| 360 EXPECT_FALSE(HasAudioFocus()); | 355 EXPECT_FALSE(HasAudioFocus()); |
| 361 } | 356 } |
| 362 | 357 |
| 363 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 358 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 364 RemovingLastPlayerFromManyObserversDropsAudioFocus) { | 359 RemovingLastPlayerFromManyObserversDropsAudioFocus) { |
| 365 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer_1( | 360 auto player_observer_1 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 366 new MockMediaSessionPlayerObserver); | 361 auto player_observer_2 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 367 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer_2( | 362 auto player_observer_3 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 368 new MockMediaSessionPlayerObserver); | |
| 369 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer_3( | |
| 370 new MockMediaSessionPlayerObserver); | |
| 371 | 363 |
| 372 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); | 364 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); |
| 373 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); | 365 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); |
| 374 StartNewPlayer(player_observer_3.get(), media::MediaContentType::Persistent); | 366 StartNewPlayer(player_observer_3.get(), media::MediaContentType::Persistent); |
| 375 | 367 |
| 376 RemovePlayer(player_observer_1.get(), 0); | 368 RemovePlayer(player_observer_1.get(), 0); |
| 377 EXPECT_TRUE(HasAudioFocus()); | 369 EXPECT_TRUE(HasAudioFocus()); |
| 378 RemovePlayer(player_observer_2.get(), 0); | 370 RemovePlayer(player_observer_2.get(), 0); |
| 379 EXPECT_TRUE(HasAudioFocus()); | 371 EXPECT_TRUE(HasAudioFocus()); |
| 380 RemovePlayer(player_observer_3.get(), 0); | 372 RemovePlayer(player_observer_3.get(), 0); |
| 381 EXPECT_FALSE(HasAudioFocus()); | 373 EXPECT_FALSE(HasAudioFocus()); |
| 382 } | 374 } |
| 383 | 375 |
| 384 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 376 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 385 RemovingAllPlayersFromObserversDropsAudioFocus) { | 377 RemovingAllPlayersFromObserversDropsAudioFocus) { |
| 386 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer_1( | 378 auto player_observer_1 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 387 new MockMediaSessionPlayerObserver); | 379 auto player_observer_2 = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 388 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer_2( | |
| 389 new MockMediaSessionPlayerObserver); | |
| 390 | 380 |
| 391 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); | 381 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); |
| 392 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); | 382 StartNewPlayer(player_observer_1.get(), media::MediaContentType::Persistent); |
| 393 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); | 383 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); |
| 394 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); | 384 StartNewPlayer(player_observer_2.get(), media::MediaContentType::Persistent); |
| 395 | 385 |
| 396 RemovePlayers(player_observer_1.get()); | 386 RemovePlayers(player_observer_1.get()); |
| 397 EXPECT_TRUE(HasAudioFocus()); | 387 EXPECT_TRUE(HasAudioFocus()); |
| 398 RemovePlayers(player_observer_2.get()); | 388 RemovePlayers(player_observer_2.get()); |
| 399 EXPECT_FALSE(HasAudioFocus()); | 389 EXPECT_FALSE(HasAudioFocus()); |
| 400 } | 390 } |
| 401 | 391 |
| 402 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumePlayGivesAudioFocus) { | 392 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumePlayGivesAudioFocus) { |
| 403 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 393 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 404 new MockMediaSessionPlayerObserver); | |
| 405 | 394 |
| 406 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 395 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 407 | 396 |
| 408 RemovePlayer(player_observer.get(), 0); | 397 RemovePlayer(player_observer.get(), 0); |
| 409 EXPECT_FALSE(HasAudioFocus()); | 398 EXPECT_FALSE(HasAudioFocus()); |
| 410 | 399 |
| 411 EXPECT_TRUE( | 400 EXPECT_TRUE( |
| 412 AddPlayer(player_observer.get(), 0, media::MediaContentType::Persistent)); | 401 AddPlayer(player_observer.get(), 0, media::MediaContentType::Persistent)); |
| 413 EXPECT_TRUE(HasAudioFocus()); | 402 EXPECT_TRUE(HasAudioFocus()); |
| 414 } | 403 } |
| 415 | 404 |
| 416 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 405 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 417 ResumeSuspendAreSentOnlyOncePerPlayers) { | 406 ResumeSuspendAreSentOnlyOncePerPlayers) { |
| 418 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 407 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 419 new MockMediaSessionPlayerObserver); | |
| 420 | 408 |
| 421 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 409 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 422 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 410 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 423 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 411 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 424 | 412 |
| 425 EXPECT_EQ(0, player_observer->received_suspend_calls()); | 413 EXPECT_EQ(0, player_observer->received_suspend_calls()); |
| 426 EXPECT_EQ(0, player_observer->received_resume_calls()); | 414 EXPECT_EQ(0, player_observer->received_resume_calls()); |
| 427 | 415 |
| 428 SystemSuspend(true); | 416 SystemSuspend(true); |
| 429 EXPECT_EQ(3, player_observer->received_suspend_calls()); | 417 EXPECT_EQ(3, player_observer->received_suspend_calls()); |
| 430 | 418 |
| 431 SystemResume(); | 419 SystemResume(); |
| 432 EXPECT_EQ(3, player_observer->received_resume_calls()); | 420 EXPECT_EQ(3, player_observer->received_resume_calls()); |
| 433 } | 421 } |
| 434 | 422 |
| 435 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 423 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 436 ResumeSuspendAreSentOnlyOncePerPlayersAddedTwice) { | 424 ResumeSuspendAreSentOnlyOncePerPlayersAddedTwice) { |
| 437 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 425 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 438 new MockMediaSessionPlayerObserver); | |
| 439 | 426 |
| 440 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 427 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 441 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 428 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 442 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 429 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 443 | 430 |
| 444 // Adding the three players above again. | 431 // Adding the three players above again. |
| 445 EXPECT_TRUE( | 432 EXPECT_TRUE( |
| 446 AddPlayer(player_observer.get(), 0, media::MediaContentType::Persistent)); | 433 AddPlayer(player_observer.get(), 0, media::MediaContentType::Persistent)); |
| 447 EXPECT_TRUE( | 434 EXPECT_TRUE( |
| 448 AddPlayer(player_observer.get(), 1, media::MediaContentType::Persistent)); | 435 AddPlayer(player_observer.get(), 1, media::MediaContentType::Persistent)); |
| 449 EXPECT_TRUE( | 436 EXPECT_TRUE( |
| 450 AddPlayer(player_observer.get(), 2, media::MediaContentType::Persistent)); | 437 AddPlayer(player_observer.get(), 2, media::MediaContentType::Persistent)); |
| 451 | 438 |
| 452 EXPECT_EQ(0, player_observer->received_suspend_calls()); | 439 EXPECT_EQ(0, player_observer->received_suspend_calls()); |
| 453 EXPECT_EQ(0, player_observer->received_resume_calls()); | 440 EXPECT_EQ(0, player_observer->received_resume_calls()); |
| 454 | 441 |
| 455 SystemSuspend(true); | 442 SystemSuspend(true); |
| 456 EXPECT_EQ(3, player_observer->received_suspend_calls()); | 443 EXPECT_EQ(3, player_observer->received_suspend_calls()); |
| 457 | 444 |
| 458 SystemResume(); | 445 SystemResume(); |
| 459 EXPECT_EQ(3, player_observer->received_resume_calls()); | 446 EXPECT_EQ(3, player_observer->received_resume_calls()); |
| 460 } | 447 } |
| 461 | 448 |
| 462 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 449 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 463 RemovingTheSamePlayerTwiceIsANoop) { | 450 RemovingTheSamePlayerTwiceIsANoop) { |
| 464 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 451 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 465 new MockMediaSessionPlayerObserver); | |
| 466 | 452 |
| 467 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 453 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 468 | 454 |
| 469 RemovePlayer(player_observer.get(), 0); | 455 RemovePlayer(player_observer.get(), 0); |
| 470 RemovePlayer(player_observer.get(), 0); | 456 RemovePlayer(player_observer.get(), 0); |
| 471 } | 457 } |
| 472 | 458 |
| 473 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, AudioFocusType) { | 459 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, AudioFocusType) { |
| 474 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 460 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 475 new MockMediaSessionPlayerObserver); | |
| 476 | 461 |
| 477 // Starting a player with a given type should set the session to that type. | 462 // Starting a player with a given type should set the session to that type. |
| 478 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 463 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 479 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::GainTransientMayDuck, | 464 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::GainTransientMayDuck, |
| 480 GetSessionAudioFocusType()); | 465 GetSessionAudioFocusType()); |
| 481 | 466 |
| 482 // Adding a player of the same type should have no effect on the type. | 467 // Adding a player of the same type should have no effect on the type. |
| 483 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 468 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 484 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::GainTransientMayDuck, | 469 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::GainTransientMayDuck, |
| 485 GetSessionAudioFocusType()); | 470 GetSessionAudioFocusType()); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 EXPECT_TRUE(player_observer->IsPlaying(3)); | 502 EXPECT_TRUE(player_observer->IsPlaying(3)); |
| 518 | 503 |
| 519 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain, | 504 EXPECT_EQ(content::AudioFocusManager::AudioFocusType::Gain, |
| 520 GetSessionAudioFocusType()); | 505 GetSessionAudioFocusType()); |
| 521 } | 506 } |
| 522 | 507 |
| 523 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ControlsShowForContent) { | 508 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ControlsShowForContent) { |
| 524 EXPECT_CALL(*mock_media_session_observer(), | 509 EXPECT_CALL(*mock_media_session_observer(), |
| 525 MediaSessionStateChanged(true, false)); | 510 MediaSessionStateChanged(true, false)); |
| 526 | 511 |
| 527 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 512 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 528 new MockMediaSessionPlayerObserver); | |
| 529 | 513 |
| 530 // Starting a player with a content type should show the media controls. | 514 // Starting a player with a content type should show the media controls. |
| 531 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 515 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 532 | 516 |
| 533 EXPECT_TRUE(IsControllable()); | 517 EXPECT_TRUE(IsControllable()); |
| 534 EXPECT_FALSE(IsSuspended()); | 518 EXPECT_FALSE(IsSuspended()); |
| 535 } | 519 } |
| 536 | 520 |
| 537 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 521 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 538 ControlsNoShowForTransient) { | 522 ControlsNoShowForTransient) { |
| 539 EXPECT_CALL(*mock_media_session_observer(), | 523 EXPECT_CALL(*mock_media_session_observer(), |
| 540 MediaSessionStateChanged(false, false)); | 524 MediaSessionStateChanged(false, false)); |
| 541 | 525 |
| 542 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 526 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 543 new MockMediaSessionPlayerObserver); | |
| 544 | 527 |
| 545 // Starting a player with a transient type should not show the media controls. | 528 // Starting a player with a transient type should not show the media controls. |
| 546 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 529 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 547 | 530 |
| 548 EXPECT_FALSE(IsControllable()); | 531 EXPECT_FALSE(IsControllable()); |
| 549 EXPECT_FALSE(IsSuspended()); | 532 EXPECT_FALSE(IsSuspended()); |
| 550 } | 533 } |
| 551 | 534 |
| 552 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ControlsHideWhenStopped) { | 535 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ControlsHideWhenStopped) { |
| 553 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 536 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 554 MediaSessionStateChanged(true, false)); | 537 MediaSessionStateChanged(true, false)); |
| 555 EXPECT_CALL(*mock_media_session_observer(), | 538 EXPECT_CALL(*mock_media_session_observer(), |
| 556 MediaSessionStateChanged(false, true)) | 539 MediaSessionStateChanged(false, true)) |
| 557 .After(showControls); | 540 .After(showControls); |
| 558 | 541 |
| 559 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 542 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 560 new MockMediaSessionPlayerObserver); | |
| 561 | 543 |
| 562 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 544 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 563 | 545 |
| 564 RemovePlayers(player_observer.get()); | 546 RemovePlayers(player_observer.get()); |
| 565 | 547 |
| 566 EXPECT_FALSE(IsControllable()); | 548 EXPECT_FALSE(IsControllable()); |
| 567 EXPECT_TRUE(IsSuspended()); | 549 EXPECT_TRUE(IsSuspended()); |
| 568 } | 550 } |
| 569 | 551 |
| 570 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 552 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 571 ControlsShownAcceptTransient) { | 553 ControlsShownAcceptTransient) { |
| 572 EXPECT_CALL(*mock_media_session_observer(), | 554 EXPECT_CALL(*mock_media_session_observer(), |
| 573 MediaSessionStateChanged(true, false)); | 555 MediaSessionStateChanged(true, false)); |
| 574 | 556 |
| 575 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 557 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 576 new MockMediaSessionPlayerObserver); | |
| 577 | 558 |
| 578 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 559 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 579 | 560 |
| 580 // Transient player join the session without affecting the controls. | 561 // Transient player join the session without affecting the controls. |
| 581 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 562 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 582 | 563 |
| 583 EXPECT_TRUE(IsControllable()); | 564 EXPECT_TRUE(IsControllable()); |
| 584 EXPECT_FALSE(IsSuspended()); | 565 EXPECT_FALSE(IsSuspended()); |
| 585 } | 566 } |
| 586 | 567 |
| 587 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 568 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 588 ControlsShownAfterContentAdded) { | 569 ControlsShownAfterContentAdded) { |
| 589 Expectation dontShowControls = EXPECT_CALL( | 570 Expectation dontShowControls = EXPECT_CALL( |
| 590 *mock_media_session_observer(), MediaSessionStateChanged(false, false)); | 571 *mock_media_session_observer(), MediaSessionStateChanged(false, false)); |
| 591 EXPECT_CALL(*mock_media_session_observer(), | 572 EXPECT_CALL(*mock_media_session_observer(), |
| 592 MediaSessionStateChanged(true, false)) | 573 MediaSessionStateChanged(true, false)) |
| 593 .After(dontShowControls); | 574 .After(dontShowControls); |
| 594 | 575 |
| 595 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 576 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 596 new MockMediaSessionPlayerObserver); | |
| 597 | 577 |
| 598 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 578 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 599 | 579 |
| 600 // The controls are shown when the content player is added. | 580 // The controls are shown when the content player is added. |
| 601 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 581 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 602 | 582 |
| 603 EXPECT_TRUE(IsControllable()); | 583 EXPECT_TRUE(IsControllable()); |
| 604 EXPECT_FALSE(IsSuspended()); | 584 EXPECT_FALSE(IsSuspended()); |
| 605 } | 585 } |
| 606 | 586 |
| 607 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 587 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 608 ControlsStayIfOnlyOnePlayerHasBeenPaused) { | 588 ControlsStayIfOnlyOnePlayerHasBeenPaused) { |
| 609 EXPECT_CALL(*mock_media_session_observer(), | 589 EXPECT_CALL(*mock_media_session_observer(), |
| 610 MediaSessionStateChanged(true, false)); | 590 MediaSessionStateChanged(true, false)); |
| 611 | 591 |
| 612 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 592 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 613 new MockMediaSessionPlayerObserver); | |
| 614 | 593 |
| 615 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 594 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 616 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 595 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 617 | 596 |
| 618 // Removing only content player doesn't hide the controls since the session | 597 // Removing only content player doesn't hide the controls since the session |
| 619 // is still active. | 598 // is still active. |
| 620 RemovePlayer(player_observer.get(), 0); | 599 RemovePlayer(player_observer.get(), 0); |
| 621 | 600 |
| 622 EXPECT_TRUE(IsControllable()); | 601 EXPECT_TRUE(IsControllable()); |
| 623 EXPECT_FALSE(IsSuspended()); | 602 EXPECT_FALSE(IsSuspended()); |
| 624 } | 603 } |
| 625 | 604 |
| 626 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 605 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 627 ControlsHideWhenTheLastPlayerIsRemoved) { | 606 ControlsHideWhenTheLastPlayerIsRemoved) { |
| 628 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 607 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 629 MediaSessionStateChanged(true, false)); | 608 MediaSessionStateChanged(true, false)); |
| 630 EXPECT_CALL(*mock_media_session_observer(), | 609 EXPECT_CALL(*mock_media_session_observer(), |
| 631 MediaSessionStateChanged(false, true)) | 610 MediaSessionStateChanged(false, true)) |
| 632 .After(showControls); | 611 .After(showControls); |
| 633 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 612 |
| 634 new MockMediaSessionPlayerObserver); | 613 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 635 | 614 |
| 636 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 615 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 637 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 616 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 638 | 617 |
| 639 RemovePlayer(player_observer.get(), 0); | 618 RemovePlayer(player_observer.get(), 0); |
| 640 | 619 |
| 641 EXPECT_TRUE(IsControllable()); | 620 EXPECT_TRUE(IsControllable()); |
| 642 EXPECT_FALSE(IsSuspended()); | 621 EXPECT_FALSE(IsSuspended()); |
| 643 | 622 |
| 644 RemovePlayer(player_observer.get(), 1); | 623 RemovePlayer(player_observer.get(), 1); |
| 645 | 624 |
| 646 EXPECT_FALSE(IsControllable()); | 625 EXPECT_FALSE(IsControllable()); |
| 647 EXPECT_TRUE(IsSuspended()); | 626 EXPECT_TRUE(IsSuspended()); |
| 648 } | 627 } |
| 649 | 628 |
| 650 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 629 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 651 ControlsHideWhenAllThePlayersAreRemoved) { | 630 ControlsHideWhenAllThePlayersAreRemoved) { |
| 652 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 631 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 653 MediaSessionStateChanged(true, false)); | 632 MediaSessionStateChanged(true, false)); |
| 654 EXPECT_CALL(*mock_media_session_observer(), | 633 EXPECT_CALL(*mock_media_session_observer(), |
| 655 MediaSessionStateChanged(false, true)) | 634 MediaSessionStateChanged(false, true)) |
| 656 .After(showControls); | 635 .After(showControls); |
| 657 | 636 |
| 658 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 637 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 659 new MockMediaSessionPlayerObserver); | |
| 660 | 638 |
| 661 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 639 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 662 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 640 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 663 | 641 |
| 664 RemovePlayers(player_observer.get()); | 642 RemovePlayers(player_observer.get()); |
| 665 | 643 |
| 666 EXPECT_FALSE(IsControllable()); | 644 EXPECT_FALSE(IsControllable()); |
| 667 EXPECT_TRUE(IsSuspended()); | 645 EXPECT_TRUE(IsSuspended()); |
| 668 } | 646 } |
| 669 | 647 |
| 670 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 648 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 671 ControlsNotHideWhenTheLastPlayerIsPaused) { | 649 ControlsNotHideWhenTheLastPlayerIsPaused) { |
| 672 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 650 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 673 MediaSessionStateChanged(true, false)); | 651 MediaSessionStateChanged(true, false)); |
| 674 EXPECT_CALL(*mock_media_session_observer(), | 652 EXPECT_CALL(*mock_media_session_observer(), |
| 675 MediaSessionStateChanged(true, true)) | 653 MediaSessionStateChanged(true, true)) |
| 676 .After(showControls); | 654 .After(showControls); |
| 677 | 655 |
| 678 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 656 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 679 new MockMediaSessionPlayerObserver); | |
| 680 | 657 |
| 681 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 658 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 682 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 659 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 683 | 660 |
| 684 OnPlayerPaused(player_observer.get(), 0); | 661 OnPlayerPaused(player_observer.get(), 0); |
| 685 | 662 |
| 686 EXPECT_TRUE(IsControllable()); | 663 EXPECT_TRUE(IsControllable()); |
| 687 EXPECT_FALSE(IsSuspended()); | 664 EXPECT_FALSE(IsSuspended()); |
| 688 | 665 |
| 689 OnPlayerPaused(player_observer.get(), 1); | 666 OnPlayerPaused(player_observer.get(), 1); |
| 690 | 667 |
| 691 EXPECT_TRUE(IsControllable()); | 668 EXPECT_TRUE(IsControllable()); |
| 692 EXPECT_TRUE(IsSuspended()); | 669 EXPECT_TRUE(IsSuspended()); |
| 693 } | 670 } |
| 694 | 671 |
| 695 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 672 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 696 SuspendTemporaryUpdatesControls) { | 673 SuspendTemporaryUpdatesControls) { |
| 697 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 674 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 698 MediaSessionStateChanged(true, false)); | 675 MediaSessionStateChanged(true, false)); |
| 699 EXPECT_CALL(*mock_media_session_observer(), | 676 EXPECT_CALL(*mock_media_session_observer(), |
| 700 MediaSessionStateChanged(true, true)) | 677 MediaSessionStateChanged(true, true)) |
| 701 .After(showControls); | 678 .After(showControls); |
| 702 | 679 |
| 703 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 680 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 704 new MockMediaSessionPlayerObserver); | |
| 705 | 681 |
| 706 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 682 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 707 | 683 |
| 708 SystemSuspend(true); | 684 SystemSuspend(true); |
| 709 | 685 |
| 710 EXPECT_TRUE(IsControllable()); | 686 EXPECT_TRUE(IsControllable()); |
| 711 EXPECT_TRUE(IsSuspended()); | 687 EXPECT_TRUE(IsSuspended()); |
| 712 } | 688 } |
| 713 | 689 |
| 714 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 690 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 715 ControlsUpdatedWhenResumed) { | 691 ControlsUpdatedWhenResumed) { |
| 716 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 692 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 717 MediaSessionStateChanged(true, false)); | 693 MediaSessionStateChanged(true, false)); |
| 718 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 694 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 719 MediaSessionStateChanged(true, true)) | 695 MediaSessionStateChanged(true, true)) |
| 720 .After(showControls); | 696 .After(showControls); |
| 721 EXPECT_CALL(*mock_media_session_observer(), | 697 EXPECT_CALL(*mock_media_session_observer(), |
| 722 MediaSessionStateChanged(true, false)) | 698 MediaSessionStateChanged(true, false)) |
| 723 .After(pauseControls); | 699 .After(pauseControls); |
| 724 | 700 |
| 725 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 701 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 726 new MockMediaSessionPlayerObserver); | |
| 727 | 702 |
| 728 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 703 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 729 SystemSuspend(true); | 704 SystemSuspend(true); |
| 730 SystemResume(); | 705 SystemResume(); |
| 731 | 706 |
| 732 EXPECT_TRUE(IsControllable()); | 707 EXPECT_TRUE(IsControllable()); |
| 733 EXPECT_FALSE(IsSuspended()); | 708 EXPECT_FALSE(IsSuspended()); |
| 734 } | 709 } |
| 735 | 710 |
| 736 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 711 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 737 ControlsHideWhenSessionSuspendedPermanently) { | 712 ControlsHideWhenSessionSuspendedPermanently) { |
| 738 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 713 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 739 MediaSessionStateChanged(true, false)); | 714 MediaSessionStateChanged(true, false)); |
| 740 EXPECT_CALL(*mock_media_session_observer(), | 715 EXPECT_CALL(*mock_media_session_observer(), |
| 741 MediaSessionStateChanged(false, true)) | 716 MediaSessionStateChanged(false, true)) |
| 742 .After(showControls); | 717 .After(showControls); |
| 743 | 718 |
| 744 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 719 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 745 new MockMediaSessionPlayerObserver); | |
| 746 | 720 |
| 747 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 721 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 748 | 722 |
| 749 SystemSuspend(false); | 723 SystemSuspend(false); |
| 750 | 724 |
| 751 EXPECT_FALSE(IsControllable()); | 725 EXPECT_FALSE(IsControllable()); |
| 752 EXPECT_TRUE(IsSuspended()); | 726 EXPECT_TRUE(IsSuspended()); |
| 753 } | 727 } |
| 754 | 728 |
| 755 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 729 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 756 ConstrolsHideWhenSessionStops) { | 730 ConstrolsHideWhenSessionStops) { |
| 757 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 731 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 758 MediaSessionStateChanged(true, false)); | 732 MediaSessionStateChanged(true, false)); |
| 759 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 733 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 760 MediaSessionStateChanged(true, true)) | 734 MediaSessionStateChanged(true, true)) |
| 761 .After(showControls); | 735 .After(showControls); |
| 762 EXPECT_CALL(*mock_media_session_observer(), | 736 EXPECT_CALL(*mock_media_session_observer(), |
| 763 MediaSessionStateChanged(false, true)) | 737 MediaSessionStateChanged(false, true)) |
| 764 .After(pauseControls); | 738 .After(pauseControls); |
| 765 | 739 |
| 766 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 740 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 767 new MockMediaSessionPlayerObserver); | |
| 768 | 741 |
| 769 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 742 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 770 | 743 |
| 771 media_session_->Stop(MediaSession::SuspendType::UI); | 744 media_session_->Stop(MediaSession::SuspendType::UI); |
| 772 | 745 |
| 773 EXPECT_FALSE(IsControllable()); | 746 EXPECT_FALSE(IsControllable()); |
| 774 EXPECT_TRUE(IsSuspended()); | 747 EXPECT_TRUE(IsSuspended()); |
| 775 } | 748 } |
| 776 | 749 |
| 777 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 750 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 778 ControlsHideWhenSessionChangesFromContentToTransient) { | 751 ControlsHideWhenSessionChangesFromContentToTransient) { |
| 779 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 752 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 780 MediaSessionStateChanged(true, false)); | 753 MediaSessionStateChanged(true, false)); |
| 781 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 754 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 782 MediaSessionStateChanged(true, true)) | 755 MediaSessionStateChanged(true, true)) |
| 783 .After(showControls); | 756 .After(showControls); |
| 784 EXPECT_CALL(*mock_media_session_observer(), | 757 EXPECT_CALL(*mock_media_session_observer(), |
| 785 MediaSessionStateChanged(false, false)) | 758 MediaSessionStateChanged(false, false)) |
| 786 .After(pauseControls); | 759 .After(pauseControls); |
| 787 | 760 |
| 788 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 761 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 789 new MockMediaSessionPlayerObserver); | |
| 790 | 762 |
| 791 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 763 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 792 SystemSuspend(true); | 764 SystemSuspend(true); |
| 793 | 765 |
| 794 // This should reset the session and change it to a transient, so | 766 // This should reset the session and change it to a transient, so |
| 795 // hide the controls. | 767 // hide the controls. |
| 796 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); | 768 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 797 | 769 |
| 798 EXPECT_FALSE(IsControllable()); | 770 EXPECT_FALSE(IsControllable()); |
| 799 EXPECT_FALSE(IsSuspended()); | 771 EXPECT_FALSE(IsSuspended()); |
| 800 } | 772 } |
| 801 | 773 |
| 802 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 774 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 803 ControlsUpdatedWhenNewPlayerResetsSession) { | 775 ControlsUpdatedWhenNewPlayerResetsSession) { |
| 804 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 776 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 805 MediaSessionStateChanged(true, false)); | 777 MediaSessionStateChanged(true, false)); |
| 806 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 778 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 807 MediaSessionStateChanged(true, true)) | 779 MediaSessionStateChanged(true, true)) |
| 808 .After(showControls); | 780 .After(showControls); |
| 809 EXPECT_CALL(*mock_media_session_observer(), | 781 EXPECT_CALL(*mock_media_session_observer(), |
| 810 MediaSessionStateChanged(true, false)) | 782 MediaSessionStateChanged(true, false)) |
| 811 .After(pauseControls); | 783 .After(pauseControls); |
| 812 | 784 |
| 813 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 785 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 814 new MockMediaSessionPlayerObserver); | |
| 815 | 786 |
| 816 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 787 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 817 SystemSuspend(true); | 788 SystemSuspend(true); |
| 818 | 789 |
| 819 // This should reset the session and update the controls. | 790 // This should reset the session and update the controls. |
| 820 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 791 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 821 | 792 |
| 822 EXPECT_TRUE(IsControllable()); | 793 EXPECT_TRUE(IsControllable()); |
| 823 EXPECT_FALSE(IsSuspended()); | 794 EXPECT_FALSE(IsSuspended()); |
| 824 } | 795 } |
| 825 | 796 |
| 826 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 797 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 827 ControlsResumedWhenPlayerIsResumed) { | 798 ControlsResumedWhenPlayerIsResumed) { |
| 828 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 799 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 829 MediaSessionStateChanged(true, false)); | 800 MediaSessionStateChanged(true, false)); |
| 830 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 801 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 831 MediaSessionStateChanged(true, true)) | 802 MediaSessionStateChanged(true, true)) |
| 832 .After(showControls); | 803 .After(showControls); |
| 833 EXPECT_CALL(*mock_media_session_observer(), | 804 EXPECT_CALL(*mock_media_session_observer(), |
| 834 MediaSessionStateChanged(true, false)) | 805 MediaSessionStateChanged(true, false)) |
| 835 .After(pauseControls); | 806 .After(pauseControls); |
| 836 | 807 |
| 837 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 808 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 838 new MockMediaSessionPlayerObserver); | |
| 839 | 809 |
| 840 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 810 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 841 SystemSuspend(true); | 811 SystemSuspend(true); |
| 842 | 812 |
| 843 // This should resume the session and update the controls. | 813 // This should resume the session and update the controls. |
| 844 AddPlayer(player_observer.get(), 0, media::MediaContentType::Persistent); | 814 AddPlayer(player_observer.get(), 0, media::MediaContentType::Persistent); |
| 845 | 815 |
| 846 EXPECT_TRUE(IsControllable()); | 816 EXPECT_TRUE(IsControllable()); |
| 847 EXPECT_FALSE(IsSuspended()); | 817 EXPECT_FALSE(IsSuspended()); |
| 848 } | 818 } |
| 849 | 819 |
| 850 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 820 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 851 ControlsUpdatedDueToResumeSessionAction) { | 821 ControlsUpdatedDueToResumeSessionAction) { |
| 852 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 822 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 853 MediaSessionStateChanged(true, false)); | 823 MediaSessionStateChanged(true, false)); |
| 854 EXPECT_CALL(*mock_media_session_observer(), | 824 EXPECT_CALL(*mock_media_session_observer(), |
| 855 MediaSessionStateChanged(true, true)) | 825 MediaSessionStateChanged(true, true)) |
| 856 .After(showControls); | 826 .After(showControls); |
| 857 | 827 |
| 858 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 828 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 859 new MockMediaSessionPlayerObserver); | |
| 860 | 829 |
| 861 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 830 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 862 UISuspend(); | 831 UISuspend(); |
| 863 | 832 |
| 864 EXPECT_TRUE(IsControllable()); | 833 EXPECT_TRUE(IsControllable()); |
| 865 EXPECT_TRUE(IsSuspended()); | 834 EXPECT_TRUE(IsSuspended()); |
| 866 } | 835 } |
| 867 | 836 |
| 868 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 837 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 869 ControlsUpdatedDueToSuspendSessionAction) { | 838 ControlsUpdatedDueToSuspendSessionAction) { |
| 870 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), | 839 Expectation showControls = EXPECT_CALL(*mock_media_session_observer(), |
| 871 MediaSessionStateChanged(true, false)); | 840 MediaSessionStateChanged(true, false)); |
| 872 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), | 841 Expectation pauseControls = EXPECT_CALL(*mock_media_session_observer(), |
| 873 MediaSessionStateChanged(true, true)) | 842 MediaSessionStateChanged(true, true)) |
| 874 .After(showControls); | 843 .After(showControls); |
| 875 EXPECT_CALL(*mock_media_session_observer(), | 844 EXPECT_CALL(*mock_media_session_observer(), |
| 876 MediaSessionStateChanged(true, false)) | 845 MediaSessionStateChanged(true, false)) |
| 877 .After(pauseControls); | 846 .After(pauseControls); |
| 878 | 847 |
| 879 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 848 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 880 new MockMediaSessionPlayerObserver); | |
| 881 | 849 |
| 882 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 850 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 883 UISuspend(); | 851 UISuspend(); |
| 884 UIResume(); | 852 UIResume(); |
| 885 | 853 |
| 886 EXPECT_TRUE(IsControllable()); | 854 EXPECT_TRUE(IsControllable()); |
| 887 EXPECT_FALSE(IsSuspended()); | 855 EXPECT_FALSE(IsSuspended()); |
| 888 } | 856 } |
| 889 | 857 |
| 890 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 858 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 859 ControlsDontShowWhenOneShotIsPresent) { |
| 860 EXPECT_CALL(*mock_media_session_observer(), |
| 861 MediaSessionStateChanged(false, false)); |
| 862 |
| 863 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 864 |
| 865 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); |
| 866 |
| 867 EXPECT_FALSE(IsControllable()); |
| 868 EXPECT_FALSE(IsSuspended()); |
| 869 |
| 870 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 871 EXPECT_FALSE(IsControllable()); |
| 872 EXPECT_FALSE(IsSuspended()); |
| 873 |
| 874 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 875 EXPECT_FALSE(IsControllable()); |
| 876 EXPECT_FALSE(IsSuspended()); |
| 877 } |
| 878 |
| 879 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 880 ControlsHiddenAfterRemoveOneShotWithoutOtherPlayers) { |
| 881 Expectation expect_1 = EXPECT_CALL(*mock_media_session_observer(), |
| 882 MediaSessionStateChanged(false, false)); |
| 883 Expectation expect_2 = EXPECT_CALL(*mock_media_session_observer(), |
| 884 MediaSessionStateChanged(false, true)) |
| 885 .After(expect_1); |
| 886 EXPECT_CALL(*mock_media_session_observer(), MediaSessionStateChanged(true, _)) |
| 887 .Times(0) |
| 888 .After(expect_2); |
| 889 |
| 890 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 891 |
| 892 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); |
| 893 RemovePlayer(player_observer.get(), 0); |
| 894 |
| 895 EXPECT_FALSE(IsControllable()); |
| 896 EXPECT_TRUE(IsSuspended()); |
| 897 } |
| 898 |
| 899 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 900 ControlsShowAfterRemoveOneShotWithPersistentPresent) { |
| 901 Expectation uncontrollable = EXPECT_CALL( |
| 902 *mock_media_session_observer(), MediaSessionStateChanged(false, false)); |
| 903 |
| 904 EXPECT_CALL(*mock_media_session_observer(), |
| 905 MediaSessionStateChanged(true, false)) |
| 906 .After(uncontrollable); |
| 907 |
| 908 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 909 |
| 910 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); |
| 911 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 912 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 913 |
| 914 RemovePlayer(player_observer.get(), 0); |
| 915 |
| 916 EXPECT_TRUE(IsControllable()); |
| 917 EXPECT_FALSE(IsSuspended()); |
| 918 } |
| 919 |
| 920 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 921 DontSuspendWhenOneShotIsPresent) { |
| 922 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 923 |
| 924 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); |
| 925 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 926 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 927 |
| 928 SystemSuspend(false); |
| 929 |
| 930 EXPECT_FALSE(IsControllable()); |
| 931 EXPECT_FALSE(IsSuspended()); |
| 932 |
| 933 EXPECT_EQ(0, player_observer->received_suspend_calls()); |
| 934 } |
| 935 |
| 936 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 891 DontResumeBySystemUISuspendedSessions) { | 937 DontResumeBySystemUISuspendedSessions) { |
| 892 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 938 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 893 new MockMediaSessionPlayerObserver); | 939 |
| 894 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 940 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 895 | 941 |
| 896 UISuspend(); | 942 UISuspend(); |
| 897 EXPECT_TRUE(IsControllable()); | 943 EXPECT_TRUE(IsControllable()); |
| 898 EXPECT_TRUE(IsSuspended()); | 944 EXPECT_TRUE(IsSuspended()); |
| 899 | 945 |
| 900 SystemResume(); | 946 SystemResume(); |
| 901 EXPECT_TRUE(IsControllable()); | 947 EXPECT_TRUE(IsControllable()); |
| 902 EXPECT_TRUE(IsSuspended()); | 948 EXPECT_TRUE(IsSuspended()); |
| 903 } | 949 } |
| 904 | 950 |
| 905 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 951 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 906 AllowUIResumeForSystemSuspend) { | 952 AllowUIResumeForSystemSuspend) { |
| 907 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 953 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 908 new MockMediaSessionPlayerObserver); | 954 |
| 909 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 955 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 910 | 956 |
| 911 SystemSuspend(true); | 957 SystemSuspend(true); |
| 912 EXPECT_TRUE(IsControllable()); | 958 EXPECT_TRUE(IsControllable()); |
| 913 EXPECT_TRUE(IsSuspended()); | 959 EXPECT_TRUE(IsSuspended()); |
| 914 | 960 |
| 915 UIResume(); | 961 UIResume(); |
| 916 EXPECT_TRUE(IsControllable()); | 962 EXPECT_TRUE(IsControllable()); |
| 917 EXPECT_FALSE(IsSuspended()); | 963 EXPECT_FALSE(IsSuspended()); |
| 918 } | 964 } |
| 919 | 965 |
| 920 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeSuspendFromUI) { | 966 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeSuspendFromUI) { |
| 921 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 967 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 922 new MockMediaSessionPlayerObserver); | 968 |
| 923 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 969 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 924 | 970 |
| 925 UISuspend(); | 971 UISuspend(); |
| 926 EXPECT_TRUE(IsControllable()); | 972 EXPECT_TRUE(IsControllable()); |
| 927 EXPECT_TRUE(IsSuspended()); | 973 EXPECT_TRUE(IsSuspended()); |
| 928 | 974 |
| 929 UIResume(); | 975 UIResume(); |
| 930 EXPECT_TRUE(IsControllable()); | 976 EXPECT_TRUE(IsControllable()); |
| 931 EXPECT_FALSE(IsSuspended()); | 977 EXPECT_FALSE(IsSuspended()); |
| 932 } | 978 } |
| 933 | 979 |
| 934 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeSuspendFromSystem) { | 980 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, ResumeSuspendFromSystem) { |
| 935 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 981 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 936 new MockMediaSessionPlayerObserver); | 982 |
| 937 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 983 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 938 | 984 |
| 939 SystemSuspend(true); | 985 SystemSuspend(true); |
| 940 EXPECT_TRUE(IsControllable()); | 986 EXPECT_TRUE(IsControllable()); |
| 941 EXPECT_TRUE(IsSuspended()); | 987 EXPECT_TRUE(IsSuspended()); |
| 942 | 988 |
| 943 SystemResume(); | 989 SystemResume(); |
| 944 EXPECT_TRUE(IsControllable()); | 990 EXPECT_TRUE(IsControllable()); |
| 945 EXPECT_FALSE(IsSuspended()); | 991 EXPECT_FALSE(IsSuspended()); |
| 946 } | 992 } |
| 947 | 993 |
| 994 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, OneShotTakesGainFocus) { |
| 995 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 996 |
| 997 EXPECT_CALL( |
| 998 *mock_audio_focus_delegate(), |
| 999 RequestAudioFocus(content::AudioFocusManager::AudioFocusType::Gain)) |
| 1000 .Times(1); |
| 1001 EXPECT_CALL(*mock_audio_focus_delegate(), |
| 1002 RequestAudioFocus(::testing::Ne( |
| 1003 content::AudioFocusManager::AudioFocusType::Gain))) |
| 1004 .Times(0); |
| 1005 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); |
| 1006 StartNewPlayer(player_observer.get(), media::MediaContentType::Transient); |
| 1007 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1008 } |
| 1009 |
| 1010 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, RemovingOneShotDropsFocus) { |
| 1011 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1012 |
| 1013 EXPECT_CALL(*mock_audio_focus_delegate(), AbandonAudioFocus()); |
| 1014 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); |
| 1015 RemovePlayer(player_observer.get(), 0); |
| 1016 } |
| 1017 |
| 1018 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 1019 RemovingOneShotWhileStillHavingOtherPlayersKeepsFocus) { |
| 1020 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1021 |
| 1022 EXPECT_CALL(*mock_audio_focus_delegate(), AbandonAudioFocus()) |
| 1023 .Times(1); // Called in TearDown |
| 1024 StartNewPlayer(player_observer.get(), media::MediaContentType::OneShot); |
| 1025 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1026 RemovePlayer(player_observer.get(), 0); |
| 1027 } |
| 1028 |
| 948 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 1029 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 949 UMA_Suspended_SystemTransient) { | 1030 UMA_Suspended_SystemTransient) { |
| 950 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1031 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 951 new MockMediaSessionPlayerObserver); | |
| 952 base::HistogramTester tester; | 1032 base::HistogramTester tester; |
| 953 | 1033 |
| 954 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1034 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 955 SystemSuspend(true); | 1035 SystemSuspend(true); |
| 956 | 1036 |
| 957 std::unique_ptr<base::HistogramSamples> samples( | 1037 std::unique_ptr<base::HistogramSamples> samples( |
| 958 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); | 1038 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); |
| 959 EXPECT_EQ(1, samples->TotalCount()); | 1039 EXPECT_EQ(1, samples->TotalCount()); |
| 960 EXPECT_EQ(1, samples->GetCount(0)); // System Transient | 1040 EXPECT_EQ(1, samples->GetCount(0)); // System Transient |
| 961 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent | 1041 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent |
| 962 EXPECT_EQ(0, samples->GetCount(2)); // UI | 1042 EXPECT_EQ(0, samples->GetCount(2)); // UI |
| 963 } | 1043 } |
| 964 | 1044 |
| 965 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 1045 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 966 UMA_Suspended_SystemPermantent) { | 1046 UMA_Suspended_SystemPermantent) { |
| 967 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1047 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 968 new MockMediaSessionPlayerObserver); | |
| 969 base::HistogramTester tester; | 1048 base::HistogramTester tester; |
| 970 | 1049 |
| 971 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1050 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 972 SystemSuspend(false); | 1051 SystemSuspend(false); |
| 973 | 1052 |
| 974 std::unique_ptr<base::HistogramSamples> samples( | 1053 std::unique_ptr<base::HistogramSamples> samples( |
| 975 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); | 1054 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); |
| 976 EXPECT_EQ(1, samples->TotalCount()); | 1055 EXPECT_EQ(1, samples->TotalCount()); |
| 977 EXPECT_EQ(0, samples->GetCount(0)); // System Transient | 1056 EXPECT_EQ(0, samples->GetCount(0)); // System Transient |
| 978 EXPECT_EQ(1, samples->GetCount(1)); // System Permanent | 1057 EXPECT_EQ(1, samples->GetCount(1)); // System Permanent |
| 979 EXPECT_EQ(0, samples->GetCount(2)); // UI | 1058 EXPECT_EQ(0, samples->GetCount(2)); // UI |
| 980 } | 1059 } |
| 981 | 1060 |
| 982 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_UI) { | 1061 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_UI) { |
| 983 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1062 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 984 new MockMediaSessionPlayerObserver); | 1063 |
| 985 base::HistogramTester tester; | 1064 base::HistogramTester tester; |
| 986 | 1065 |
| 987 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1066 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 988 UISuspend(); | 1067 UISuspend(); |
| 989 | 1068 |
| 990 std::unique_ptr<base::HistogramSamples> samples( | 1069 std::unique_ptr<base::HistogramSamples> samples( |
| 991 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); | 1070 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); |
| 992 EXPECT_EQ(1, samples->TotalCount()); | 1071 EXPECT_EQ(1, samples->TotalCount()); |
| 993 EXPECT_EQ(0, samples->GetCount(0)); // System Transient | 1072 EXPECT_EQ(0, samples->GetCount(0)); // System Transient |
| 994 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent | 1073 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent |
| 995 EXPECT_EQ(1, samples->GetCount(2)); // UI | 1074 EXPECT_EQ(1, samples->GetCount(2)); // UI |
| 996 } | 1075 } |
| 997 | 1076 |
| 998 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_Multiple) { | 1077 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_Multiple) { |
| 999 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1078 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1000 new MockMediaSessionPlayerObserver); | |
| 1001 base::HistogramTester tester; | 1079 base::HistogramTester tester; |
| 1002 | 1080 |
| 1003 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1081 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1004 | 1082 |
| 1005 UISuspend(); | 1083 UISuspend(); |
| 1006 UIResume(); | 1084 UIResume(); |
| 1007 | 1085 |
| 1008 SystemSuspend(true); | 1086 SystemSuspend(true); |
| 1009 SystemResume(); | 1087 SystemResume(); |
| 1010 | 1088 |
| 1011 UISuspend(); | 1089 UISuspend(); |
| 1012 UIResume(); | 1090 UIResume(); |
| 1013 | 1091 |
| 1014 SystemSuspend(false); | 1092 SystemSuspend(false); |
| 1015 | 1093 |
| 1016 std::unique_ptr<base::HistogramSamples> samples( | 1094 std::unique_ptr<base::HistogramSamples> samples( |
| 1017 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); | 1095 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); |
| 1018 EXPECT_EQ(4, samples->TotalCount()); | 1096 EXPECT_EQ(4, samples->TotalCount()); |
| 1019 EXPECT_EQ(1, samples->GetCount(0)); // System Transient | 1097 EXPECT_EQ(1, samples->GetCount(0)); // System Transient |
| 1020 EXPECT_EQ(1, samples->GetCount(1)); // System Permanent | 1098 EXPECT_EQ(1, samples->GetCount(1)); // System Permanent |
| 1021 EXPECT_EQ(2, samples->GetCount(2)); // UI | 1099 EXPECT_EQ(2, samples->GetCount(2)); // UI |
| 1022 } | 1100 } |
| 1023 | 1101 |
| 1024 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_Crossing) { | 1102 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_Crossing) { |
| 1025 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1103 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1026 new MockMediaSessionPlayerObserver); | |
| 1027 base::HistogramTester tester; | 1104 base::HistogramTester tester; |
| 1028 | 1105 |
| 1029 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1106 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1030 | 1107 |
| 1031 UISuspend(); | 1108 UISuspend(); |
| 1032 SystemSuspend(true); | 1109 SystemSuspend(true); |
| 1033 SystemSuspend(false); | 1110 SystemSuspend(false); |
| 1034 UIResume(); | 1111 UIResume(); |
| 1035 | 1112 |
| 1036 SystemSuspend(true); | 1113 SystemSuspend(true); |
| 1037 SystemSuspend(true); | 1114 SystemSuspend(true); |
| 1038 SystemSuspend(false); | 1115 SystemSuspend(false); |
| 1039 SystemResume(); | 1116 SystemResume(); |
| 1040 | 1117 |
| 1041 std::unique_ptr<base::HistogramSamples> samples( | 1118 std::unique_ptr<base::HistogramSamples> samples( |
| 1042 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); | 1119 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); |
| 1043 EXPECT_EQ(2, samples->TotalCount()); | 1120 EXPECT_EQ(2, samples->TotalCount()); |
| 1044 EXPECT_EQ(1, samples->GetCount(0)); // System Transient | 1121 EXPECT_EQ(1, samples->GetCount(0)); // System Transient |
| 1045 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent | 1122 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent |
| 1046 EXPECT_EQ(1, samples->GetCount(2)); // UI | 1123 EXPECT_EQ(1, samples->GetCount(2)); // UI |
| 1047 } | 1124 } |
| 1048 | 1125 |
| 1049 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_Stop) { | 1126 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, UMA_Suspended_Stop) { |
| 1050 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1127 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1051 new MockMediaSessionPlayerObserver); | |
| 1052 base::HistogramTester tester; | 1128 base::HistogramTester tester; |
| 1053 | 1129 |
| 1054 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1130 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1055 media_session_->Stop(MediaSession::SuspendType::UI); | 1131 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1056 | 1132 |
| 1057 std::unique_ptr<base::HistogramSamples> samples( | 1133 std::unique_ptr<base::HistogramSamples> samples( |
| 1058 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); | 1134 tester.GetHistogramSamplesSinceCreation("Media.Session.Suspended")); |
| 1059 EXPECT_EQ(1, samples->TotalCount()); | 1135 EXPECT_EQ(1, samples->TotalCount()); |
| 1060 EXPECT_EQ(0, samples->GetCount(0)); // System Transient | 1136 EXPECT_EQ(0, samples->GetCount(0)); // System Transient |
| 1061 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent | 1137 EXPECT_EQ(0, samples->GetCount(1)); // System Permanent |
| 1062 EXPECT_EQ(1, samples->GetCount(2)); // UI | 1138 EXPECT_EQ(1, samples->GetCount(2)); // UI |
| 1063 } | 1139 } |
| 1064 | 1140 |
| 1065 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 1141 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 1066 UMA_ActiveTime_NoActivation) { | 1142 UMA_ActiveTime_NoActivation) { |
| 1067 base::HistogramTester tester; | 1143 base::HistogramTester tester; |
| 1068 | 1144 |
| 1069 std::unique_ptr<MediaSessionImpl> media_session = CreateDummyMediaSession(); | 1145 std::unique_ptr<MediaSessionImpl> media_session = CreateDummyMediaSession(); |
| 1070 media_session.reset(); | 1146 media_session.reset(); |
| 1071 | 1147 |
| 1072 // A MediaSession that wasn't active doesn't register an active time. | 1148 // A MediaSession that wasn't active doesn't register an active time. |
| 1073 std::unique_ptr<base::HistogramSamples> samples( | 1149 std::unique_ptr<base::HistogramSamples> samples( |
| 1074 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1150 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1075 EXPECT_EQ(0, samples->TotalCount()); | 1151 EXPECT_EQ(0, samples->TotalCount()); |
| 1076 } | 1152 } |
| 1077 | 1153 |
| 1078 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 1154 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 1079 UMA_ActiveTime_SimpleActivation) { | 1155 UMA_ActiveTime_SimpleActivation) { |
| 1080 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1156 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1081 new MockMediaSessionPlayerObserver); | |
| 1082 base::HistogramTester tester; | 1157 base::HistogramTester tester; |
| 1083 | 1158 |
| 1084 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1159 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1085 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); | 1160 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1086 clock->SetNowTicks(base::TimeTicks::Now()); | 1161 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1087 media_session_uma_helper->SetClockForTest( | 1162 media_session_uma_helper->SetClockForTest( |
| 1088 std::unique_ptr<base::SimpleTestTickClock>(clock)); | 1163 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1089 | 1164 |
| 1090 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1165 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1091 | 1166 |
| 1092 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1167 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1093 media_session_->Stop(MediaSession::SuspendType::UI); | 1168 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1094 | 1169 |
| 1095 std::unique_ptr<base::HistogramSamples> samples( | 1170 std::unique_ptr<base::HistogramSamples> samples( |
| 1096 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1171 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1097 EXPECT_EQ(1, samples->TotalCount()); | 1172 EXPECT_EQ(1, samples->TotalCount()); |
| 1098 EXPECT_EQ(1, samples->GetCount(1000)); | 1173 EXPECT_EQ(1, samples->GetCount(1000)); |
| 1099 } | 1174 } |
| 1100 | 1175 |
| 1101 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 1176 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 1102 UMA_ActiveTime_ActivationWithUISuspension) { | 1177 UMA_ActiveTime_ActivationWithUISuspension) { |
| 1103 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1178 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1104 new MockMediaSessionPlayerObserver); | |
| 1105 base::HistogramTester tester; | 1179 base::HistogramTester tester; |
| 1106 | 1180 |
| 1107 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1181 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1108 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); | 1182 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1109 clock->SetNowTicks(base::TimeTicks::Now()); | 1183 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1110 media_session_uma_helper->SetClockForTest( | 1184 media_session_uma_helper->SetClockForTest( |
| 1111 std::unique_ptr<base::SimpleTestTickClock>(clock)); | 1185 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1112 | 1186 |
| 1113 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1187 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1114 | 1188 |
| 1115 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1189 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1116 UISuspend(); | 1190 UISuspend(); |
| 1117 | 1191 |
| 1118 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); | 1192 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); |
| 1119 UIResume(); | 1193 UIResume(); |
| 1120 | 1194 |
| 1121 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1195 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1122 media_session_->Stop(MediaSession::SuspendType::UI); | 1196 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1123 | 1197 |
| 1124 std::unique_ptr<base::HistogramSamples> samples( | 1198 std::unique_ptr<base::HistogramSamples> samples( |
| 1125 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1199 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1126 EXPECT_EQ(1, samples->TotalCount()); | 1200 EXPECT_EQ(1, samples->TotalCount()); |
| 1127 EXPECT_EQ(1, samples->GetCount(2000)); | 1201 EXPECT_EQ(1, samples->GetCount(2000)); |
| 1128 } | 1202 } |
| 1129 | 1203 |
| 1130 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 1204 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 1131 UMA_ActiveTime_ActivationWithSystemSuspension) { | 1205 UMA_ActiveTime_ActivationWithSystemSuspension) { |
| 1132 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1206 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1133 new MockMediaSessionPlayerObserver); | |
| 1134 base::HistogramTester tester; | 1207 base::HistogramTester tester; |
| 1135 | 1208 |
| 1136 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1209 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1137 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); | 1210 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1138 clock->SetNowTicks(base::TimeTicks::Now()); | 1211 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1139 media_session_uma_helper->SetClockForTest( | 1212 media_session_uma_helper->SetClockForTest( |
| 1140 std::unique_ptr<base::SimpleTestTickClock>(clock)); | 1213 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1141 | 1214 |
| 1142 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1215 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1143 | 1216 |
| 1144 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1217 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1145 SystemSuspend(true); | 1218 SystemSuspend(true); |
| 1146 | 1219 |
| 1147 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); | 1220 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); |
| 1148 SystemResume(); | 1221 SystemResume(); |
| 1149 | 1222 |
| 1150 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1223 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1151 media_session_->Stop(MediaSession::SuspendType::UI); | 1224 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1152 | 1225 |
| 1153 std::unique_ptr<base::HistogramSamples> samples( | 1226 std::unique_ptr<base::HistogramSamples> samples( |
| 1154 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1227 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1155 EXPECT_EQ(1, samples->TotalCount()); | 1228 EXPECT_EQ(1, samples->TotalCount()); |
| 1156 EXPECT_EQ(1, samples->GetCount(2000)); | 1229 EXPECT_EQ(1, samples->GetCount(2000)); |
| 1157 } | 1230 } |
| 1158 | 1231 |
| 1159 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 1232 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 1160 UMA_ActiveTime_ActivateSuspendedButNotStopped) { | 1233 UMA_ActiveTime_ActivateSuspendedButNotStopped) { |
| 1161 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1234 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1162 new MockMediaSessionPlayerObserver); | |
| 1163 base::HistogramTester tester; | 1235 base::HistogramTester tester; |
| 1164 | 1236 |
| 1165 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1237 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1166 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); | 1238 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1167 clock->SetNowTicks(base::TimeTicks::Now()); | 1239 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1168 media_session_uma_helper->SetClockForTest( | 1240 media_session_uma_helper->SetClockForTest( |
| 1169 std::unique_ptr<base::SimpleTestTickClock>(clock)); | 1241 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1170 | 1242 |
| 1171 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1243 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1172 clock->Advance(base::TimeDelta::FromMilliseconds(500)); | 1244 clock->Advance(base::TimeDelta::FromMilliseconds(500)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1184 | 1256 |
| 1185 { | 1257 { |
| 1186 std::unique_ptr<base::HistogramSamples> samples( | 1258 std::unique_ptr<base::HistogramSamples> samples( |
| 1187 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1259 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1188 EXPECT_EQ(0, samples->TotalCount()); | 1260 EXPECT_EQ(0, samples->TotalCount()); |
| 1189 } | 1261 } |
| 1190 } | 1262 } |
| 1191 | 1263 |
| 1192 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 1264 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 1193 UMA_ActiveTime_ActivateSuspendStopTwice) { | 1265 UMA_ActiveTime_ActivateSuspendStopTwice) { |
| 1194 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1266 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1195 new MockMediaSessionPlayerObserver); | |
| 1196 base::HistogramTester tester; | 1267 base::HistogramTester tester; |
| 1197 | 1268 |
| 1198 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1269 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1199 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); | 1270 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1200 clock->SetNowTicks(base::TimeTicks::Now()); | 1271 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1201 media_session_uma_helper->SetClockForTest( | 1272 media_session_uma_helper->SetClockForTest( |
| 1202 std::unique_ptr<base::SimpleTestTickClock>(clock)); | 1273 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1203 | 1274 |
| 1204 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1275 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1205 clock->Advance(base::TimeDelta::FromMilliseconds(500)); | 1276 clock->Advance(base::TimeDelta::FromMilliseconds(500)); |
| 1206 SystemSuspend(true); | 1277 SystemSuspend(true); |
| 1207 media_session_->Stop(MediaSession::SuspendType::UI); | 1278 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1208 | 1279 |
| 1209 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1280 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1210 clock->Advance(base::TimeDelta::FromMilliseconds(5000)); | 1281 clock->Advance(base::TimeDelta::FromMilliseconds(5000)); |
| 1211 SystemResume(); | 1282 SystemResume(); |
| 1212 media_session_->Stop(MediaSession::SuspendType::UI); | 1283 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1213 | 1284 |
| 1214 std::unique_ptr<base::HistogramSamples> samples( | 1285 std::unique_ptr<base::HistogramSamples> samples( |
| 1215 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1286 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1216 EXPECT_EQ(2, samples->TotalCount()); | 1287 EXPECT_EQ(2, samples->TotalCount()); |
| 1217 EXPECT_EQ(1, samples->GetCount(500)); | 1288 EXPECT_EQ(1, samples->GetCount(500)); |
| 1218 EXPECT_EQ(1, samples->GetCount(5000)); | 1289 EXPECT_EQ(1, samples->GetCount(5000)); |
| 1219 } | 1290 } |
| 1220 | 1291 |
| 1221 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, | 1292 IN_PROC_BROWSER_TEST_F(MediaSessionImplBrowserTest, |
| 1222 UMA_ActiveTime_MultipleActivations) { | 1293 UMA_ActiveTime_MultipleActivations) { |
| 1223 std::unique_ptr<MockMediaSessionPlayerObserver> player_observer( | 1294 auto player_observer = base::MakeUnique<MockMediaSessionPlayerObserver>(); |
| 1224 new MockMediaSessionPlayerObserver); | |
| 1225 base::HistogramTester tester; | 1295 base::HistogramTester tester; |
| 1226 | 1296 |
| 1227 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1297 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1228 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); | 1298 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1229 clock->SetNowTicks(base::TimeTicks::Now()); | 1299 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1230 media_session_uma_helper->SetClockForTest( | 1300 media_session_uma_helper->SetClockForTest( |
| 1231 std::unique_ptr<base::SimpleTestTickClock>(clock)); | 1301 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1232 | 1302 |
| 1233 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1303 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1234 clock->Advance(base::TimeDelta::FromMilliseconds(10000)); | 1304 clock->Advance(base::TimeDelta::FromMilliseconds(10000)); |
| 1235 RemovePlayer(player_observer.get(), 0); | 1305 RemovePlayer(player_observer.get(), 0); |
| 1236 | 1306 |
| 1237 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); | 1307 StartNewPlayer(player_observer.get(), media::MediaContentType::Persistent); |
| 1238 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1308 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1239 media_session_->Stop(MediaSession::SuspendType::UI); | 1309 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1240 | 1310 |
| 1241 std::unique_ptr<base::HistogramSamples> samples( | 1311 std::unique_ptr<base::HistogramSamples> samples( |
| 1242 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1312 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1243 EXPECT_EQ(2, samples->TotalCount()); | 1313 EXPECT_EQ(2, samples->TotalCount()); |
| 1244 EXPECT_EQ(1, samples->GetCount(1000)); | 1314 EXPECT_EQ(1, samples->GetCount(1000)); |
| 1245 EXPECT_EQ(1, samples->GetCount(10000)); | 1315 EXPECT_EQ(1, samples->GetCount(10000)); |
| 1246 } | 1316 } |
| OLD | NEW |