OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <limits> | 9 #include <limits> |
10 #include <string> | 10 #include <string> |
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
526 } | 526 } |
527 } | 527 } |
528 | 528 |
529 void WebMediaPlayerImpl::setVolume(double volume) { | 529 void WebMediaPlayerImpl::setVolume(double volume) { |
530 DVLOG(1) << __func__ << "(" << volume << ")"; | 530 DVLOG(1) << __func__ << "(" << volume << ")"; |
531 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 531 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
532 volume_ = volume; | 532 volume_ = volume; |
533 pipeline_.SetVolume(volume_ * volume_multiplier_); | 533 pipeline_.SetVolume(volume_ * volume_multiplier_); |
534 if (watch_time_reporter_) | 534 if (watch_time_reporter_) |
535 watch_time_reporter_->OnVolumeChange(volume); | 535 watch_time_reporter_->OnVolumeChange(volume); |
| 536 |
| 537 // The play state is updated because the player might have left the autoplay |
| 538 // muted state. |
| 539 UpdatePlayState(); |
536 } | 540 } |
537 | 541 |
538 void WebMediaPlayerImpl::setSinkId( | 542 void WebMediaPlayerImpl::setSinkId( |
539 const blink::WebString& sink_id, | 543 const blink::WebString& sink_id, |
540 const blink::WebSecurityOrigin& security_origin, | 544 const blink::WebSecurityOrigin& security_origin, |
541 blink::WebSetSinkIdCallbacks* web_callback) { | 545 blink::WebSetSinkIdCallbacks* web_callback) { |
542 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 546 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
543 DVLOG(1) << __func__; | 547 DVLOG(1) << __func__; |
544 | 548 |
545 media::OutputDeviceStatusCB callback = | 549 media::OutputDeviceStatusCB callback = |
(...skipping 1068 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1614 bool is_backgrounded = | 1618 bool is_backgrounded = |
1615 IsBackgroundedSuspendEnabled() && delegate_ && delegate_->IsHidden(); | 1619 IsBackgroundedSuspendEnabled() && delegate_ && delegate_->IsHidden(); |
1616 PlayState state = UpdatePlayState_ComputePlayState(is_remote, is_suspended, | 1620 PlayState state = UpdatePlayState_ComputePlayState(is_remote, is_suspended, |
1617 is_backgrounded); | 1621 is_backgrounded); |
1618 SetDelegateState(state.delegate_state); | 1622 SetDelegateState(state.delegate_state); |
1619 SetMemoryReportingState(state.is_memory_reporting_enabled); | 1623 SetMemoryReportingState(state.is_memory_reporting_enabled); |
1620 SetSuspendState(state.is_suspended || pending_suspend_resume_cycle_); | 1624 SetSuspendState(state.is_suspended || pending_suspend_resume_cycle_); |
1621 } | 1625 } |
1622 | 1626 |
1623 void WebMediaPlayerImpl::SetDelegateState(DelegateState new_state) { | 1627 void WebMediaPlayerImpl::SetDelegateState(DelegateState new_state) { |
1624 if (!delegate_ || delegate_state_ == new_state) | 1628 if (!delegate_) |
1625 return; | 1629 return; |
1626 | 1630 |
| 1631 if (delegate_state_ == new_state) { |
| 1632 if (delegate_state_ != DelegateState::PLAYING || |
| 1633 autoplay_muted_ == client_->isAutoplayingMuted()) { |
| 1634 return; |
| 1635 } |
| 1636 } |
| 1637 |
1627 delegate_state_ = new_state; | 1638 delegate_state_ = new_state; |
1628 | 1639 |
1629 switch (delegate_state_) { | 1640 switch (delegate_state_) { |
1630 case DelegateState::GONE: | 1641 case DelegateState::GONE: |
1631 delegate_->PlayerGone(delegate_id_); | 1642 delegate_->PlayerGone(delegate_id_); |
1632 break; | 1643 break; |
1633 case DelegateState::PLAYING: | 1644 case DelegateState::PLAYING: { |
| 1645 autoplay_muted_ = client_->isAutoplayingMuted(); |
| 1646 bool has_audio = autoplay_muted_ ? false : hasAudio(); |
1634 delegate_->DidPlay( | 1647 delegate_->DidPlay( |
1635 delegate_id_, hasVideo(), hasAudio(), false, | 1648 delegate_id_, hasVideo(), has_audio, false, |
1636 media::DurationToMediaContentType(pipeline_.GetMediaDuration())); | 1649 media::DurationToMediaContentType(pipeline_.GetMediaDuration())); |
1637 break; | 1650 break; |
| 1651 } |
1638 case DelegateState::PAUSED: | 1652 case DelegateState::PAUSED: |
1639 delegate_->DidPause(delegate_id_, false); | 1653 delegate_->DidPause(delegate_id_, false); |
1640 break; | 1654 break; |
1641 case DelegateState::ENDED: | 1655 case DelegateState::ENDED: |
1642 delegate_->DidPause(delegate_id_, true); | 1656 delegate_->DidPause(delegate_id_, true); |
1643 break; | 1657 break; |
1644 } | 1658 } |
1645 } | 1659 } |
1646 | 1660 |
1647 void WebMediaPlayerImpl::SetMemoryReportingState( | 1661 void WebMediaPlayerImpl::SetMemoryReportingState( |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1860 pipeline_metadata_.natural_size, | 1874 pipeline_metadata_.natural_size, |
1861 base::Bind(&GetCurrentTimeInternal, this))); | 1875 base::Bind(&GetCurrentTimeInternal, this))); |
1862 watch_time_reporter_->OnVolumeChange(volume_); | 1876 watch_time_reporter_->OnVolumeChange(volume_); |
1863 if (delegate_ && delegate_->IsHidden()) | 1877 if (delegate_ && delegate_->IsHidden()) |
1864 watch_time_reporter_->OnHidden(); | 1878 watch_time_reporter_->OnHidden(); |
1865 else | 1879 else |
1866 watch_time_reporter_->OnShown(); | 1880 watch_time_reporter_->OnShown(); |
1867 } | 1881 } |
1868 | 1882 |
1869 } // namespace media | 1883 } // namespace media |
OLD | NEW |