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