Changeset 200273 in webkit


Ignore:
Timestamp:
Apr 29, 2016, 5:52:55 PM (10 years ago)
Author:
eric.carlson@apple.com
Message:

[iOS] do not exit AirPlay when the screen locks
https://bugs.webkit.org/show_bug.cgi?id=156502
<rdar://problem/24616592>

Reviewed by Dean Jackson

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::pendingActionTimerFired): Use m_isPlayingToWirelessTarget.
(WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless): Ditto.
(WebCore::HTMLMediaElement::wirelessRoutesAvailableDidChange): Set m_isPlayingToWirelessTarget.
(WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged): Use

m_isPlayingToWirelessTarget.

(WebCore::HTMLMediaElement::isPlayingToWirelessPlaybackTarget): Ditto.
(WebCore::HTMLMediaElement::configureMediaControls): Ditto.
(WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction): Add logging.
(WebCore::HTMLMediaElement::purgeBufferedDataIfPossible): Don't tell the media engine to purge

data if it is playing to a wireless target because that will drop the connection.

  • html/HTMLMediaElement.h:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::playbackPermitted): Add logging.
(WebCore::MediaElementSession::canPlayToWirelessPlaybackTarget): Drive by fix: iOS doesn't

have an explicit playbackTarget, don't test for it.

(WebCore::MediaElementSession::isPlayingToWirelessPlaybackTarget): Ditto.

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r200271 r200273  
     12016-04-29  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [iOS] do not exit AirPlay when the screen locks
     4        https://bugs.webkit.org/show_bug.cgi?id=156502
     5        <rdar://problem/24616592>
     6
     7        Reviewed by Dean Jackson
     8
     9        * html/HTMLMediaElement.cpp:
     10        (WebCore::HTMLMediaElement::pendingActionTimerFired): Use m_isPlayingToWirelessTarget.
     11        (WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless): Ditto.
     12        (WebCore::HTMLMediaElement::wirelessRoutesAvailableDidChange): Set m_isPlayingToWirelessTarget.
     13        (WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged): Use
     14          m_isPlayingToWirelessTarget.
     15        (WebCore::HTMLMediaElement::isPlayingToWirelessPlaybackTarget): Ditto.
     16        (WebCore::HTMLMediaElement::configureMediaControls): Ditto.
     17        (WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction): Add logging.
     18        (WebCore::HTMLMediaElement::purgeBufferedDataIfPossible): Don't tell the media engine to purge
     19          data if it is playing to a wireless target because that will drop the connection.
     20        * html/HTMLMediaElement.h:
     21
     22        * html/MediaElementSession.cpp:
     23        (WebCore::MediaElementSession::playbackPermitted): Add logging.
     24        (WebCore::MediaElementSession::canPlayToWirelessPlaybackTarget): Drive by fix: iOS doesn't
     25          have an explicit playbackTarget, don't test for it.
     26        (WebCore::MediaElementSession::isPlayingToWirelessPlaybackTarget): Ditto.
     27
    1282016-04-29  Chris Dumez  <cdumez@apple.com>
    229
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r200192 r200273  
    916916
    917917#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    918     if (pendingActions & CheckPlaybackTargetCompatablity && m_player && m_player->isCurrentPlaybackTargetWireless() && !m_player->canPlayToWirelessPlaybackTarget()) {
     918    if (pendingActions & CheckPlaybackTargetCompatablity && m_isPlayingToWirelessTarget && !m_player->canPlayToWirelessPlaybackTarget()) {
    919919        LOG(Media, "HTMLMediaElement::pendingActionTimerFired(%p) - calling setShouldPlayToPlaybackTarget(false)", this);
    920920        m_failedToPlayToWirelessTarget = true;
     
    51765176bool HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless() const
    51775177{
    5178     return m_player && m_player->isCurrentPlaybackTargetWireless();
     5178    return m_isPlayingToWirelessTarget;
    51795179}
    51805180
     
    51865186void HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged(MediaPlayer*)
    51875187{
    5188     LOG(Media, "HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged(%p) - webkitCurrentPlaybackTargetIsWireless = %s", this, boolString(webkitCurrentPlaybackTargetIsWireless()));
     5188    m_isPlayingToWirelessTarget = m_player && m_player->isCurrentPlaybackTargetWireless();
     5189
     5190    LOG(Media, "HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged(%p) - webkitCurrentPlaybackTargetIsWireless = %s", this, boolString(m_isPlayingToWirelessTarget));
    51895191    ASSERT(m_player);
    51905192    configureMediaControls();
    51915193    scheduleEvent(eventNames().webkitcurrentplaybacktargetiswirelesschangedEvent);
    5192     m_mediaSession->isPlayingToWirelessPlaybackTargetChanged(m_player->isCurrentPlaybackTargetWireless());
     5194    m_mediaSession->isPlayingToWirelessPlaybackTargetChanged(m_isPlayingToWirelessTarget);
    51935195    updateMediaState(UpdateMediaState::Asynchronously);
    51945196}
     
    52685270bool HTMLMediaElement::isPlayingToWirelessPlaybackTarget() const
    52695271{
    5270     bool isPlaying = m_player && m_player->isCurrentPlaybackTargetWireless();
    5271 
    5272     LOG(Media, "HTMLMediaElement::isPlayingToWirelessPlaybackTarget(%p) - returning %s", this, boolString(isPlaying));
    5273    
    5274     return isPlaying;
     5272    return m_isPlayingToWirelessTarget;
    52755273}
    52765274
     
    57295727
    57305728#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    5731     if (m_player && m_player->isCurrentPlaybackTargetWireless())
     5729    if (m_isPlayingToWirelessTarget)
    57325730        requireControls = true;
    57335731#endif
     
    66856683bool HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction(PlatformMediaSession::InterruptionType type) const
    66866684{
    6687     if (type != PlatformMediaSession::EnteringBackground)
     6685    if (type != PlatformMediaSession::EnteringBackground) {
     6686        LOG(Media, "HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction(%p) - returning false because type != PlatformMediaSession::EnteringBackground", this);
    66886687        return false;
     6688    }
    66896689
    66906690#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    6691     if (m_player && m_player->isCurrentPlaybackTargetWireless())
     6691    if (m_isPlayingToWirelessTarget) {
     6692        LOG(Media, "HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction(%p) - returning true because m_isPlayingToWirelessTarget is true", this);
    66926693        return true;
     6694    }
    66936695#endif
    66946696    if (m_videoFullscreenMode & VideoFullscreenModePictureInPicture)
     
    67256727    bool hasAudio = this->hasAudio();
    67266728#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    6727     if (m_player && m_player->isCurrentPlaybackTargetWireless())
     6729    if (m_isPlayingToWirelessTarget)
    67286730        state |= IsPlayingToExternalDevice;
    67296731
     
    67976799    if (!MemoryPressureHandler::singleton().isUnderMemoryPressure() && PlatformMediaSessionManager::sharedManager().sessionCanLoadMedia(*m_mediaSession))
    67986800        return;
     6801
     6802    if (m_isPlayingToWirelessTarget) {
     6803        LOG(Media, "HTMLMediaElement::purgeBufferedDataIfPossible(%p) - early return because m_isPlayingToWirelessTarget is true", this);
     6804        return;
     6805    }
    67996806
    68006807    // This is called to relieve memory pressure. Turning off buffering causes the media playback
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r200192 r200273  
    974974    bool m_hasPlaybackTargetAvailabilityListeners { false };
    975975    bool m_failedToPlayToWirelessTarget { false };
     976    bool m_isPlayingToWirelessTarget { false };
    976977#endif
    977978};
  • trunk/Source/WebCore/html/MediaElementSession.cpp

    r200141 r200273  
    359359bool MediaElementSession::canPlayToWirelessPlaybackTarget() const
    360360{
     361#if !PLATFORM(IOS)
    361362    if (!m_playbackTarget || !m_playbackTarget->hasActiveRoute())
    362363        return false;
     364#endif
    363365
    364366    return client().canPlayToWirelessPlaybackTarget();
     
    367369bool MediaElementSession::isPlayingToWirelessPlaybackTarget() const
    368370{
     371#if !PLATFORM(IOS)
    369372    if (!m_playbackTarget || !m_playbackTarget->hasActiveRoute())
    370373        return false;
     374#endif
    371375
    372376    return client().isPlayingToWirelessPlaybackTarget();
Note: See TracChangeset for help on using the changeset viewer.