| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |