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

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

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

Powered by Google App Engine
This is Rietveld 408576698