Bug 1351087 - part1 : don't register agent for audio without audio track. draft
authorAlastor Wu <alwu@mozilla.com>
Tue, 09 May 2017 14:10:43 +0800
changeset 574635 8e5fc0388a9aeab7611eaa55fa6b1ad1bc42bd77
parent 574634 a80eb252eb5c7a214e6c337231983cef27f5ce29
child 574636 8607799ab46c5d1d9a3a89f22f1b817ebc5529db
push id57778
push useralwu@mozilla.com
push dateTue, 09 May 2017 06:18:55 +0000
bugs1351087
milestone55.0a1
Bug 1351087 - part1 : don't register agent for audio without audio track. Since we don't want to show media control for media without audio track (eg. GIFV), it's no need to register audio agent for them. MozReview-Commit-ID: 22YrMkpNrcP
dom/html/HTMLMediaElement.cpp
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -1047,16 +1047,21 @@ private:
       return true;
     }
 
     // Are we paused
     if (mOwner->mPaused) {
       return false;
     }
 
+    // No audio track
+    if (!mOwner->HasAudio()) {
+      return false;
+    }
+
     // A loop always is playing
     if (mOwner->HasAttr(kNameSpaceID_None, nsGkAtoms::loop)) {
       return true;
     }
 
     // If we are actually playing...
     if (mOwner->IsCurrentlyPlaying()) {
       return true;
@@ -7054,16 +7059,17 @@ HTMLMediaElement::ShouldElementBePaused(
 }
 
 void
 HTMLMediaElement::SetMediaInfo(const MediaInfo& aInfo)
 {
   const bool oldHasAudio = mMediaInfo.HasAudio();
   mMediaInfo = aInfo;
   if (aInfo.HasAudio() != oldHasAudio) {
+    UpdateAudioChannelPlayingState();
     NotifyAudioPlaybackChanged(
       AudioChannelService::AudibleChangedReasons::eDataAudibleChanged);
   }
   if (mAudioChannelWrapper) {
     mAudioChannelWrapper->AudioCaptureStreamChangeIfNeeded();
   }
 }