| 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> |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 using content::MediaSession; | 27 using content::MediaSession; |
| 28 using content::MediaSessionDelegate; | 28 using content::MediaSessionDelegate; |
| 29 using content::MediaSessionObserver; | 29 using content::MediaSessionObserver; |
| 30 using content::MediaSessionUmaHelper; | 30 using content::MediaSessionUmaHelper; |
| 31 using content::MockMediaSessionObserver; | 31 using content::MockMediaSessionObserver; |
| 32 | 32 |
| 33 using ::testing::Expectation; | 33 using ::testing::Expectation; |
| 34 | 34 |
| 35 namespace { | 35 namespace { |
| 36 | 36 |
| 37 const double kDefaultVolumeMultiplier = 1.0; |
| 38 const double kDuckingVolumeMultiplier = 0.2; |
| 39 |
| 37 class MockMediaSessionDelegate : public MediaSessionDelegate { | 40 class MockMediaSessionDelegate : public MediaSessionDelegate { |
| 38 public: | 41 public: |
| 39 bool RequestAudioFocus(content::AudioFocusManager::AudioFocusType) override { | 42 bool RequestAudioFocus(content::AudioFocusManager::AudioFocusType) override { |
| 40 return true; | 43 return true; |
| 41 } | 44 } |
| 42 | 45 |
| 43 void AbandonAudioFocus() override { | 46 void AbandonAudioFocus() override { |
| 44 } | 47 } |
| 45 }; | 48 }; |
| 46 | 49 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 media_session_->Suspend(MediaSession::SuspendType::UI); | 133 media_session_->Suspend(MediaSession::SuspendType::UI); |
| 131 } | 134 } |
| 132 | 135 |
| 133 void SystemSuspend(bool temporary) { | 136 void SystemSuspend(bool temporary) { |
| 134 media_session_->OnSuspendInternal( | 137 media_session_->OnSuspendInternal( |
| 135 MediaSession::SuspendType::SYSTEM, | 138 MediaSession::SuspendType::SYSTEM, |
| 136 temporary ? MediaSession::State::SUSPENDED | 139 temporary ? MediaSession::State::SUSPENDED |
| 137 : MediaSession::State::INACTIVE); | 140 : MediaSession::State::INACTIVE); |
| 138 } | 141 } |
| 139 | 142 |
| 140 void SystemSetVolumeMultiplier(double volume_multiplier) { | 143 void SystemStartDucking() { |
| 141 media_session_->SetVolumeMultiplier(volume_multiplier); | 144 media_session_->StartDucking(); |
| 145 } |
| 146 |
| 147 void SystemStopDucking() { |
| 148 media_session_->StopDucking(); |
| 142 } | 149 } |
| 143 | 150 |
| 144 MockWebContentsObserver* mock_web_contents_observer() { | 151 MockWebContentsObserver* mock_web_contents_observer() { |
| 145 return mock_web_contents_observer_.get(); | 152 return mock_web_contents_observer_.get(); |
| 146 } | 153 } |
| 147 | 154 |
| 148 std::unique_ptr<MediaSession> CreateDummyMediaSession() { | 155 std::unique_ptr<MediaSession> CreateDummyMediaSession() { |
| 149 return std::unique_ptr<MediaSession>(new MediaSession(nullptr)); | 156 return std::unique_ptr<MediaSession>(new MediaSession(nullptr)); |
| 150 } | 157 } |
| 151 | 158 |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 | 266 |
| 260 StartNewPlayer(media_session_observer.get(), | 267 StartNewPlayer(media_session_observer.get(), |
| 261 media::MediaContentType::Persistent); | 268 media::MediaContentType::Persistent); |
| 262 | 269 |
| 263 EXPECT_FALSE(media_session_observer->IsPlaying(0)); | 270 EXPECT_FALSE(media_session_observer->IsPlaying(0)); |
| 264 EXPECT_TRUE(media_session_observer->IsPlaying(1)); | 271 EXPECT_TRUE(media_session_observer->IsPlaying(1)); |
| 265 EXPECT_TRUE(media_session_observer->IsPlaying(2)); | 272 EXPECT_TRUE(media_session_observer->IsPlaying(2)); |
| 266 } | 273 } |
| 267 | 274 |
| 268 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 275 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 269 MediaSessionSetVolumeMultiplier) { | 276 InitialVolumeMultiplier) { |
| 270 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 277 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 271 new MockMediaSessionObserver); | 278 new MockMediaSessionObserver); |
| 272 | 279 |
| 280 StartNewPlayer(media_session_observer.get(), |
| 281 media::MediaContentType::Persistent); |
| 282 StartNewPlayer(media_session_observer.get(), |
| 283 media::MediaContentType::Persistent); |
| 284 |
| 285 EXPECT_EQ(kDefaultVolumeMultiplier, |
| 286 media_session_observer->GetVolumeMultiplier(0)); |
| 287 EXPECT_EQ(kDefaultVolumeMultiplier, |
| 288 media_session_observer->GetVolumeMultiplier(1)); |
| 289 |
| 290 } |
| 291 |
| 292 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 293 StartDuckingReducesVolumeMultiplier) { |
| 294 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 295 new MockMediaSessionObserver); |
| 296 |
| 273 StartNewPlayer(media_session_observer.get(), | 297 StartNewPlayer(media_session_observer.get(), |
| 274 media::MediaContentType::Persistent); | 298 media::MediaContentType::Persistent); |
| 275 StartNewPlayer(media_session_observer.get(), | 299 StartNewPlayer(media_session_observer.get(), |
| 276 media::MediaContentType::Persistent); | 300 media::MediaContentType::Persistent); |
| 301 SystemStartDucking(); |
| 277 | 302 |
| 278 double volume_multiplier = 0.2f; | 303 EXPECT_EQ(kDuckingVolumeMultiplier, |
| 279 SystemSetVolumeMultiplier(volume_multiplier); | 304 media_session_observer->GetVolumeMultiplier(0)); |
| 280 | 305 EXPECT_EQ(kDuckingVolumeMultiplier, |
| 281 EXPECT_EQ(volume_multiplier, media_session_observer->GetVolumeMultiplier(0)); | 306 media_session_observer->GetVolumeMultiplier(1)); |
| 282 EXPECT_EQ(volume_multiplier, media_session_observer->GetVolumeMultiplier(1)); | |
| 283 | 307 |
| 284 StartNewPlayer(media_session_observer.get(), | 308 StartNewPlayer(media_session_observer.get(), |
| 285 media::MediaContentType::Persistent); | 309 media::MediaContentType::Persistent); |
| 286 | 310 |
| 287 EXPECT_EQ(volume_multiplier, media_session_observer->GetVolumeMultiplier(2)); | 311 EXPECT_EQ(kDuckingVolumeMultiplier, |
| 312 media_session_observer->GetVolumeMultiplier(2)); |
| 313 } |
| 314 |
| 315 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 316 StopDuckingRecoversVolumeMultiplier) { |
| 317 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 318 new MockMediaSessionObserver); |
| 319 |
| 320 StartNewPlayer(media_session_observer.get(), |
| 321 media::MediaContentType::Persistent); |
| 322 StartNewPlayer(media_session_observer.get(), |
| 323 media::MediaContentType::Persistent); |
| 324 SystemStartDucking(); |
| 325 SystemStopDucking(); |
| 326 |
| 327 EXPECT_EQ(kDefaultVolumeMultiplier, |
| 328 media_session_observer->GetVolumeMultiplier(0)); |
| 329 EXPECT_EQ(kDefaultVolumeMultiplier, |
| 330 media_session_observer->GetVolumeMultiplier(1)); |
| 331 |
| 332 StartNewPlayer(media_session_observer.get(), |
| 333 media::MediaContentType::Persistent); |
| 334 |
| 335 EXPECT_EQ(kDefaultVolumeMultiplier, |
| 336 media_session_observer->GetVolumeMultiplier(2)); |
| 288 } | 337 } |
| 289 | 338 |
| 290 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, AudioFocusInitialState) { | 339 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, AudioFocusInitialState) { |
| 291 EXPECT_FALSE(HasAudioFocus()); | 340 EXPECT_FALSE(HasAudioFocus()); |
| 292 } | 341 } |
| 293 | 342 |
| 294 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StartPlayerGivesFocus) { | 343 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, StartPlayerGivesFocus) { |
| 295 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 344 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 296 new MockMediaSessionObserver); | 345 new MockMediaSessionObserver); |
| 297 | 346 |
| (...skipping 991 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1289 media::MediaContentType::Persistent); | 1338 media::MediaContentType::Persistent); |
| 1290 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1339 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1291 media_session_->Stop(MediaSession::SuspendType::UI); | 1340 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1292 | 1341 |
| 1293 std::unique_ptr<base::HistogramSamples> samples( | 1342 std::unique_ptr<base::HistogramSamples> samples( |
| 1294 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1343 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1295 EXPECT_EQ(2, samples->TotalCount()); | 1344 EXPECT_EQ(2, samples->TotalCount()); |
| 1296 EXPECT_EQ(1, samples->GetCount(1000)); | 1345 EXPECT_EQ(1, samples->GetCount(1000)); |
| 1297 EXPECT_EQ(1, samples->GetCount(10000)); | 1346 EXPECT_EQ(1, samples->GetCount(10000)); |
| 1298 } | 1347 } |
| OLD | NEW |