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

Side by Side Diff: media/blink/webmediaplayer_impl_unittest.cc

Issue 2511573002: Media: Don't suspend streaming media on Desktop. (Closed)
Patch Set: 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
« no previous file with comments | « media/blink/webmediaplayer_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "media/blink/webmediaplayer_impl.h" 5 #include "media/blink/webmediaplayer_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 180
181 void OnMetadata(PipelineMetadata metadata) { wmpi_->OnMetadata(metadata); } 181 void OnMetadata(PipelineMetadata metadata) { wmpi_->OnMetadata(metadata); }
182 182
183 void OnVideoNaturalSizeChange(const gfx::Size& size) { 183 void OnVideoNaturalSizeChange(const gfx::Size& size) {
184 wmpi_->OnVideoNaturalSizeChange(size); 184 wmpi_->OnVideoNaturalSizeChange(size);
185 } 185 }
186 186
187 WebMediaPlayerImpl::PlayState ComputePlayState() { 187 WebMediaPlayerImpl::PlayState ComputePlayState() {
188 wmpi_->is_idle_ = false; 188 wmpi_->is_idle_ = false;
189 wmpi_->must_suspend_ = false; 189 wmpi_->must_suspend_ = false;
190 return wmpi_->UpdatePlayState_ComputePlayState(false, false, false); 190 return wmpi_->UpdatePlayState_ComputePlayState(false, false, false, false);
191 } 191 }
192 192
193 WebMediaPlayerImpl::PlayState ComputePlayStateSuspended() { 193 WebMediaPlayerImpl::PlayState ComputePlayStateSuspended() {
194 wmpi_->is_idle_ = false; 194 wmpi_->is_idle_ = false;
195 wmpi_->must_suspend_ = false; 195 wmpi_->must_suspend_ = false;
196 return wmpi_->UpdatePlayState_ComputePlayState(false, true, false); 196 return wmpi_->UpdatePlayState_ComputePlayState(false, false, true, false);
197 } 197 }
198 198
199 WebMediaPlayerImpl::PlayState ComputeBackgroundedPlayState() { 199 WebMediaPlayerImpl::PlayState ComputeBackgroundedPlayState() {
200 wmpi_->is_idle_ = false; 200 wmpi_->is_idle_ = false;
201 wmpi_->must_suspend_ = false; 201 wmpi_->must_suspend_ = false;
202 return wmpi_->UpdatePlayState_ComputePlayState(false, false, true); 202 return wmpi_->UpdatePlayState_ComputePlayState(false, false, false, true);
203 } 203 }
204 204
205 WebMediaPlayerImpl::PlayState ComputeIdlePlayState() { 205 WebMediaPlayerImpl::PlayState ComputeIdlePlayState() {
206 wmpi_->is_idle_ = true; 206 wmpi_->is_idle_ = true;
207 wmpi_->must_suspend_ = false; 207 wmpi_->must_suspend_ = false;
208 return wmpi_->UpdatePlayState_ComputePlayState(false, false, false); 208 return wmpi_->UpdatePlayState_ComputePlayState(false, false, false, false);
209 } 209 }
210 210
211 WebMediaPlayerImpl::PlayState ComputeIdleSuspendedPlayState() { 211 WebMediaPlayerImpl::PlayState ComputeIdleSuspendedPlayState() {
212 wmpi_->is_idle_ = true; 212 wmpi_->is_idle_ = true;
213 wmpi_->must_suspend_ = false; 213 wmpi_->must_suspend_ = false;
214 return wmpi_->UpdatePlayState_ComputePlayState(false, true, false); 214 return wmpi_->UpdatePlayState_ComputePlayState(false, false, true, false);
215 } 215 }
216 216
217 WebMediaPlayerImpl::PlayState ComputeMustSuspendPlayState() { 217 WebMediaPlayerImpl::PlayState ComputeMustSuspendPlayState() {
218 wmpi_->is_idle_ = false; 218 wmpi_->is_idle_ = false;
219 wmpi_->must_suspend_ = true; 219 wmpi_->must_suspend_ = true;
220 return wmpi_->UpdatePlayState_ComputePlayState(false, false, false); 220 return wmpi_->UpdatePlayState_ComputePlayState(false, false, false, false);
221 }
222
223 WebMediaPlayerImpl::PlayState ComputeStreamingPlayState(bool must_suspend) {
224 wmpi_->is_idle_ = true;
225 wmpi_->must_suspend_ = must_suspend;
226 return wmpi_->UpdatePlayState_ComputePlayState(false, true, false, true);
221 } 227 }
222 228
223 void SetDelegateState(WebMediaPlayerImpl::DelegateState state) { 229 void SetDelegateState(WebMediaPlayerImpl::DelegateState state) {
224 wmpi_->SetDelegateState(state); 230 wmpi_->SetDelegateState(state);
225 } 231 }
226 232
227 bool IsSuspended() { return wmpi_->pipeline_controller_.IsSuspended(); } 233 bool IsSuspended() { return wmpi_->pipeline_controller_.IsSuspended(); }
228 234
229 void AddBufferedRanges() { 235 void AddBufferedRanges() {
230 wmpi_->buffered_data_source_host_.AddBufferedByteRange(0, 1); 236 wmpi_->buffered_data_source_host_.AddBufferedByteRange(0, 1);
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 EXPECT_EQ(WebMediaPlayerImpl::DelegateState::ENDED, state.delegate_state); 567 EXPECT_EQ(WebMediaPlayerImpl::DelegateState::ENDED, state.delegate_state);
562 EXPECT_FALSE(state.is_memory_reporting_enabled); 568 EXPECT_FALSE(state.is_memory_reporting_enabled);
563 EXPECT_FALSE(state.is_suspended); 569 EXPECT_FALSE(state.is_suspended);
564 570
565 state = ComputeIdlePlayState(); 571 state = ComputeIdlePlayState();
566 EXPECT_EQ(WebMediaPlayerImpl::DelegateState::ENDED, state.delegate_state); 572 EXPECT_EQ(WebMediaPlayerImpl::DelegateState::ENDED, state.delegate_state);
567 EXPECT_FALSE(state.is_memory_reporting_enabled); 573 EXPECT_FALSE(state.is_memory_reporting_enabled);
568 EXPECT_TRUE(state.is_suspended); 574 EXPECT_TRUE(state.is_suspended);
569 } 575 }
570 576
577 TEST_F(WebMediaPlayerImplTest, ComputePlayState_Streaming) {
578 InitializeWebMediaPlayerImpl();
579 WebMediaPlayerImpl::PlayState state;
580 SetMetadata(true, true);
581
582 SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
583 SetPaused(true);
584
585 // Streaming media should not suspend, even if paused, idle, and backgrounded.
586 state = ComputeStreamingPlayState(false);
587 EXPECT_EQ(WebMediaPlayerImpl::DelegateState::PAUSED, state.delegate_state);
588 EXPECT_FALSE(state.is_memory_reporting_enabled);
589 EXPECT_FALSE(state.is_suspended);
590
591 // Streaming media should suspend when the tab is closed, regardless.
592 state = ComputeStreamingPlayState(true);
593 EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
594 EXPECT_FALSE(state.is_memory_reporting_enabled);
595 EXPECT_TRUE(state.is_suspended);
596 }
597
571 TEST_F(WebMediaPlayerImplTest, ComputePlayState_Suspended) { 598 TEST_F(WebMediaPlayerImplTest, ComputePlayState_Suspended) {
572 InitializeWebMediaPlayerImpl(); 599 InitializeWebMediaPlayerImpl();
573 WebMediaPlayerImpl::PlayState state; 600 WebMediaPlayerImpl::PlayState state;
574 SetMetadata(true, true); 601 SetMetadata(true, true);
575 602
576 // Suspended players should be resumed unless we have reached the appropriate 603 // Suspended players should be resumed unless we have reached the appropriate
577 // ready state and are not seeking. 604 // ready state and are not seeking.
578 SetPaused(true); 605 SetPaused(true);
579 state = ComputePlayStateSuspended(); 606 state = ComputePlayStateSuspended();
580 EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state); 607 EXPECT_EQ(WebMediaPlayerImpl::DelegateState::GONE, state.delegate_state);
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 EXPECT_CALL(delegate_, DidPlay(_, true, false, false, _)); 745 EXPECT_CALL(delegate_, DidPlay(_, true, false, false, _));
719 client_.set_is_autoplaying_muted(true); 746 client_.set_is_autoplaying_muted(true);
720 SetDelegateState(WebMediaPlayerImpl::DelegateState::PLAYING); 747 SetDelegateState(WebMediaPlayerImpl::DelegateState::PLAYING);
721 748
722 EXPECT_CALL(delegate_, DidPlay(_, true, true, false, _)); 749 EXPECT_CALL(delegate_, DidPlay(_, true, true, false, _));
723 client_.set_is_autoplaying_muted(false); 750 client_.set_is_autoplaying_muted(false);
724 wmpi_->setVolume(1.0); 751 wmpi_->setVolume(1.0);
725 } 752 }
726 753
727 } // namespace media 754 } // namespace media
OLDNEW
« no previous file with comments | « media/blink/webmediaplayer_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698