Title: [188077] branches/safari-601.1-branch/Source/WebCore

Diff

Modified: branches/safari-601.1-branch/Source/WebCore/ChangeLog (188076 => 188077)


--- branches/safari-601.1-branch/Source/WebCore/ChangeLog	2015-08-06 23:09:38 UTC (rev 188076)
+++ branches/safari-601.1-branch/Source/WebCore/ChangeLog	2015-08-06 23:09:42 UTC (rev 188077)
@@ -1,5 +1,28 @@
 2015-08-06  Dana Burkart  <dburk...@apple.com>
 
+        Merge r187892. rdar://problem/21932187
+
+    2015-08-04  Eric Carlson  <eric.carl...@apple.com>
+
+            [Mac] Do not require a video track for AirPlay
+            https://bugs.webkit.org/show_bug.cgi?id=147647
+
+            Reviewed by Jer Noble.
+
+            * Modules/mediacontrols/mediaControlsApple.js:
+            (Controller.prototype.handleReadyStateChange): Call updateWirelessTargetAvailable().
+            (Controller.prototype.updateHasVideo): Don't call updateWirelessTargetAvailable().
+            (Controller.prototype.updateWirelessTargetAvailable): Don't require video.
+
+            * html/HTMLMediaElement.cpp:
+            (WebCore::HTMLMediaElement::setReadyState): Call updateMediaState when we reach HAVE_METADATA.
+            (WebCore::HTMLMediaElement::mediaState): Don't require video, only that the file can play.
+
+            * html/MediaElementSession.cpp:
+            (WebCore::MediaElementSession::showPlaybackTargetPicker): Check readyState instead of hasVideo.
+
+2015-08-06  Dana Burkart  <dburk...@apple.com>
+
         Merge r187886. rdar://problem/15779101
 
     2015-08-04  Alexey Proskuryakov  <a...@apple.com>

Modified: branches/safari-601.1-branch/Source/WebCore/Modules/mediacontrols/mediaControlsApple.js (188076 => 188077)


--- branches/safari-601.1-branch/Source/WebCore/Modules/mediacontrols/mediaControlsApple.js	2015-08-06 23:09:38 UTC (rev 188076)
+++ branches/safari-601.1-branch/Source/WebCore/Modules/mediacontrols/mediaControlsApple.js	2015-08-06 23:09:42 UTC (rev 188077)
@@ -688,6 +688,7 @@
         this.updateCaptionButton();
         this.updateCaptionContainer();
         this.updateFullscreenButtons();
+        this.updateWirelessTargetAvailable();
         this.updateWirelessTargetPickerButton();
         this.updateProgress();
         this.updateControls();
@@ -1866,9 +1867,6 @@
             this.controls.panel.classList.remove(this.ClassNames.noVideo);
         else
             this.controls.panel.classList.add(this.ClassNames.noVideo);
-
-        // The wireless target picker is only visible for files with video, force an update.
-        this.updateWirelessTargetAvailable();
     },
 
     updateVolume: function()
@@ -1982,7 +1980,7 @@
         if (this.wirelessPlaybackDisabled)
             wirelessPlaybackTargetsAvailable = false;
 
-        if (wirelessPlaybackTargetsAvailable && this.isPlayable() && this.hasVideo())
+        if (wirelessPlaybackTargetsAvailable && this.isPlayable())
             this.controls.wirelessTargetPicker.classList.remove(this.ClassNames.hidden);
         else
             this.controls.wirelessTargetPicker.classList.add(this.ClassNames.hidden);

Modified: branches/safari-601.1-branch/Source/WebCore/html/HTMLMediaElement.cpp (188076 => 188077)


--- branches/safari-601.1-branch/Source/WebCore/html/HTMLMediaElement.cpp	2015-08-06 23:09:38 UTC (rev 188076)
+++ branches/safari-601.1-branch/Source/WebCore/html/HTMLMediaElement.cpp	2015-08-06 23:09:42 UTC (rev 188077)
@@ -2119,6 +2119,10 @@
             downcast<MediaDocument>(document()).mediaElementNaturalSizeChanged(expandedIntSize(m_player->naturalSize()));
 
         logMediaLoadRequest(document().page(), m_player->engineDescription(), String(), true);
+
+#if ENABLE(WIRELESS_PLAYBACK_TARGET)
+        updateMediaState(UpdateMediaState::Asynchronously);
+#endif
     }
 
     bool shouldUpdateDisplayState = false;
@@ -6422,7 +6426,7 @@
         state |= RequiresPlaybackTargetMonitoring;
 
     bool requireUserGesture = m_mediaSession->hasBehaviorRestriction(MediaElementSession::RequireUserGestureToAutoplayToExternalDevice);
-    if (hasActiveVideo && !requireUserGesture && !m_failedToPlayToWirelessTarget)
+    if (m_readyState >= HAVE_METADATA && !requireUserGesture && !m_failedToPlayToWirelessTarget)
         state |= ExternalDeviceAutoPlayCandidate;
 
     if (hasActiveVideo && endedPlayback())

Modified: branches/safari-601.1-branch/Source/WebCore/html/MediaElementSession.cpp (188076 => 188077)


--- branches/safari-601.1-branch/Source/WebCore/html/MediaElementSession.cpp	2015-08-06 23:09:38 UTC (rev 188076)
+++ branches/safari-601.1-branch/Source/WebCore/html/MediaElementSession.cpp	2015-08-06 23:09:42 UTC (rev 188077)
@@ -200,8 +200,8 @@
     }
 
 #if !PLATFORM(IOS)
-    if (!element.hasVideo()) {
-        LOG(Media, "MediaElementSession::showPlaybackTargetPicker - returning early because element has no video");
+    if (element.readyState() < HTMLMediaElementEnums::HAVE_METADATA) {
+        LOG(Media, "MediaElementSession::showPlaybackTargetPicker - returning early because element is not playable");
         return;
     }
 #endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to