Changeset 183826 in webkit


Ignore:
Timestamp:
May 5, 2015, 1:50:02 PM (10 years ago)
Author:
eric.carlson@apple.com
Message:

Only autoplay videos should not automatically play to playback target
https://bugs.webkit.org/show_bug.cgi?id=144633

Reviewed by Jer Noble.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement): Set RequireUserGestureToAutoplayToExternalDevice.
(WebCore::HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture): Remove
RequireUserGestureToAutoplayToExternalDevice.
(WebCore::HTMLMediaElement::mediaState): Set ExternalDeviceAutoPlayCandidate if playback
was started from a user gesture, even if the video loops and/or doesn't have audio.

  • html/HTMLMediaSession.h: Define RequireUserGestureToAutoplayToExternalDevice.

(WebCore::HTMLMediaSession::hasBehaviorRestriction): New.

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r183824 r183826  
     12015-05-05  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Only autoplay videos should not automatically play to playback target
     4        https://bugs.webkit.org/show_bug.cgi?id=144633
     5
     6        Reviewed by Jer Noble.
     7
     8        * html/HTMLMediaElement.cpp:
     9        (WebCore::HTMLMediaElement::HTMLMediaElement): Set RequireUserGestureToAutoplayToExternalDevice.
     10        (WebCore::HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture): Remove
     11        RequireUserGestureToAutoplayToExternalDevice.
     12        (WebCore::HTMLMediaElement::mediaState): Set ExternalDeviceAutoPlayCandidate if playback
     13        was started from a user gesture, even if the video loops and/or doesn't have audio.
     14
     15        * html/HTMLMediaSession.h: Define RequireUserGestureToAutoplayToExternalDevice.
     16        (WebCore::HTMLMediaSession::hasBehaviorRestriction): New.
     17
    1182015-05-05  Brent Fulgham  <bfulgham@apple.com>
    219
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r183751 r183826  
    342342    m_mediaSession->addBehaviorRestriction(HTMLMediaSession::RequireUserGestureForFullscreen);
    343343    m_mediaSession->addBehaviorRestriction(HTMLMediaSession::RequirePageConsentToLoadMedia);
     344#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     345    m_mediaSession->addBehaviorRestriction(HTMLMediaSession::RequireUserGestureToAutoplayToExternalDevice);
     346#endif
    344347
    345348    // FIXME: We should clean up and look to better merge the iOS and non-iOS code below.
     
    58935896#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    58945897        | HTMLMediaSession::RequireUserGestureToShowPlaybackTargetPicker
     5898        | HTMLMediaSession::RequireUserGestureToAutoplayToExternalDevice
    58955899#endif
    58965900        | HTMLMediaSession::RequireUserGestureForLoad
     
    62116215    }
    62126216
    6213     if (hasActiveVideo && hasAudio && !loop())
     6217    bool requireUserGesture = m_mediaSession->hasBehaviorRestriction(HTMLMediaSession::RequireUserGestureToAutoplayToExternalDevice);
     6218    if (hasActiveVideo && (!requireUserGesture || (hasAudio && !loop())))
    62146219        state |= ExternalDeviceAutoPlayCandidate;
    6215 
    62166220#endif
    62176221
  • trunk/Source/WebCore/html/HTMLMediaSession.h

    r183509 r183826  
    8484        RequirePageConsentToLoadMedia = 1 << 3,
    8585        RequirePageConsentToResumeMedia = 1 << 4,
     86        RequireUserGestureForAudioRateChange = 1 << 5,
    8687#if ENABLE(WIRELESS_PLAYBACK_TARGET)
    87         RequireUserGestureToShowPlaybackTargetPicker = 1 << 5,
    88         WirelessVideoPlaybackDisabled =  1 << 6,
     88        RequireUserGestureToShowPlaybackTargetPicker = 1 << 6,
     89        WirelessVideoPlaybackDisabled =  1 << 7,
     90        RequireUserGestureToAutoplayToExternalDevice = 1 << 8,
    8991#endif
    90         RequireUserGestureForAudioRateChange = 1 << 7,
    9192    };
    9293    typedef unsigned BehaviorRestrictions;
     
    9596    WEBCORE_EXPORT void addBehaviorRestriction(BehaviorRestrictions);
    9697    WEBCORE_EXPORT void removeBehaviorRestriction(BehaviorRestrictions);
     98    bool hasBehaviorRestriction(BehaviorRestrictions restriction) const { return restriction & m_restrictions; }
    9799
    98100#if ENABLE(MEDIA_SOURCE)
Note: See TracChangeset for help on using the changeset viewer.