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