Title: [183826] trunk/Source/WebCore
- Revision
- 183826
- Author
- [email protected]
- Date
- 2015-05-05 13:50:02 -0700 (Tue, 05 May 2015)
Log 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.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (183825 => 183826)
--- trunk/Source/WebCore/ChangeLog 2015-05-05 20:42:44 UTC (rev 183825)
+++ trunk/Source/WebCore/ChangeLog 2015-05-05 20:50:02 UTC (rev 183826)
@@ -1,3 +1,20 @@
+2015-05-05 Eric Carlson <[email protected]>
+
+ 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.
+
2015-05-05 Brent Fulgham <[email protected]>
Unreviewed logging fix.
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (183825 => 183826)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2015-05-05 20:42:44 UTC (rev 183825)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2015-05-05 20:50:02 UTC (rev 183826)
@@ -341,6 +341,9 @@
m_mediaSession->addBehaviorRestriction(HTMLMediaSession::RequireUserGestureForFullscreen);
m_mediaSession->addBehaviorRestriction(HTMLMediaSession::RequirePageConsentToLoadMedia);
+#if ENABLE(WIRELESS_PLAYBACK_TARGET)
+ m_mediaSession->addBehaviorRestriction(HTMLMediaSession::RequireUserGestureToAutoplayToExternalDevice);
+#endif
// FIXME: We should clean up and look to better merge the iOS and non-iOS code below.
Settings* settings = document.settings();
@@ -5892,6 +5895,7 @@
HTMLMediaSession::BehaviorRestrictions restrictionsToRemove = HTMLMediaSession::RequireUserGestureForLoad
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
| HTMLMediaSession::RequireUserGestureToShowPlaybackTargetPicker
+ | HTMLMediaSession::RequireUserGestureToAutoplayToExternalDevice
#endif
| HTMLMediaSession::RequireUserGestureForLoad
| HTMLMediaSession::RequireUserGestureForRateChange
@@ -6210,9 +6214,9 @@
state |= RequiresPlaybackTargetMonitoring;
}
- if (hasActiveVideo && hasAudio && !loop())
+ bool requireUserGesture = m_mediaSession->hasBehaviorRestriction(HTMLMediaSession::RequireUserGestureToAutoplayToExternalDevice);
+ if (hasActiveVideo && (!requireUserGesture || (hasAudio && !loop())))
state |= ExternalDeviceAutoPlayCandidate;
-
#endif
if (!isPlaying())
Modified: trunk/Source/WebCore/html/HTMLMediaSession.h (183825 => 183826)
--- trunk/Source/WebCore/html/HTMLMediaSession.h 2015-05-05 20:42:44 UTC (rev 183825)
+++ trunk/Source/WebCore/html/HTMLMediaSession.h 2015-05-05 20:50:02 UTC (rev 183826)
@@ -83,17 +83,19 @@
RequireUserGestureForFullscreen = 1 << 2,
RequirePageConsentToLoadMedia = 1 << 3,
RequirePageConsentToResumeMedia = 1 << 4,
+ RequireUserGestureForAudioRateChange = 1 << 5,
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
- RequireUserGestureToShowPlaybackTargetPicker = 1 << 5,
- WirelessVideoPlaybackDisabled = 1 << 6,
+ RequireUserGestureToShowPlaybackTargetPicker = 1 << 6,
+ WirelessVideoPlaybackDisabled = 1 << 7,
+ RequireUserGestureToAutoplayToExternalDevice = 1 << 8,
#endif
- RequireUserGestureForAudioRateChange = 1 << 7,
};
typedef unsigned BehaviorRestrictions;
WEBCORE_EXPORT BehaviorRestrictions behaviorRestrictions() const { return m_restrictions; }
WEBCORE_EXPORT void addBehaviorRestriction(BehaviorRestrictions);
WEBCORE_EXPORT void removeBehaviorRestriction(BehaviorRestrictions);
+ bool hasBehaviorRestriction(BehaviorRestrictions restriction) const { return restriction & m_restrictions; }
#if ENABLE(MEDIA_SOURCE)
size_t maximumMediaSourceBufferSize(const SourceBuffer&) const;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes