Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(130)

Side by Side Diff: content/browser/media/session/media_session_browsertest.cc

Issue 2291163002: Let MediaSession store duck state instead of volume multiplier (Closed)
Patch Set: addressed Anton's comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « content/browser/media/session/media_session.cc ('k') | content/browser/media/session/media_session_delegate_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698