Bug 1347648 - part4 : notify audible change after finishing set suspend and pause state.
Since the audible state would depend on pause and suspend state, we should do
the check after finishing play() or pause().
MozReview-Commit-ID: 1yhxuQDw067
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -880,19 +880,16 @@ private:
return;
}
MaybeNotifyMediaResumed(aSuspend);
mSuspended = aSuspend;
MOZ_LOG(AudioChannelService::GetAudioChannelLog(), LogLevel::Debug,
("HTMLMediaElement::AudioChannelAgentCallback, SetAudioChannelSuspended, "
"this = %p, aSuspend = %s\n", this, SuspendTypeToStr(aSuspend)));
-
- NotifyAudioPlaybackChanged(
- AudioChannelService::AudibleChangedReasons::ePauseStateChanged);
}
void
Resume()
{
if (!IsSuspended()) {
MOZ_LOG(AudioChannelService::GetAudioChannelLog(), LogLevel::Debug,
("HTMLMediaElement::AudioChannelAgentCallback, ResumeFromAudioChannel, "
@@ -903,16 +900,19 @@ private:
SetSuspended(nsISuspendedTypes::NONE_SUSPENDED);
IgnoredErrorResult rv;
RefPtr<Promise> toBeIgnored = mOwner->Play(rv);
MOZ_ASSERT_IF(toBeIgnored && toBeIgnored->State() == Promise::PromiseState::Rejected,
rv.Failed());
if (rv.Failed()) {
NS_WARNING("Not able to resume from AudioChannel.");
}
+
+ NotifyAudioPlaybackChanged(
+ AudioChannelService::AudibleChangedReasons::ePauseStateChanged);
}
void
Suspend(SuspendTypes aSuspend)
{
if (IsSuspended()) {
return;
}
@@ -920,16 +920,18 @@ private:
SetSuspended(aSuspend);
if (aSuspend == nsISuspendedTypes::SUSPENDED_PAUSE ||
aSuspend == nsISuspendedTypes::SUSPENDED_PAUSE_DISPOSABLE) {
nsresult rv = mOwner->Pause();
if (NS_WARN_IF(NS_FAILED(rv))) {
return;
}
}
+ NotifyAudioPlaybackChanged(
+ AudioChannelService::AudibleChangedReasons::ePauseStateChanged);
}
void
Stop()
{
SetSuspended(nsISuspendedTypes::NONE_SUSPENDED);
mOwner->Pause();
}