Bug 1240423 - part3 : add reason when media element notify audible changing. r=baku
MozReview-Commit-ID: C3DAZHhZOqH
This commit is contained in:
@@ -1876,7 +1876,8 @@ void HTMLMediaElement::SetVolumeInternal()
|
||||
}
|
||||
}
|
||||
|
||||
UpdateAudioChannelPlayingState();
|
||||
NotifyAudioPlaybackChanged(
|
||||
AudioChannelService::AudibleChangedReasons::eVolumeChanged);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP HTMLMediaElement::SetMuted(bool aMuted)
|
||||
@@ -2281,7 +2282,8 @@ HTMLMediaElement::HTMLMediaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNo
|
||||
mHasUserInteraction(false),
|
||||
mFirstFrameLoaded(false),
|
||||
mDefaultPlaybackStartPosition(0.0),
|
||||
mIsAudioTrackAudible(false)
|
||||
mIsAudioTrackAudible(false),
|
||||
mAudible(IsAudible())
|
||||
{
|
||||
mAudioChannel = AudioChannelService::GetDefaultAudioChannel();
|
||||
|
||||
@@ -4969,8 +4971,8 @@ HTMLMediaElement::IsPlayingThroughTheAudioChannel() const
|
||||
return true;
|
||||
}
|
||||
|
||||
// Are we paused or muted
|
||||
if (mPaused || Muted()) {
|
||||
// Are we paused
|
||||
if (mPaused) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -4984,11 +4986,6 @@ HTMLMediaElement::IsPlayingThroughTheAudioChannel() const
|
||||
return false;
|
||||
}
|
||||
|
||||
// The volume should not be ~0
|
||||
if (std::fabs(Volume()) <= 1e-7) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// We should consider any bfcached page or inactive document as non-playing.
|
||||
if (!IsActive()) {
|
||||
return false;
|
||||
@@ -5053,7 +5050,7 @@ HTMLMediaElement::NotifyAudioChannelAgent(bool aPlaying)
|
||||
// any sound.
|
||||
AudioPlaybackConfig config;
|
||||
nsresult rv = mAudioChannelAgent->NotifyStartedPlaying(&config,
|
||||
mIsAudioTrackAudible);
|
||||
IsAudible());
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return;
|
||||
}
|
||||
@@ -5114,6 +5111,9 @@ HTMLMediaElement::WindowSuspendChanged(SuspendTypes aSuspend)
|
||||
"Error : unknown suspended type!\n", this));
|
||||
}
|
||||
|
||||
NotifyAudioPlaybackChanged(
|
||||
AudioChannelService::AudibleChangedReasons::ePauseStateChanged);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -5609,16 +5609,45 @@ HTMLMediaElement::SetAudibleState(bool aAudible)
|
||||
{
|
||||
if (mIsAudioTrackAudible != aAudible) {
|
||||
mIsAudioTrackAudible = aAudible;
|
||||
NotifyAudioPlaybackChanged();
|
||||
NotifyAudioPlaybackChanged(
|
||||
AudioChannelService::AudibleChangedReasons::eDataAudibleChanged);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
HTMLMediaElement::NotifyAudioPlaybackChanged()
|
||||
HTMLMediaElement::NotifyAudioPlaybackChanged(AudibleChangedReasons aReason)
|
||||
{
|
||||
if (mAudioChannelAgent) {
|
||||
mAudioChannelAgent->NotifyStartedAudible(mIsAudioTrackAudible);
|
||||
if (!mAudioChannelAgent) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mAudible == IsAudible()) {
|
||||
return;
|
||||
}
|
||||
|
||||
mAudible = IsAudible();
|
||||
mAudioChannelAgent->NotifyStartedAudible(mAudible, aReason);
|
||||
}
|
||||
|
||||
bool
|
||||
HTMLMediaElement::IsAudible() const
|
||||
{
|
||||
// Muted or the volume should not be ~0
|
||||
if (Muted() || (std::fabs(Volume()) <= 1e-7)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// No sound can be heard during suspending.
|
||||
if (IsSuspendedByAudioChannel()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Silent audio track.
|
||||
if (!mIsAudioTrackAudible) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
|
||||
Reference in New Issue
Block a user