Title: [203520] trunk
Revision
203520
Author
[email protected]
Date
2016-07-21 13:19:22 -0700 (Thu, 21 Jul 2016)

Log Message

[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.

Source/WebCore:

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:

Source/WebKit/mac:

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:]):

Source/WebKit2:

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):

Tools:

Migrate tests to use new SPI.

* TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm:
(RequiresUserActionForPlaybackTest::SetUp):
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::initializeWebViewConfiguration):

LayoutTests:

* media/video-playsinline.html: Updated.
* media/video-webkit-playsinline-expected.txt: Removed.
* media/video-webkit-playsinline.html: Removed.

Modified Paths

Removed Paths

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;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to