Bug 1347648 - part4 : notify audible change after finishing set suspend and pause state. draft
authorAlastor Wu <alwu@mozilla.com>
Mon, 27 Mar 2017 10:59:44 +0800
changeset 551572 6e921a8dc1f78d18f00342efd1321947d4e3f479
parent 551571 c857af062969040b9bc604ff13b3b798859c5fc3
child 621575 79fab101ab4e4dbf9f0303075c594322e752bb1d
push id51086
push useralwu@mozilla.com
push dateMon, 27 Mar 2017 02:59:50 +0000
bugs1347648
milestone55.0a1
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
dom/html/HTMLMediaElement.cpp
--- 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();
   }