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