| Index: media/blink/webmediaplayer_impl.cc
|
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
|
| index 887c99eba4c968c1746105295a0f9c856fd38265..c0fad2da254ec7e0044b6d8570aba6fad1b40705 100644
|
| --- a/media/blink/webmediaplayer_impl.cc
|
| +++ b/media/blink/webmediaplayer_impl.cc
|
| @@ -533,6 +533,10 @@ void WebMediaPlayerImpl::setVolume(double volume) {
|
| pipeline_.SetVolume(volume_ * volume_multiplier_);
|
| if (watch_time_reporter_)
|
| watch_time_reporter_->OnVolumeChange(volume);
|
| +
|
| + // The play state is updated because the player might have left the autoplay
|
| + // muted state.
|
| + UpdatePlayState();
|
| }
|
|
|
| void WebMediaPlayerImpl::setSinkId(
|
| @@ -1621,20 +1625,30 @@ void WebMediaPlayerImpl::UpdatePlayState() {
|
| }
|
|
|
| void WebMediaPlayerImpl::SetDelegateState(DelegateState new_state) {
|
| - if (!delegate_ || delegate_state_ == new_state)
|
| + if (!delegate_)
|
| return;
|
|
|
| + if (delegate_state_ == new_state) {
|
| + if (delegate_state_ != DelegateState::PLAYING ||
|
| + autoplay_muted_ == client_->isAutoplayingMuted()) {
|
| + return;
|
| + }
|
| + }
|
| +
|
| delegate_state_ = new_state;
|
|
|
| switch (delegate_state_) {
|
| case DelegateState::GONE:
|
| delegate_->PlayerGone(delegate_id_);
|
| break;
|
| - case DelegateState::PLAYING:
|
| + case DelegateState::PLAYING: {
|
| + autoplay_muted_ = client_->isAutoplayingMuted();
|
| + bool has_audio = autoplay_muted_ ? false : hasAudio();
|
| delegate_->DidPlay(
|
| - delegate_id_, hasVideo(), hasAudio(), false,
|
| + delegate_id_, hasVideo(), has_audio, false,
|
| media::DurationToMediaContentType(pipeline_.GetMediaDuration()));
|
| break;
|
| + }
|
| case DelegateState::PAUSED:
|
| delegate_->DidPause(delegate_id_, false);
|
| break;
|
|
|