Changeset 186032 in webkit


Ignore:
Timestamp:
Jun 27, 2015, 2:11:18 PM (10 years ago)
Author:
eric.carlson@apple.com
Message:

[Mac] Only flag a video element as eligible for auto-play to AppleTV one time
https://bugs.webkit.org/show_bug.cgi?id=146386

Reviewed by Brent Fulgham.

  • Modules/mediasession/WebMediaSessionManager.cpp:

(WebCore::WebMediaSessionManager::removeAllPlaybackTargetPickerClients): Drive-by fix - early

return when there are no clients.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::pendingActionTimerFired): Set m_failedToPlayToWirelessTarget if the

media engine is still unable to play to the wireless target.

(WebCore::HTMLMediaElement::prepareForLoad): Clear m_failedToPlayToWirelessTarget.
(WebCore::HTMLMediaElement::mediaState): Don't set the ExternalDeviceAutoPlayCandidate flag

if m_failedToPlayToWirelessTarget is true.

  • html/HTMLMediaElement.h:
Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r186024 r186032  
     12015-06-27  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] Only flag a video element as eligible for auto-play to AppleTV one time
     4        https://bugs.webkit.org/show_bug.cgi?id=146386
     5
     6        Reviewed by Brent Fulgham.
     7
     8        * Modules/mediasession/WebMediaSessionManager.cpp:
     9        (WebCore::WebMediaSessionManager::removeAllPlaybackTargetPickerClients): Drive-by fix - early
     10          return when there are no clients.
     11
     12        * html/HTMLMediaElement.cpp:
     13        (WebCore::HTMLMediaElement::pendingActionTimerFired): Set m_failedToPlayToWirelessTarget if the
     14          media engine is still unable to play to the wireless target.
     15        (WebCore::HTMLMediaElement::prepareForLoad): Clear m_failedToPlayToWirelessTarget.
     16        (WebCore::HTMLMediaElement::mediaState): Don't set the ExternalDeviceAutoPlayCandidate flag
     17          if m_failedToPlayToWirelessTarget is true.
     18        * html/HTMLMediaElement.h:
     19
    1202015-06-27  Xabier Rodriguez Calvar  <calvaris@igalia.com> and Youenn Fablet  <youenn.fablet@crf.canon.fr>
    221
  • trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp

    r185519 r186032  
    127127void WebMediaSessionManager::removeAllPlaybackTargetPickerClients(WebMediaSessionManagerClient& client)
    128128{
     129    if (m_clientState.isEmpty())
     130        return;
     131
    129132    LOG(Media, "WebMediaSessionManager::removeAllPlaybackTargetPickerClients(%p)", &client);
    130133
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r186020 r186032  
    810810    if (m_pendingActionFlags & CheckPlaybackTargetCompatablity && m_player && m_player->isCurrentPlaybackTargetWireless() && !m_player->canPlayToWirelessPlaybackTarget()) {
    811811        LOG(Media, "HTMLMediaElement::pendingActionTimerFired(%p) - calling setShouldPlayToPlaybackTarget(false)", this);
     812        m_failedToPlayToWirelessTarget = true;
    812813        m_player->setShouldPlayToPlaybackTarget(false);
    813814    }
     
    920921    m_displayMode = Unknown;
    921922    m_currentSrc = URL();
     923
     924#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     925    m_failedToPlayToWirelessTarget = false;
     926#endif
    922927
    923928    // 1 - Abort any already-running instance of the resource selection algorithm for this element.
     
    63406345
    63416346    bool requireUserGesture = m_mediaSession->hasBehaviorRestriction(MediaElementSession::RequireUserGestureToAutoplayToExternalDevice);
    6342     if (hasActiveVideo && (!requireUserGesture || (hasAudio && !m_initiallyMuted && !loop())))
     6347    if (hasActiveVideo && (!requireUserGesture || (hasAudio && !m_initiallyMuted && !loop())) && !m_failedToPlayToWirelessTarget)
    63436348        state |= ExternalDeviceAutoPlayCandidate;
    63446349#endif
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r186020 r186032  
    934934    MediaProducer::MediaStateFlags m_mediaState { MediaProducer::IsNotPlaying };
    935935    bool m_hasPlaybackTargetAvailabilityListeners { false };
     936    bool m_failedToPlayToWirelessTarget { false };
    936937#endif
    937938};
Note: See TracChangeset for help on using the changeset viewer.