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