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

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

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

Powered by Google App Engine
This is Rietveld 408576698