Diff
Modified: trunk/LayoutTests/ChangeLog (203519 => 203520)
--- trunk/LayoutTests/ChangeLog 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/LayoutTests/ChangeLog 2016-07-21 20:19:22 UTC (rev 203520)
@@ -1,3 +1,15 @@
+2016-07-21 Myles C. Maxfield <[email protected]>
+
+ [iPhone] Playing a video on tudou.com plays only sound, no video
+ https://bugs.webkit.org/show_bug.cgi?id=159967
+ <rdar://problem/26964090>
+
+ Reviewed by Jon Lee, Jeremy Jones, and Anders Carlsson.
+
+ * media/video-playsinline.html: Updated.
+ * media/video-webkit-playsinline-expected.txt: Removed.
+ * media/video-webkit-playsinline.html: Removed.
+
2016-07-21 Ryan Haddad <[email protected]>
Marking accessibility/mac/value-change/value-change-user-info-contenteditable.html as flaky on El Capitan WK2
Modified: trunk/LayoutTests/media/video-playsinline-expected.txt (203519 => 203520)
--- trunk/LayoutTests/media/video-playsinline-expected.txt 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/LayoutTests/media/video-playsinline-expected.txt 2016-07-21 20:19:22 UTC (rev 203520)
@@ -1,26 +1,130 @@
-RUN(internals.settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(true))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
RUN(video.playsInline = false)
+RUN(video.removeAttribute("webkit-playsinline"))
EVENT(canplaythrough)
RUN(video.play())
EVENT(playing)
EXPECTED (video.webkitDisplayingFullscreen == 'true') OK
-RUN(internals.settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(true))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
+RUN(video.playsInline = false)
+RUN(video.setAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
+RUN(video.playsInline = false)
+RUN(video.setAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'true') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
+RUN(video.playsInline = false)
+RUN(video.removeAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'true') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
RUN(video.playsInline = true)
+RUN(video.setAttribute("webkit-playsinline"))
EVENT(canplaythrough)
RUN(video.play())
EVENT(playing)
EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
-RUN(internals.settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(false))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
+RUN(video.playsInline = true)
+RUN(video.removeAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
+RUN(video.playsInline = true)
+RUN(video.setAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(true))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
+RUN(video.playsInline = true)
+RUN(video.removeAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
RUN(video.playsInline = false)
+RUN(video.setAttribute("webkit-playsinline"))
EVENT(canplaythrough)
RUN(video.play())
EVENT(playing)
EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
-RUN(internals.settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(false))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
+RUN(video.playsInline = false)
+RUN(video.removeAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'true') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
+RUN(video.playsInline = false)
+RUN(video.setAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
+RUN(video.playsInline = false)
+RUN(video.removeAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
RUN(video.playsInline = true)
+RUN(video.setAttribute("webkit-playsinline"))
EVENT(canplaythrough)
RUN(video.play())
EVENT(playing)
EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(true))
+RUN(video.playsInline = true)
+RUN(video.removeAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'true') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
+RUN(video.playsInline = true)
+RUN(video.setAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(false))
+RUN(internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(false))
+RUN(video.playsInline = true)
+RUN(video.removeAttribute("webkit-playsinline"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(playing)
+EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
END OF TEST
Modified: trunk/LayoutTests/media/video-playsinline.html (203519 => 203520)
--- trunk/LayoutTests/media/video-playsinline.html 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/LayoutTests/media/video-playsinline.html 2016-07-21 20:19:22 UTC (rev 203520)
@@ -17,14 +17,16 @@
endTest();
}
-function testPlaysInline(requiresPlaysInline, hasPlaysInline, expectedDisplayingFullscreen)
+function testPlaysInline(requiresPlaysInline, requiresWebKitPlaysInline, hasPlaysInline, hasWebKitPlaysInline, expectedDisplayingFullscreen)
{
- run('internals.settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(' + requiresPlaysInline + ')');
+ run('internals.settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(' + requiresPlaysInline + ')');
+ run('internals.settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(' + requiresWebKitPlaysInline + ')');
video = media = document.createElement('video');
document.body.appendChild(video);
video.controls = true;
video.src = "" 'content/test');
run('video.playsInline = ' + hasPlaysInline);
+ run('video.' + (hasWebKitPlaysInline ? 'set' : 'remove') + 'Attribute("webkit-playsinline")');
waitForEventOnce('canplaythrough', () => {
runWithKeyDown(() => {
run('video.play()');
@@ -39,29 +41,101 @@
function testRequiresPlaysInlineAndDoesntHaveIt()
{
- testPlaysInline(true, false, true);
+ testPlaysInline(true, true, false, false, true);
}
+function testRequiresPlaysInlineAndDoesntHaveIt2()
+{
+ testPlaysInline(true, true, false, true, false);
+}
+
+function testRequiresPlaysInlineAndDoesntHaveIt3()
+{
+ testPlaysInline(true, false, false, true, true);
+}
+
+function testRequiresPlaysInlineAndDoesntHaveIt4()
+{
+ testPlaysInline(true, false, false, false, true);
+}
+
function testRequiresPlaysInlineAndDoesHaveIt()
{
- testPlaysInline(true, true, false);
+ testPlaysInline(true, true, true, true, false);
}
+function testRequiresPlaysInlineAndDoesHaveIt2()
+{
+ testPlaysInline(true, true, true, false, false);
+}
+
+function testRequiresPlaysInlineAndDoesHaveIt3()
+{
+ testPlaysInline(true, false, true, true, false);
+}
+
+function testRequiresPlaysInlineAndDoesHaveIt4()
+{
+ testPlaysInline(true, false, true, false, false);
+}
+
function testDoesNotRequirePlaysInlineAndDoesntHaveIt()
{
- testPlaysInline(false, false, false);
+ testPlaysInline(false, true, false, true, false);
}
+function testDoesNotRequirePlaysInlineAndDoesntHaveIt2()
+{
+ testPlaysInline(false, true, false, false, true);
+}
+
+function testDoesNotRequirePlaysInlineAndDoesntHaveIt3()
+{
+ testPlaysInline(false, false, false, true, false);
+}
+
+function testDoesNotRequirePlaysInlineAndDoesntHaveIt4()
+{
+ testPlaysInline(false, false, false, false, false);
+}
+
function testDoesNotRequirePlaysInlineAndDoesHaveIt()
{
- testPlaysInline(false, true, false);
+ testPlaysInline(false, true, true, true, false);
}
+function testDoesNotRequirePlaysInlineAndDoesHaveIt2()
+{
+ testPlaysInline(false, true, true, false, true);
+}
+
+function testDoesNotRequirePlaysInlineAndDoesHaveIt3()
+{
+ testPlaysInline(false, false, true, true, false);
+}
+
+function testDoesNotRequirePlaysInlineAndDoesHaveIt4()
+{
+ testPlaysInline(false, false, true, false, false);
+}
+
var tests = [
testRequiresPlaysInlineAndDoesntHaveIt,
+ testRequiresPlaysInlineAndDoesntHaveIt2,
+ testRequiresPlaysInlineAndDoesntHaveIt3,
+ testRequiresPlaysInlineAndDoesntHaveIt4,
testRequiresPlaysInlineAndDoesHaveIt,
+ testRequiresPlaysInlineAndDoesHaveIt2,
+ testRequiresPlaysInlineAndDoesHaveIt3,
+ testRequiresPlaysInlineAndDoesHaveIt4,
testDoesNotRequirePlaysInlineAndDoesntHaveIt,
+ testDoesNotRequirePlaysInlineAndDoesntHaveIt2,
+ testDoesNotRequirePlaysInlineAndDoesntHaveIt3,
+ testDoesNotRequirePlaysInlineAndDoesntHaveIt4,
testDoesNotRequirePlaysInlineAndDoesHaveIt,
+ testDoesNotRequirePlaysInlineAndDoesHaveIt2,
+ testDoesNotRequirePlaysInlineAndDoesHaveIt3,
+ testDoesNotRequirePlaysInlineAndDoesHaveIt4
];
</script>
Deleted: trunk/LayoutTests/media/video-webkit-playsinline-expected.txt (203519 => 203520)
--- trunk/LayoutTests/media/video-webkit-playsinline-expected.txt 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/LayoutTests/media/video-webkit-playsinline-expected.txt 2016-07-21 20:19:22 UTC (rev 203520)
@@ -1,26 +0,0 @@
-RUN(internals.settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(true))
-RUN(video.removeAttribute("webkit-playsinline"))
-EVENT(canplaythrough)
-RUN(video.play())
-EVENT(playing)
-EXPECTED (video.webkitDisplayingFullscreen == 'true') OK
-RUN(internals.settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(true))
-RUN(video.setAttribute("webkit-playsinline"))
-EVENT(canplaythrough)
-RUN(video.play())
-EVENT(playing)
-EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
-RUN(internals.settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(false))
-RUN(video.removeAttribute("webkit-playsinline"))
-EVENT(canplaythrough)
-RUN(video.play())
-EVENT(playing)
-EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
-RUN(internals.settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(false))
-RUN(video.setAttribute("webkit-playsinline"))
-EVENT(canplaythrough)
-RUN(video.play())
-EVENT(playing)
-EXPECTED (video.webkitDisplayingFullscreen == 'false') OK
-END OF TEST
-
Deleted: trunk/LayoutTests/media/video-webkit-playsinline.html (203519 => 203520)
--- trunk/LayoutTests/media/video-webkit-playsinline.html 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/LayoutTests/media/video-webkit-playsinline.html 2016-07-21 20:19:22 UTC (rev 203520)
@@ -1,71 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<script src=""
-<script src=""
-<script>
-function go()
-{
- runNextTest();
-}
-
-function runNextTest()
-{
- if (tests.length)
- tests.shift()();
- else
- endTest();
-}
-
-function testPlaysInline(requiresPlaysInline, hasWebkitPlaysInline, expectedDisplayingFullscreen)
-{
- run('internals.settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(' + requiresPlaysInline + ')');
- video = media = document.createElement('video');
- document.body.appendChild(video);
- video.controls = true;
- video.src = "" 'content/test');
- run('video.' + (hasWebkitPlaysInline ? 'set' : 'remove') + 'Attribute("webkit-playsinline")');
- waitForEventOnce('canplaythrough', () => {
- runWithKeyDown(() => {
- run('video.play()');
- });
- })
- waitForEventOnce('playing', () => {
- testExpected('video.webkitDisplayingFullscreen', expectedDisplayingFullscreen);
- document.body.removeChild(video);
- runNextTest();
- });
-}
-
-function testRequiresPlaysInlineAndDoesntHaveIt()
-{
- testPlaysInline(true, false, true);
-}
-
-function testRequiresPlaysInlineAndDoesHaveIt()
-{
- testPlaysInline(true, true, false);
-}
-
-function testDoesNotRequirePlaysInlineAndDoesntHaveIt()
-{
- testPlaysInline(false, false, false);
-}
-
-function testDoesNotRequirePlaysInlineAndDoesHaveIt()
-{
- testPlaysInline(false, true, false);
-}
-
-var tests = [
- testRequiresPlaysInlineAndDoesntHaveIt,
- testRequiresPlaysInlineAndDoesHaveIt,
- testDoesNotRequirePlaysInlineAndDoesntHaveIt,
- testDoesNotRequirePlaysInlineAndDoesHaveIt,
-];
-
-</script>
-</head>
-<body _onload_="go()">
-</body>
-</html>
\ No newline at end of file
Modified: trunk/Source/WebCore/ChangeLog (203519 => 203520)
--- trunk/Source/WebCore/ChangeLog 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebCore/ChangeLog 2016-07-21 20:19:22 UTC (rev 203520)
@@ -1,3 +1,97 @@
+2016-07-21 Myles C. Maxfield <[email protected]>
+
+ [iPhone] Playing a video on tudou.com plays only sound, no video
+ https://bugs.webkit.org/show_bug.cgi?id=159967
+ <rdar://problem/26964090>
+
+ Reviewed by Jon Lee, Jeremy Jones, and Anders Carlsson.
+
+ WebKit recently starting honoring the playsinline and webkit-playsinline
+ attribute on iPhones. However, because these attributes previously did
+ nothing, some sites (such as Todou) were setting them on their content
+ and expecting that they are not honored. In this specific case, the
+ video is absolutely positioned to be 1 pixel x 1 pixel.
+
+ Previously, with iOS 9, apps could set the allowsInlineMediaPlayback
+ property on their WKWebView, which would honor the webkit-playsinline
+ attribute. Safari on iPhones didn't do this.
+
+ In order to not break these existing apps, it's important that the
+ allowsInlineMediaPlayback preference still allows webkit-playsinline
+ videos to play inline in apps using WKWebView. However, in Safari, these
+ videos should play fullscreen. (Todou videos have webkit-playsinline
+ but not playsinline.)
+
+ Therefore, in Safari, videos with playsinline should be inline, but
+ videos with webkit-playsinline should be fullscreen. In apps using
+ WKWebViews, if the app sets allowsInlineMediaPlayback, then videos with
+ playsinline should be inline, and videos with webkit-playsinline should
+ also be inline. Videos on iPad and Mac should all be inline by default.
+
+ We can create some truth tables for the cases which need to be covered:
+
+ All apps on Mac / iPad:
+ Presence of playsinline | Presence of webkit-playsinline | Result
+ ========================|================================|===========
+ Not present | Not present | Inline
+ Present | Not present | Inline
+ Not Present | Present | Inline
+ Present | Present | Inline
+
+ Safari on iPhone:
+ Presence of playsinline | Presence of webkit-playsinline | Result
+ ========================|================================|===========
+ Not present | Not present | Fullscreen
+ Present | Not present | Inline
+ Not Present | Present | Fullscreen
+ Present | Present | Inline
+
+ App on iPhone which sets allowsInlineMediaPlayback:
+ Presence of playsinline | Presence of webkit-playsinline | Result
+ ========================|================================|===========
+ Not present | Not present | Fullscreen
+ Present | Not present | Inline
+ Not Present | Present | Inline
+ Present | Present | Inline
+
+ The way to distinguish Safari from another app is to create an SPI
+ boolean preference which Safari can set. This is already how the
+ iPhone and iPad are differentiated using the requiresPlayInlineAttribute
+ which Safari sets but other apps don't. However, this preference is
+ no longer sufficient because Safari should now be discriminating
+ between the playsinline and webkit-playsinline attributes. Therefore,
+ this preference should be extended to two boolean preferences, which
+ this patch adds:
+
+ allowsInlineMediaPlaybackWithPlaysInlineAttribute
+ allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute
+
+ Safari on iPhone will set
+ allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute to true,
+ and allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute to
+ false. Other apps on iPhone will get their defaults values (because they
+ are SPI) which means they will both be true. On iPad and Mac, apps will
+ use the defaults values where both are false.
+
+ This patch adds support for these two preferences, but does not remove
+ the existing inlineMediaPlaybackRequiresPlaysInlineAttribute preference.
+ I will remove the exising preference as soon as I update Safari to migrate
+ off of it.
+
+ Test: media/video-playsinline.html
+
+ * html/MediaElementSession.cpp:
+ (WebCore::MediaElementSession::requiresFullscreenForVideoPlayback):
+ * page/Settings.cpp:
+ * page/Settings.in:
+ * testing/InternalSettings.cpp:
+ (WebCore::InternalSettings::Backup::Backup):
+ (WebCore::InternalSettings::Backup::restoreTo):
+ (WebCore::InternalSettings::setAllowsInlineMediaPlaybackWithPlaysInlineAttribute):
+ (WebCore::InternalSettings::setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute):
+ * testing/InternalSettings.h:
+ * testing/InternalSettings.idl:
+
2016-07-21 Ryosuke Niwa <[email protected]>
Crash accessing null renderer inside WebCore::DeleteSelectionCommand::doApply
Modified: trunk/Source/WebCore/html/MediaElementSession.cpp (203519 => 203520)
--- trunk/Source/WebCore/html/MediaElementSession.cpp 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebCore/html/MediaElementSession.cpp 2016-07-21 20:19:22 UTC (rev 203520)
@@ -455,7 +455,16 @@
if (!settings || !settings->allowsInlineMediaPlayback())
return true;
- return settings->inlineMediaPlaybackRequiresPlaysInlineAttribute() && !(element.hasAttributeWithoutSynchronization(HTMLNames::webkit_playsinlineAttr) || element.hasAttributeWithoutSynchronization(HTMLNames::playsinlineAttr));
+ bool requiresPlaysInline = settings->allowsInlineMediaPlaybackWithPlaysInlineAttribute();
+ bool requiresWebKitPlaysInline = settings->allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute();
+
+ if (!requiresPlaysInline && !requiresWebKitPlaysInline)
+ return false;
+
+ bool hasPlaysInline = element.hasAttributeWithoutSynchronization(HTMLNames::playsinlineAttr);
+ bool hasWebKitPlaysInline = element.hasAttributeWithoutSynchronization(HTMLNames::webkit_playsinlineAttr);
+
+ return !((requiresPlaysInline && hasPlaysInline) || (requiresWebKitPlaysInline && hasWebKitPlaysInline));
}
bool MediaElementSession::allowsAutomaticMediaDataLoading(const HTMLMediaElement& element) const
Modified: trunk/Source/WebCore/page/Settings.cpp (203519 => 203520)
--- trunk/Source/WebCore/page/Settings.cpp 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebCore/page/Settings.cpp 2016-07-21 20:19:22 UTC (rev 203520)
@@ -139,6 +139,8 @@
static const bool defaultAcceleratedCompositingForFixedPositionEnabled = true;
static const bool defaultAllowsInlineMediaPlayback = false;
static const bool defaultInlineMediaPlaybackRequiresPlaysInlineAttribute = true;
+static const bool defaultAllowsInlineMediaPlaybackWithPlaysInlineAttribute = true;
+static const bool defaultAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute = true;
static const bool defaultVideoPlaybackRequiresUserGesture = true;
static const bool defaultAudioPlaybackRequiresUserGesture = true;
static const bool defaultMediaDataLoadsAutomatically = false;
@@ -152,6 +154,8 @@
static const bool defaultAcceleratedCompositingForFixedPositionEnabled = false;
static const bool defaultAllowsInlineMediaPlayback = true;
static const bool defaultInlineMediaPlaybackRequiresPlaysInlineAttribute = false;
+static const bool defaultAllowsInlineMediaPlaybackWithPlaysInlineAttribute = false;
+static const bool defaultAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute = false;
static const bool defaultVideoPlaybackRequiresUserGesture = false;
static const bool defaultAudioPlaybackRequiresUserGesture = false;
static const bool defaultMediaDataLoadsAutomatically = true;
Modified: trunk/Source/WebCore/page/Settings.in (203519 => 203520)
--- trunk/Source/WebCore/page/Settings.in 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebCore/page/Settings.in 2016-07-21 20:19:22 UTC (rev 203520)
@@ -132,6 +132,8 @@
allowsInlineMediaPlayback initial=defaultAllowsInlineMediaPlayback
allowsInlineMediaPlaybackAfterFullscreen initial=true
inlineMediaPlaybackRequiresPlaysInlineAttribute initial=defaultInlineMediaPlaybackRequiresPlaysInlineAttribute
+allowsInlineMediaPlaybackWithPlaysInlineAttribute initial=defaultAllowsInlineMediaPlaybackWithPlaysInlineAttribute
+allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute initial=defaultAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute
allowsPictureInPictureMediaPlayback initial=defaultAllowsPictureInPictureMediaPlayback
mediaControlsScaleWithPageZoom initial=defaultMediaControlsScaleWithPageZoom
invisibleAutoplayNotPermitted initial=false
Modified: trunk/Source/WebCore/testing/InternalSettings.cpp (203519 => 203520)
--- trunk/Source/WebCore/testing/InternalSettings.cpp 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebCore/testing/InternalSettings.cpp 2016-07-21 20:19:22 UTC (rev 203520)
@@ -108,6 +108,8 @@
, m_allowsInlineMediaPlayback(settings.allowsInlineMediaPlayback())
, m_allowsInlineMediaPlaybackAfterFullscreen(settings.allowsInlineMediaPlaybackAfterFullscreen())
, m_inlineMediaPlaybackRequiresPlaysInlineAttribute(settings.inlineMediaPlaybackRequiresPlaysInlineAttribute())
+ , m_allowsInlineMediaPlaybackWithPlaysInlineAttribute(settings.allowsInlineMediaPlaybackWithPlaysInlineAttribute())
+ , m_allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(settings.allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute())
#if ENABLE(INDEXED_DATABASE_IN_WORKERS)
, m_indexedDBWorkersEnabled(RuntimeEnabledFeatures::sharedFeatures().indexedDBWorkersEnabled())
#endif
@@ -184,6 +186,8 @@
settings.setAllowsInlineMediaPlayback(m_allowsInlineMediaPlayback);
settings.setAllowsInlineMediaPlaybackAfterFullscreen(m_allowsInlineMediaPlaybackAfterFullscreen);
settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(m_inlineMediaPlaybackRequiresPlaysInlineAttribute);
+ settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(m_allowsInlineMediaPlaybackWithPlaysInlineAttribute);
+ settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(m_allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute);
RuntimeEnabledFeatures::sharedFeatures().setPluginReplacementEnabled(m_pluginReplacementEnabled);
#if ENABLE(INDEXED_DATABASE_IN_WORKERS)
RuntimeEnabledFeatures::sharedFeatures().setIndexedDBWorkersEnabled(m_indexedDBWorkersEnabled);
@@ -580,6 +584,18 @@
settings()->setInlineMediaPlaybackRequiresPlaysInlineAttribute(requires);
}
+void InternalSettings::setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(bool requires, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(requires);
+}
+
+void InternalSettings::setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(bool requires, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(requires);
+}
+
void InternalSettings::setIndexedDBWorkersEnabled(bool enabled, ExceptionCode&)
{
#if ENABLE(INDEXED_DATABASE_IN_WORKERS)
Modified: trunk/Source/WebCore/testing/InternalSettings.h (203519 => 203520)
--- trunk/Source/WebCore/testing/InternalSettings.h 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebCore/testing/InternalSettings.h 2016-07-21 20:19:22 UTC (rev 203520)
@@ -108,6 +108,8 @@
bool m_allowsInlineMediaPlayback;
bool m_allowsInlineMediaPlaybackAfterFullscreen;
bool m_inlineMediaPlaybackRequiresPlaysInlineAttribute;
+ bool m_allowsInlineMediaPlaybackWithPlaysInlineAttribute;
+ bool m_allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute;
#if ENABLE(INDEXED_DATABASE_IN_WORKERS)
bool m_indexedDBWorkersEnabled;
#endif
@@ -163,6 +165,8 @@
void setAllowsInlineMediaPlayback(bool, ExceptionCode&);
void setAllowsInlineMediaPlaybackAfterFullscreen(bool, ExceptionCode&);
void setInlineMediaPlaybackRequiresPlaysInlineAttribute(bool, ExceptionCode&);
+ void setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(bool, ExceptionCode&);
+ void setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(bool, ExceptionCode&);
void setIndexedDBWorkersEnabled(bool, ExceptionCode&);
String userInterfaceDirectionPolicy(ExceptionCode&);
void setUserInterfaceDirectionPolicy(const String& policy, ExceptionCode&);
Modified: trunk/Source/WebCore/testing/InternalSettings.idl (203519 => 203520)
--- trunk/Source/WebCore/testing/InternalSettings.idl 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebCore/testing/InternalSettings.idl 2016-07-21 20:19:22 UTC (rev 203520)
@@ -78,6 +78,8 @@
[RaisesException] void setAllowsInlineMediaPlayback(boolean allows);
[RaisesException] void setAllowsInlineMediaPlaybackAfterFullscreen(boolean allows);
[RaisesException] void setInlineMediaPlaybackRequiresPlaysInlineAttribute(boolean requires);
+ [RaisesException] void setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(boolean requires);
+ [RaisesException] void setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(boolean requires);
[RaisesException] void setIndexedDBWorkersEnabled(boolean requires);
Modified: trunk/Source/WebKit/mac/ChangeLog (203519 => 203520)
--- trunk/Source/WebKit/mac/ChangeLog 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit/mac/ChangeLog 2016-07-21 20:19:22 UTC (rev 203520)
@@ -1,3 +1,24 @@
+2016-07-21 Myles C. Maxfield <[email protected]>
+
+ [iPhone] Playing a video on tudou.com plays only sound, no video
+ https://bugs.webkit.org/show_bug.cgi?id=159967
+ <rdar://problem/26964090>
+
+ Reviewed by Jon Lee, Jeremy Jones, and Anders Carlsson.
+
+ Add the two preferences to WebPreferences.
+
+ * WebView/WebPreferenceKeysPrivate.h:
+ * WebView/WebPreferences.mm:
+ (+[WebPreferences initialize]):
+ (-[WebPreferences allowsInlineMediaPlaybackWithPlaysInlineAttribute]):
+ (-[WebPreferences setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:]):
+ (-[WebPreferences allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]):
+ (-[WebPreferences setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:]):
+ * WebView/WebPreferencesPrivate.h:
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]):
+
2016-07-20 Commit Queue <[email protected]>
Unreviewed, rolling out r203471.
Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (203519 => 203520)
--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2016-07-21 20:19:22 UTC (rev 203520)
@@ -127,6 +127,8 @@
#define WebKitAllowsInlineMediaPlaybackPreferenceKey @"WebKitMediaPlaybackAllowsInline"
#define WebKitAllowsInlineMediaPlaybackAfterFullscreenPreferenceKey @"WebKitAllowsInlineMediaPlaybackAfterFullscreen"
#define WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey @"InlineMediaPlaybackRequiresPlaysInlineAttribute"
+#define WebKitAllowsInlineMediaPlaybackWithPlaysInlineAttributeKey @"AllowsInlineMediaPlaybackWithPlaysInlineAttribute"
+#define WebKitAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttributeKey @"AllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute"
#define WebKitInvisibleAutoplayNotPermittedKey @"InvisibleAutoplayNotPermitted"
#define WebKitAllowsPictureInPictureMediaPlaybackPreferenceKey @"WebKitAllowsPictureInPictureMediaPlayback"
#define WebKitAllowsAirPlayForMediaPlaybackPreferenceKey @"WebKitMediaPlaybackAllowsAirPlay"
Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (203519 => 203520)
--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2016-07-21 20:19:22 UTC (rev 203520)
@@ -525,7 +525,9 @@
#if !PLATFORM(IOS)
[NSNumber numberWithBool:YES], WebKitAllowsInlineMediaPlaybackPreferenceKey,
[NSNumber numberWithBool:NO], WebKitAllowsInlineMediaPlaybackAfterFullscreenPreferenceKey,
- [NSNumber numberWithBool:NO], WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey,
+ [NSNumber numberWithBool:NO], WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey,
+ [NSNumber numberWithBool:NO], WebKitAllowsInlineMediaPlaybackWithPlaysInlineAttributeKey,
+ [NSNumber numberWithBool:NO], WebKitAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttributeKey,
[NSNumber numberWithBool:YES], WebKitMediaControlsScaleWithPageZoomPreferenceKey,
[NSNumber numberWithBool:NO], WebKitWebAudioEnabledPreferenceKey,
[NSNumber numberWithBool:YES], WebKitBackspaceKeyNavigationEnabledKey,
@@ -539,6 +541,8 @@
[NSNumber numberWithBool:allowsInlineMediaPlayback], WebKitAllowsInlineMediaPlaybackPreferenceKey,
[NSNumber numberWithBool:allowsInlineMediaPlaybackAfterFullscreen], WebKitAllowsInlineMediaPlaybackAfterFullscreenPreferenceKey,
[NSNumber numberWithBool:requiresPlaysInlineAttribute], WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey,
+ [NSNumber numberWithBool:requiresPlaysInlineAttribute], WebKitAllowsInlineMediaPlaybackWithPlaysInlineAttributeKey,
+ [NSNumber numberWithBool:requiresPlaysInlineAttribute], WebKitAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttributeKey,
[NSNumber numberWithBool:NO], WebKitMediaControlsScaleWithPageZoomPreferenceKey,
[NSNumber numberWithUnsignedInt:AudioSession::None], WebKitAudioSessionCategoryOverride,
[NSNumber numberWithBool:NO], WebKitMediaDataLoadsAutomaticallyPreferenceKey,
@@ -2293,6 +2297,26 @@
[self _setBoolValue:flag forKey:WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey];
}
+- (BOOL)allowsInlineMediaPlaybackWithPlaysInlineAttribute
+{
+ return [self _boolValueForKey:WebKitAllowsInlineMediaPlaybackWithPlaysInlineAttributeKey];
+}
+
+- (void)setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:(BOOL)flag
+{
+ [self _setBoolValue:flag forKey:WebKitAllowsInlineMediaPlaybackWithPlaysInlineAttributeKey];
+}
+
+- (BOOL)allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute
+{
+ return [self _boolValueForKey:WebKitAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttributeKey];
+}
+
+- (void)setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:(BOOL)flag
+{
+ [self _setBoolValue:flag forKey:WebKitAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttributeKey];
+}
+
- (BOOL)invisibleAutoplayNotPermitted
{
return [self _boolValueForKey:WebKitInvisibleAutoplayNotPermittedKey];
Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (203519 => 203520)
--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2016-07-21 20:19:22 UTC (rev 203520)
@@ -265,6 +265,12 @@
- (void)setInlineMediaPlaybackRequiresPlaysInlineAttribute:(BOOL)flag;
- (BOOL)inlineMediaPlaybackRequiresPlaysInlineAttribute;
+- (void)setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:(BOOL)flag;
+- (BOOL)allowsInlineMediaPlaybackWithPlaysInlineAttribute;
+
+- (void)setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:(BOOL)flag;
+- (BOOL)allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute;
+
- (void)setInvisibleAutoplayNotPermitted:(BOOL)flag;
- (BOOL)invisibleAutoplayNotPermitted;
Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (203519 => 203520)
--- trunk/Source/WebKit/mac/WebView/WebView.mm 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm 2016-07-21 20:19:22 UTC (rev 203520)
@@ -2349,6 +2349,8 @@
settings.setAllowsInlineMediaPlayback([preferences mediaPlaybackAllowsInline]);
settings.setAllowsInlineMediaPlaybackAfterFullscreen([preferences allowsInlineMediaPlaybackAfterFullscreen]);
settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute([preferences inlineMediaPlaybackRequiresPlaysInlineAttribute]);
+ settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute([preferences allowsInlineMediaPlaybackWithPlaysInlineAttribute]);
+ settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute([preferences allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]);
settings.setInvisibleAutoplayNotPermitted([preferences invisibleAutoplayNotPermitted]);
settings.setAllowsPictureInPictureMediaPlayback([preferences allowsPictureInPictureMediaPlayback] && shouldAllowPictureInPictureMediaPlayback());
settings.setMediaControlsScaleWithPageZoom([preferences mediaControlsScaleWithPageZoom]);
Modified: trunk/Source/WebKit2/ChangeLog (203519 => 203520)
--- trunk/Source/WebKit2/ChangeLog 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit2/ChangeLog 2016-07-21 20:19:22 UTC (rev 203520)
@@ -1,3 +1,34 @@
+2016-07-21 Myles C. Maxfield <[email protected]>
+
+ [iPhone] Playing a video on tudou.com plays only sound, no video
+ https://bugs.webkit.org/show_bug.cgi?id=159967
+ <rdar://problem/26964090>
+
+ Reviewed by Jon Lee, Jeremy Jones, and Anders Carlsson.
+
+ Add the two preferences to WKWebViewConfiguration and WKPreferences to cover both
+ the Obj-C API and the C SPI.
+
+ * Shared/WebPreferencesDefinitions.h:
+ * UIProcess/API/C/WKPreferences.cpp:
+ (WKPreferencesSetAllowsInlineMediaPlaybackWithPlaysInlineAttribute):
+ (WKPreferencesGetAllowsInlineMediaPlaybackWithPlaysInlineAttribute):
+ (WKPreferencesSetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute):
+ (WKPreferencesGetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute):
+ * UIProcess/API/C/WKPreferencesRefPrivate.h:
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _initializeWithConfiguration:]):
+ * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
+ (-[WKWebViewConfiguration init]):
+ (-[WKWebViewConfiguration copyWithZone:]):
+ (-[WKWebViewConfiguration _allowsInlineMediaPlaybackWithPlaysInlineAttribute]):
+ (-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:]):
+ (-[WKWebViewConfiguration _allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]):
+ (-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:]):
+ * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::updatePreferences):
+
2016-07-21 Yongjun Zhang <[email protected]>
WebBackForwardList's currentIndex could get out of bounds when filtering items.
Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (203519 => 203520)
--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2016-07-21 20:19:22 UTC (rev 203520)
@@ -66,6 +66,8 @@
#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK false
#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_AFTER_FULLSCREEN true
#define DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE true
+#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_WITH_PLAYS_INLINE_ATTRIBUTE true
+#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_WITH_WEBKIT_PLAYS_INLINE_ATTRIBUTE true
#define DEFAULT_INVISIBLE_AUTOPLAY_NOT_PERMITTED true
#define DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY false
#define DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM false
@@ -83,6 +85,8 @@
#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK true
#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_AFTER_FULLSCREEN false
#define DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE false
+#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_WITH_PLAYS_INLINE_ATTRIBUTE false
+#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_WITH_WEBKIT_PLAYS_INLINE_ATTRIBUTE false
#define DEFAULT_INVISIBLE_AUTOPLAY_NOT_PERMITTED false
#define DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY true
#define DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM true
@@ -153,6 +157,8 @@
macro(AllowsInlineMediaPlayback, allowsInlineMediaPlayback, Bool, bool, DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK, "", "") \
macro(AllowsInlineMediaPlaybackAfterFullscreen, allowsInlineMediaPlaybackAfterFullscreen, Bool, bool, DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_AFTER_FULLSCREEN, "", "") \
macro(InlineMediaPlaybackRequiresPlaysInlineAttribute, inlineMediaPlaybackRequiresPlaysInlineAttribute, Bool, bool, DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE, "", "") \
+ macro(AllowsInlineMediaPlaybackWithPlaysInlineAttribute, allowsInlineMediaPlaybackWithPlaysInlineAttribute, Bool, bool, DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_WITH_PLAYS_INLINE_ATTRIBUTE, "", "") \
+ macro(AllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute, allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute, Bool, bool, DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK_WITH_WEBKIT_PLAYS_INLINE_ATTRIBUTE, "", "") \
macro(InvisibleAutoplayNotPermitted, invisibleAutoplayNotPermitted, Bool, bool, DEFAULT_INVISIBLE_AUTOPLAY_NOT_PERMITTED, "", "") \
macro(MediaDataLoadsAutomatically, mediaDataLoadsAutomatically, Bool, bool, DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY, "", "") \
macro(AllowsPictureInPictureMediaPlayback, allowsPictureInPictureMediaPlayback, Bool, bool, DEFAULT_ALLOWS_PICTURE_IN_PICTURE_MEDIA_PLAYBACK, "", "") \
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (203519 => 203520)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2016-07-21 20:19:22 UTC (rev 203520)
@@ -803,6 +803,26 @@
return toImpl(preferencesRef)->inlineMediaPlaybackRequiresPlaysInlineAttribute();
}
+void WKPreferencesSetAllowsInlineMediaPlaybackWithPlaysInlineAttribute(WKPreferencesRef preferencesRef, bool flag)
+{
+ toImpl(preferencesRef)->setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(flag);
+}
+
+bool WKPreferencesGetAllowsInlineMediaPlaybackWithPlaysInlineAttribute(WKPreferencesRef preferencesRef)
+{
+ return toImpl(preferencesRef)->allowsInlineMediaPlaybackWithPlaysInlineAttribute();
+}
+
+void WKPreferencesSetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(WKPreferencesRef preferencesRef, bool flag)
+{
+ toImpl(preferencesRef)->setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(flag);
+}
+
+bool WKPreferencesGetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(WKPreferencesRef preferencesRef)
+{
+ return toImpl(preferencesRef)->allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute();
+}
+
void WKPreferencesSetMediaControlsScaleWithPageZoom(WKPreferencesRef preferencesRef, bool flag)
{
toImpl(preferencesRef)->setMediaControlsScaleWithPageZoom(flag);
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h (203519 => 203520)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h 2016-07-21 20:19:22 UTC (rev 203520)
@@ -195,6 +195,14 @@
WK_EXPORT void WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute(WKPreferencesRef preferencesRef, bool flag);
WK_EXPORT bool WKPreferencesGetInlineMediaPlaybackRequiresPlaysInlineAttribute(WKPreferencesRef preferencesRef);
+// Defaults to true on iOS, false elsewhere.
+WK_EXPORT void WKPreferencesSetAllowsInlineMediaPlaybackWithPlaysInlineAttribute(WKPreferencesRef preferencesRef, bool flag);
+WK_EXPORT bool WKPreferencesGetAllowsInlineMediaPlaybackWithPlaysInlineAttribute(WKPreferencesRef preferencesRef);
+
+// Defaults to true on iOS, false elsewhere.
+WK_EXPORT void WKPreferencesSetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(WKPreferencesRef preferencesRef, bool flag);
+WK_EXPORT bool WKPreferencesGetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(WKPreferencesRef preferencesRef);
+
// Defaults to false on iOS, true elsewhere.
WK_EXPORT void WKPreferencesSetMediaControlsScaleWithPageZoom(WKPreferencesRef preferencesRef, bool flag);
WK_EXPORT bool WKPreferencesGetMediaControlsScaleWithPageZoom(WKPreferencesRef preferencesRef);
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (203519 => 203520)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2016-07-21 20:19:22 UTC (rev 203520)
@@ -456,6 +456,8 @@
pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::allowsInlineMediaPlaybackKey(), WebKit::WebPreferencesStore::Value(!![_configuration allowsInlineMediaPlayback]));
pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::allowsInlineMediaPlaybackAfterFullscreenKey(), WebKit::WebPreferencesStore::Value(!![_configuration _allowsInlineMediaPlaybackAfterFullscreen]));
pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::inlineMediaPlaybackRequiresPlaysInlineAttributeKey(), WebKit::WebPreferencesStore::Value(!![_configuration _inlineMediaPlaybackRequiresPlaysInlineAttribute]));
+ pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::allowsInlineMediaPlaybackWithPlaysInlineAttributeKey(), WebKit::WebPreferencesStore::Value(!![_configuration _allowsInlineMediaPlaybackWithPlaysInlineAttribute]));
+ pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::allowsInlineMediaPlaybackWithWebKitPlaysInlineAttributeKey(), WebKit::WebPreferencesStore::Value(!![_configuration _allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]));
pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::allowsPictureInPictureMediaPlaybackKey(), WebKit::WebPreferencesStore::Value(!![_configuration allowsPictureInPictureMediaPlayback] && shouldAllowPictureInPictureMediaPlayback()));
pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::userInterfaceDirectionPolicyKey(), WebKit::WebPreferencesStore::Value(static_cast<uint32_t>(WebCore::UserInterfaceDirectionPolicy::Content)));
pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::systemLayoutDirectionKey(), WebKit::WebPreferencesStore::Value(static_cast<uint32_t>(WebCore::LTR)));
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm (203519 => 203520)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2016-07-21 20:19:22 UTC (rev 203520)
@@ -108,6 +108,8 @@
BOOL _alwaysRunsAtForegroundPriority;
BOOL _allowsInlineMediaPlayback;
BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute;
+ BOOL _allowsInlineMediaPlaybackWithPlaysInlineAttribute;
+ BOOL _allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute;
BOOL _allowsInlineMediaPlaybackAfterFullscreen;
#endif
@@ -138,6 +140,8 @@
_allowsPictureInPictureMediaPlayback = YES;
_allowsInlineMediaPlayback = WebCore::deviceClass() == MGDeviceClassiPad;
_inlineMediaPlaybackRequiresPlaysInlineAttribute = !_allowsInlineMediaPlayback;
+ _allowsInlineMediaPlaybackWithPlaysInlineAttribute = !_allowsInlineMediaPlayback;
+ _allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute = !_allowsInlineMediaPlayback;
_allowsInlineMediaPlaybackAfterFullscreen = !_allowsInlineMediaPlayback;
_mediaDataLoadsAutomatically = NO;
if (linkedOnOrAfter(WebKit::LibraryVersion::FirstWithMediaTypesRequiringUserActionForPlayback))
@@ -289,6 +293,8 @@
configuration->_allowsInlineMediaPlayback = self->_allowsInlineMediaPlayback;
configuration->_allowsInlineMediaPlaybackAfterFullscreen = self->_allowsInlineMediaPlaybackAfterFullscreen;
configuration->_inlineMediaPlaybackRequiresPlaysInlineAttribute = self->_inlineMediaPlaybackRequiresPlaysInlineAttribute;
+ configuration->_allowsInlineMediaPlaybackWithPlaysInlineAttribute = self->_allowsInlineMediaPlaybackWithPlaysInlineAttribute;
+ configuration->_allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute = self->_allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute;
configuration->_allowsPictureInPictureMediaPlayback = self->_allowsPictureInPictureMediaPlayback;
configuration->_alwaysRunsAtForegroundPriority = _alwaysRunsAtForegroundPriority;
configuration->_selectionGranularity = self->_selectionGranularity;
@@ -578,6 +584,26 @@
_inlineMediaPlaybackRequiresPlaysInlineAttribute = requires;
}
+- (BOOL)_allowsInlineMediaPlaybackWithPlaysInlineAttribute
+{
+ return _allowsInlineMediaPlaybackWithPlaysInlineAttribute;
+}
+
+- (void)_setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:(BOOL)requires
+{
+ _allowsInlineMediaPlaybackWithPlaysInlineAttribute = requires;
+}
+
+- (BOOL)_allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute
+{
+ return _allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute;
+}
+
+- (void)_setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:(BOOL)requires
+{
+ _allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute = requires;
+}
+
- (BOOL)_allowsInlineMediaPlaybackAfterFullscreen
{
return _allowsInlineMediaPlaybackAfterFullscreen;
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h (203519 => 203520)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h 2016-07-21 20:19:22 UTC (rev 203520)
@@ -60,6 +60,8 @@
#if TARGET_OS_IPHONE
@property (nonatomic, setter=_setAlwaysRunsAtForegroundPriority:) BOOL _alwaysRunsAtForegroundPriority WK_API_AVAILABLE(ios(9_0));
@property (nonatomic, setter=_setInlineMediaPlaybackRequiresPlaysInlineAttribute:) BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute WK_API_AVAILABLE(ios(WK_IOS_TBA));
+@property (nonatomic, setter=_setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:) BOOL _allowsInlineMediaPlaybackWithPlaysInlineAttribute WK_API_AVAILABLE(ios(WK_IOS_TBA));
+@property (nonatomic, setter=_setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:) BOOL _allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute WK_API_AVAILABLE(ios(WK_IOS_TBA));
@property (nonatomic, setter=_setAllowsInlineMediaPlaybackAfterFullscreen:) BOOL _allowsInlineMediaPlaybackAfterFullscreen WK_API_AVAILABLE(ios(WK_IOS_TBA));
#else
@property (nonatomic, setter=_setShowsURLsInToolTips:) BOOL _showsURLsInToolTips WK_API_AVAILABLE(macosx(WK_MAC_TBA));
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (203519 => 203520)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2016-07-21 20:19:22 UTC (rev 203520)
@@ -2986,6 +2986,8 @@
settings.setAllowsInlineMediaPlayback(store.getBoolValueForKey(WebPreferencesKey::allowsInlineMediaPlaybackKey()));
settings.setAllowsInlineMediaPlaybackAfterFullscreen(store.getBoolValueForKey(WebPreferencesKey::allowsInlineMediaPlaybackAfterFullscreenKey()));
settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(store.getBoolValueForKey(WebPreferencesKey::inlineMediaPlaybackRequiresPlaysInlineAttributeKey()));
+ settings.setAllowsInlineMediaPlaybackWithPlaysInlineAttribute(store.getBoolValueForKey(WebPreferencesKey::allowsInlineMediaPlaybackWithPlaysInlineAttributeKey()));
+ settings.setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute(store.getBoolValueForKey(WebPreferencesKey::allowsInlineMediaPlaybackWithWebKitPlaysInlineAttributeKey()));
settings.setInvisibleAutoplayNotPermitted(store.getBoolValueForKey(WebPreferencesKey::invisibleAutoplayNotPermittedKey()));
settings.setMediaDataLoadsAutomatically(store.getBoolValueForKey(WebPreferencesKey::mediaDataLoadsAutomaticallyKey()));
#if ENABLE(ATTACHMENT_ELEMENT)
Modified: trunk/Tools/ChangeLog (203519 => 203520)
--- trunk/Tools/ChangeLog 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Tools/ChangeLog 2016-07-21 20:19:22 UTC (rev 203520)
@@ -1,3 +1,18 @@
+2016-07-21 Myles C. Maxfield <[email protected]>
+
+ [iPhone] Playing a video on tudou.com plays only sound, no video
+ https://bugs.webkit.org/show_bug.cgi?id=159967
+ <rdar://problem/26964090>
+
+ Reviewed by Jon Lee, Jeremy Jones, and Anders Carlsson.
+
+ Migrate tests to use new SPI.
+
+ * TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm:
+ (RequiresUserActionForPlaybackTest::SetUp):
+ * WebKitTestRunner/cocoa/TestControllerCocoa.mm:
+ (WTR::initializeWebViewConfiguration):
+
2016-07-21 Csaba Osztrogonác <[email protected]>
Clarify testing mode names in run-jsc-stress-tests
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm (203519 => 203520)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm 2016-07-21 20:19:22 UTC (rev 203520)
@@ -77,6 +77,8 @@
#if TARGET_OS_IPHONE
configuration.get().allowsInlineMediaPlayback = YES;
configuration.get()._inlineMediaPlaybackRequiresPlaysInlineAttribute = NO;
+ configuration.get()._allowsInlineMediaPlaybackWithPlaysInlineAttribute = NO;
+ configuration.get()._allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute = NO;
#endif
}
Modified: trunk/Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm (203519 => 203520)
--- trunk/Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm 2016-07-21 20:04:10 UTC (rev 203519)
+++ trunk/Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm 2016-07-21 20:19:22 UTC (rev 203520)
@@ -62,6 +62,8 @@
#if TARGET_OS_IPHONE
globalWebViewConfiguration.allowsInlineMediaPlayback = YES;
globalWebViewConfiguration._inlineMediaPlaybackRequiresPlaysInlineAttribute = NO;
+ globalWebViewConfiguration._allowsInlineMediaPlaybackWithPlaysInlineAttribute = NO;
+ globalWebViewConfiguration._allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute = NO;
globalWebViewConfiguration._invisibleAutoplayNotPermitted = NO;
globalWebViewConfiguration._mediaDataLoadsAutomatically = YES;
globalWebViewConfiguration.requiresUserActionForMediaPlayback = NO;