Diff
Modified: trunk/LayoutTests/ChangeLog (189111 => 189112)
--- trunk/LayoutTests/ChangeLog 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/LayoutTests/ChangeLog 2015-08-28 18:51:42 UTC (rev 189112)
@@ -1,3 +1,15 @@
+2015-08-28 Jer Noble <jer.no...@apple.com>
+
+ [iOS] Make the AllowsInlineMediaPlayback preference work in WebKit / WebKit2.
+ https://bugs.webkit.org/show_bug.cgi?id=147512
+
+ Reviewed by Anders Carlsson.
+
+ * media/video-fullscreeen-only-controls.html:
+ * media/video-fullscreeen-only-controls-expected.txt:
+ * media/video-fullscreeen-only-playback.html:
+ * media/video-fullscreeen-only-playback-expected.txt:
+
2015-08-28 Eric Carlson <eric.carl...@apple.com>
Media Session: MediaSession.releaseSession() renamed to deactivate()
Modified: trunk/LayoutTests/media/video-fullscreeen-only-controls-expected.txt (189111 => 189112)
--- trunk/LayoutTests/media/video-fullscreeen-only-controls-expected.txt 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/LayoutTests/media/video-fullscreeen-only-controls-expected.txt 2015-08-28 18:51:42 UTC (rev 189112)
@@ -1,7 +1,7 @@
This tests that when inline-playback is restricted, the video element's "controls" are always shown while inline.
-RUN(internals.setMediaSessionRestrictions('video', 'InlineVideoPlaybackRestricted'))
+RUN(internals.settings.setAllowsInlineMediaPlayback(false))
EXPECTED (video.hasAttribute('controls') == 'false') OK
EXPECTED (video.controls == 'false') OK
EXPECTED (shadowRoot = internals.shadowRoot(video) != 'null') OK
Modified: trunk/LayoutTests/media/video-fullscreeen-only-controls.html (189111 => 189112)
--- trunk/LayoutTests/media/video-fullscreeen-only-controls.html 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/LayoutTests/media/video-fullscreeen-only-controls.html 2015-08-28 18:51:42 UTC (rev 189112)
@@ -9,7 +9,7 @@
var shadowRoot;
var panel;
- run("internals.setMediaSessionRestrictions('video', 'InlineVideoPlaybackRestricted')");
+ run("internals.settings.setAllowsInlineMediaPlayback(false)");
var video = document.getElementById('video');
video.src = "" "content/test");
Modified: trunk/LayoutTests/media/video-fullscreeen-only-playback-expected.txt (189111 => 189112)
--- trunk/LayoutTests/media/video-fullscreeen-only-playback-expected.txt 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/LayoutTests/media/video-fullscreeen-only-playback-expected.txt 2015-08-28 18:51:42 UTC (rev 189112)
@@ -1,7 +1,7 @@
Test play() when <video> playback requires fullscreen.
-RUN(internals.setMediaSessionRestrictions('video', 'InlineVideoPlaybackRestricted'))
+internals.settings.setAllowsInlineMediaPlayback(false)
EVENT(canplaythrough)
EXPECTED (video.webkitSupportsFullscreen == 'true') OK
Modified: trunk/LayoutTests/media/video-fullscreeen-only-playback.html (189111 => 189112)
--- trunk/LayoutTests/media/video-fullscreeen-only-playback.html 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/LayoutTests/media/video-fullscreeen-only-playback.html 2015-08-28 18:51:42 UTC (rev 189112)
@@ -64,7 +64,7 @@
video.src = "" "content/test");
- run("internals.setMediaSessionRestrictions('video', 'InlineVideoPlaybackRestricted')");
+ run("internals.settings.setAllowsInlineMediaPlayback(false)");
consoleWrite("");
}
</script>
Modified: trunk/Source/WebCore/ChangeLog (189111 => 189112)
--- trunk/Source/WebCore/ChangeLog 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebCore/ChangeLog 2015-08-28 18:51:42 UTC (rev 189112)
@@ -1,3 +1,34 @@
+2015-08-28 Jer Noble <jer.no...@apple.com>
+
+ [iOS] Make the AllowsInlineMediaPlayback preference work in WebKit / WebKit2.
+ https://bugs.webkit.org/show_bug.cgi?id=147512
+
+ Reviewed by Anders Carlsson.
+
+ Updated existing tests to use the Setting rather than the Behavior Restriction.
+
+ Get rid of the sessionRestrictsInlineVideoPlayback() method and the InlineVideoPlaybackRestricted
+ restriction. Instead, just use the allowsInlineMediaPlayback() setting, and require
+ WebKit and WebKitLegacy clients to initialize the setting appropriately.
+
+ * html/MediaElementSession.cpp:
+ (WebCore::MediaElementSession::requiresFullscreenForVideoPlayback): Deleted.
+ * page/Settings.cpp: Add a new inlineMediaPlaybackRequiresPlaysInlineAttribute setting.
+ * page/Settings.in: Ditto.
+ * platform/audio/PlatformMediaSessionManager.cpp:
+ (WebCore::PlatformMediaSessionManager::sessionRestrictsInlineVideoPlayback): Deleted.
+ * platform/audio/PlatformMediaSessionManager.h:
+ * platform/audio/ios/MediaSessionManagerIOS.mm:
+ (WebCore::MediaSessionManageriOS::resetRestrictions): Deleted.
+ * testing/InternalSettings.cpp:
+ (WebCore::InternalSettings::Backup::Backup): Backup the allowsInlineMediaPlayback() setting value.
+ (WebCore::InternalSettings::Backup::restoreTo): Restore same.
+ (WebCore::InternalSettings::setAllowsInlineMediaPlayback): Set allowsInlineMediaPlayback().
+ * testing/InternalSettings.h:
+ * testing/InternalSettings.idl:
+ * testing/Internals.cpp:
+ (WebCore::Internals::setMediaSessionRestrictions): Deleted.
+
2015-08-28 Eric Carlson <eric.carl...@apple.com>
Media Session: MediaSession.releaseSession() renamed to deactivate()
Modified: trunk/Source/WebCore/html/MediaElementSession.cpp (189111 => 189112)
--- trunk/Source/WebCore/html/MediaElementSession.cpp 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebCore/html/MediaElementSession.cpp 2015-08-28 18:51:42 UTC (rev 189112)
@@ -360,22 +360,11 @@
if (pageExplicitlyAllowsElementToAutoplayInline(element))
return false;
- if (!PlatformMediaSessionManager::sharedManager().sessionRestrictsInlineVideoPlayback(*this))
- return false;
-
Settings* settings = element.document().settings();
if (!settings || !settings->allowsInlineMediaPlayback())
return true;
- if (element.fastHasAttribute(HTMLNames::webkit_playsinlineAttr))
- return false;
-
-#if PLATFORM(IOS)
- if (applicationIsDumpRenderTree())
- return false;
-#endif
-
- return true;
+ return settings->inlineMediaPlaybackRequiresPlaysInlineAttribute() && !element.fastHasAttribute(HTMLNames::webkit_playsinlineAttr);
}
bool MediaElementSession::allowsAutomaticMediaDataLoading(const HTMLMediaElement& element) const
Modified: trunk/Source/WebCore/page/Settings.cpp (189111 => 189112)
--- trunk/Source/WebCore/page/Settings.cpp 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebCore/page/Settings.cpp 2015-08-28 18:51:42 UTC (rev 189112)
@@ -122,6 +122,7 @@
static const bool defaultFixedBackgroundsPaintRelativeToDocument = true;
static const bool defaultAcceleratedCompositingForFixedPositionEnabled = true;
static const bool defaultAllowsInlineMediaPlayback = false;
+static const bool defaultInlineMediaPlaybackRequiresPlaysInlineAttribute = true;
static const bool defaultRequiresUserGestureForMediaPlayback = true;
static const bool defaultAudioPlaybackRequiresUserGesture = true;
static const bool defaultShouldRespectImageOrientation = true;
@@ -133,6 +134,7 @@
static const bool defaultFixedBackgroundsPaintRelativeToDocument = false;
static const bool defaultAcceleratedCompositingForFixedPositionEnabled = false;
static const bool defaultAllowsInlineMediaPlayback = true;
+static const bool defaultInlineMediaPlaybackRequiresPlaysInlineAttribute = false;
static const bool defaultRequiresUserGestureForMediaPlayback = false;
static const bool defaultAudioPlaybackRequiresUserGesture = false;
static const bool defaultShouldRespectImageOrientation = false;
Modified: trunk/Source/WebCore/page/Settings.in (189111 => 189112)
--- trunk/Source/WebCore/page/Settings.in 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebCore/page/Settings.in 2015-08-28 18:51:42 UTC (rev 189112)
@@ -128,6 +128,7 @@
requiresUserGestureForMediaPlayback initial=defaultRequiresUserGestureForMediaPlayback
audioPlaybackRequiresUserGesture initial=defaultAudioPlaybackRequiresUserGesture
allowsInlineMediaPlayback initial=defaultAllowsInlineMediaPlayback
+inlineMediaPlaybackRequiresPlaysInlineAttribute initial=defaultInlineMediaPlaybackRequiresPlaysInlineAttribute
allowsPictureInPictureMediaPlayback initial=defaultAllowsPictureInPictureMediaPlayback
mediaControlsScaleWithPageZoom initial=defaultMediaControlsScaleWithPageZoom
passwordEchoEnabled initial=false
Modified: trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp (189111 => 189112)
--- trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp 2015-08-28 18:51:42 UTC (rev 189112)
@@ -267,15 +267,6 @@
return m_sessions[0];
}
-bool PlatformMediaSessionManager::sessionRestrictsInlineVideoPlayback(const PlatformMediaSession& session) const
-{
- PlatformMediaSession::MediaType sessionType = session.presentationType();
- if (sessionType != PlatformMediaSession::Video)
- return false;
-
- return m_restrictions[sessionType] & InlineVideoPlaybackRestricted;
-}
-
bool PlatformMediaSessionManager::sessionCanLoadMedia(const PlatformMediaSession& session) const
{
return session.state() == PlatformMediaSession::Playing || !session.isHidden() || session.isPlayingToWirelessPlaybackTarget();
Modified: trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h (189111 => 189112)
--- trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h 2015-08-28 18:51:42 UTC (rev 189112)
@@ -81,9 +81,6 @@
virtual bool sessionWillBeginPlayback(PlatformMediaSession&);
virtual void sessionWillEndPlayback(PlatformMediaSession&);
-
- bool sessionRestrictsInlineVideoPlayback(const PlatformMediaSession&) const;
-
virtual bool sessionCanLoadMedia(const PlatformMediaSession&) const;
#if PLATFORM(IOS)
Modified: trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm (189111 => 189112)
--- trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm 2015-08-28 18:51:42 UTC (rev 189112)
@@ -34,7 +34,6 @@
#import "PlatformMediaSession.h"
#import "SoftLinking.h"
#import "SystemMemory.h"
-#import "WebCoreSystemInterface.h"
#import "WebCoreThreadRun.h"
#import <AVFoundation/AVAudioSession.h>
#import <MediaPlayer/MPMediaItem.h>
@@ -148,10 +147,6 @@
PlatformMediaSessionManager::resetRestrictions();
- static wkDeviceClass deviceClass = iosDeviceClass();
- if (deviceClass == wkDeviceClassiPhone || deviceClass == wkDeviceClassiPod)
- addRestriction(PlatformMediaSession::Video, InlineVideoPlaybackRestricted);
-
if (ramSize() < systemMemoryRequiredForVideoInBackgroundTabs) {
LOG(Media, "MediaSessionManageriOS::resetRestrictions - restricting video in background tabs because system memory = %zul", ramSize());
addRestriction(PlatformMediaSession::Video, BackgroundTabPlaybackRestricted);
Modified: trunk/Source/WebCore/testing/InternalSettings.cpp (189111 => 189112)
--- trunk/Source/WebCore/testing/InternalSettings.cpp 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebCore/testing/InternalSettings.cpp 2015-08-28 18:51:42 UTC (rev 189112)
@@ -101,6 +101,8 @@
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
, m_allowsAirPlayForMediaPlayback(settings.allowsAirPlayForMediaPlayback())
#endif
+ , m_allowsInlineMediaPlayback(settings.allowsInlineMediaPlayback())
+ , m_inlineMediaPlaybackRequiresPlaysInlineAttribute(settings.inlineMediaPlaybackRequiresPlaysInlineAttribute())
{
}
@@ -165,6 +167,8 @@
#if ENABLE(TOUCH_EVENTS)
settings.setTouchEventEmulationEnabled(m_touchEventEmulationEnabled);
#endif
+ settings.setAllowsInlineMediaPlayback(m_allowsInlineMediaPlayback);
+ settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(m_inlineMediaPlaybackRequiresPlaysInlineAttribute);
RuntimeEnabledFeatures::sharedFeatures().setPluginReplacementEnabled(m_pluginReplacementEnabled);
}
@@ -524,6 +528,18 @@
settings()->setScrollingTreeIncludesFrames(enabled);
}
+void InternalSettings::setAllowsInlineMediaPlayback(bool allows, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setAllowsInlineMediaPlayback(allows);
+}
+
+void InternalSettings::setInlineMediaPlaybackRequiresPlaysInlineAttribute(bool requires, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setInlineMediaPlaybackRequiresPlaysInlineAttribute(requires);
+}
+
// If you add to this list, make sure that you update the Backup class for test reproducability!
}
Modified: trunk/Source/WebCore/testing/InternalSettings.h (189111 => 189112)
--- trunk/Source/WebCore/testing/InternalSettings.h 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebCore/testing/InternalSettings.h 2015-08-28 18:51:42 UTC (rev 189112)
@@ -99,6 +99,8 @@
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
bool m_allowsAirPlayForMediaPlayback;
#endif
+ bool m_allowsInlineMediaPlayback;
+ bool m_inlineMediaPlaybackRequiresPlaysInlineAttribute;
};
static PassRefPtr<InternalSettings> create(Page* page)
@@ -144,6 +146,8 @@
void setBackgroundShouldExtendBeyondPage(bool, ExceptionCode&);
void setShouldConvertPositionStyleOnCopy(bool, ExceptionCode&);
void setScrollingTreeIncludesFrames(bool, ExceptionCode&);
+ void setAllowsInlineMediaPlayback(bool, ExceptionCode&);
+ void setInlineMediaPlaybackRequiresPlaysInlineAttribute(bool, ExceptionCode&);
private:
explicit InternalSettings(Page*);
Modified: trunk/Source/WebCore/testing/InternalSettings.idl (189111 => 189112)
--- trunk/Source/WebCore/testing/InternalSettings.idl 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebCore/testing/InternalSettings.idl 2015-08-28 18:51:42 UTC (rev 189112)
@@ -74,5 +74,7 @@
[RaisesException] void setScrollingTreeIncludesFrames(boolean enabled);
[RaisesException] void setMinimumTimerInterval(unrestricted double intervalInSeconds);
+ [RaisesException] void setAllowsInlineMediaPlayback(boolean allows);
+ [RaisesException] void setInlineMediaPlaybackRequiresPlaysInlineAttribute(boolean requires);
};
Modified: trunk/Source/WebKit/mac/ChangeLog (189111 => 189112)
--- trunk/Source/WebKit/mac/ChangeLog 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit/mac/ChangeLog 2015-08-28 18:51:42 UTC (rev 189112)
@@ -1,3 +1,23 @@
+2015-08-28 Jer Noble <jer.no...@apple.com>
+
+ [iOS] Make the AllowsInlineMediaPlayback preference work in WebKit / WebKit2.
+ https://bugs.webkit.org/show_bug.cgi?id=147512
+
+ Reviewed by Anders Carlsson.
+
+ Add a new preference, inlineMediaPlaybackRequiresPlaysInlineAttribute, which defaults to
+ NO on iPad and YES on iPhone and iPod.
+
+ * WebView/WebPreferenceKeysPrivate.h:
+ * WebView/WebPreferences.mm:
+ (+[WebPreferences initialize]): Default the value of WebKitAllowsInlineMediaPlaybackPreferenceKey to
+ YES on iPad and NO on iPhone and iPod.
+ (-[WebPreferences inlineMediaPlaybackRequiresPlaysInlineAttribute]):
+ (-[WebPreferences setInlineMediaPlaybackRequiresPlaysInlineAttribute:]):
+ * WebView/WebPreferencesPrivate.h:
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]):
+
2015-08-28 Timothy Horton <timothy_hor...@apple.com>
[Mac] Right-clicking on GIFs spins the UI process for a while
Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (189111 => 189112)
--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2015-08-28 18:51:42 UTC (rev 189112)
@@ -121,6 +121,7 @@
#define WebKitHixie76WebSocketProtocolEnabledKey @"WebKitHixie76WebSocketProtocolEnabled"
#define WebKitRequiresUserGestureForMediaPlaybackPreferenceKey @"WebKitMediaPlaybackRequiresUserGesture"
#define WebKitAllowsInlineMediaPlaybackPreferenceKey @"WebKitMediaPlaybackAllowsInline"
+#define WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey @"InlineMediaPlaybackRequiresPlaysInlineAttribute"
#define WebKitAllowsPictureInPictureMediaPlaybackPreferenceKey @"WebKitAllowsPictureInPictureMediaPlayback"
#define WebKitAllowsAirPlayForMediaPlaybackPreferenceKey @"WebKitMediaPlaybackAllowsAirPlay"
#define WebKitMediaControlsScaleWithPageZoomPreferenceKey @"WebKitMediaControlsScaleWithPageZoom"
Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (189111 => 189112)
--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2015-08-28 18:51:42 UTC (rev 189112)
@@ -395,6 +395,9 @@
JSC::initializeThreading();
WTF::initializeMainThreadToProcessMainThread();
RunLoop::initializeMainRunLoop();
+#else
+ bool allowsInlineMediaPlayback = WKGetDeviceClass() == WKDeviceClassiPad;
+ bool requiresPlaysInlineAttribute = !allowsInlineMediaPlayback;
#endif
InitWebCoreSystemInterface();
@@ -519,6 +522,7 @@
#if !PLATFORM(IOS)
[NSNumber numberWithBool:NO], WebKitRequiresUserGestureForMediaPlaybackPreferenceKey,
[NSNumber numberWithBool:YES], WebKitAllowsInlineMediaPlaybackPreferenceKey,
+ [NSNumber numberWithBool:YES], WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey,
[NSNumber numberWithBool:YES], WebKitMediaControlsScaleWithPageZoomPreferenceKey,
[NSNumber numberWithBool:NO], WebKitWebAudioEnabledPreferenceKey,
[NSNumber numberWithBool:YES], WebKitBackspaceKeyNavigationEnabledKey,
@@ -529,7 +533,8 @@
[NSNumber numberWithBool:NO], WebKitShouldRespectImageOrientationKey,
#else
[NSNumber numberWithBool:YES], WebKitRequiresUserGestureForMediaPlaybackPreferenceKey,
- [NSNumber numberWithBool:NO], WebKitAllowsInlineMediaPlaybackPreferenceKey,
+ [NSNumber numberWithBool:allowsInlineMediaPlayback], WebKitAllowsInlineMediaPlaybackPreferenceKey,
+ [NSNumber numberWithBool:requiresPlaysInlineAttribute], WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey,
[NSNumber numberWithBool:NO], WebKitMediaControlsScaleWithPageZoomPreferenceKey,
[NSNumber numberWithUnsignedInt:AudioSession::None], WebKitAudioSessionCategoryOverride,
#if HAVE(AVKIT)
@@ -2198,6 +2203,16 @@
[self _setBoolValue:flag forKey:WebKitAllowsInlineMediaPlaybackPreferenceKey];
}
+- (BOOL)inlineMediaPlaybackRequiresPlaysInlineAttribute
+{
+ return [self _boolValueForKey:WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey];
+}
+
+- (void)setInlineMediaPlaybackRequiresPlaysInlineAttribute:(BOOL)flag
+{
+ [self _setBoolValue:flag forKey:WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey];
+}
+
- (BOOL)mediaControlsScaleWithPageZoom
{
return [self _boolValueForKey:WebKitMediaControlsScaleWithPageZoomPreferenceKey];
Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (189111 => 189112)
--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2015-08-28 18:51:42 UTC (rev 189112)
@@ -248,6 +248,9 @@
- (void)setMediaPlaybackAllowsInline:(BOOL)flag;
- (BOOL)mediaPlaybackAllowsInline;
+- (void)setInlineMediaPlaybackRequiresPlaysInlineAttribute:(BOOL)flag;
+- (BOOL)inlineMediaPlaybackRequiresPlaysInlineAttribute;
+
- (void)setMediaControlsScaleWithPageZoom:(BOOL)flag;
- (BOOL)mediaControlsScaleWithPageZoom;
Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (189111 => 189112)
--- trunk/Source/WebKit/mac/WebView/WebView.mm 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm 2015-08-28 18:51:42 UTC (rev 189112)
@@ -2304,6 +2304,7 @@
settings.setRequiresUserGestureForMediaPlayback([preferences mediaPlaybackRequiresUserGesture]);
settings.setAllowsInlineMediaPlayback([preferences mediaPlaybackAllowsInline]);
+ settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute([preferences inlineMediaPlaybackRequiresPlaysInlineAttribute]);
settings.setAllowsPictureInPictureMediaPlayback([preferences allowsPictureInPictureMediaPlayback] && shouldAllowPictureInPictureMediaPlayback());
settings.setMediaControlsScaleWithPageZoom([preferences mediaControlsScaleWithPageZoom]);
settings.setSuppressesIncrementalRendering([preferences suppressesIncrementalRendering]);
Modified: trunk/Source/WebKit2/ChangeLog (189111 => 189112)
--- trunk/Source/WebKit2/ChangeLog 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit2/ChangeLog 2015-08-28 18:51:42 UTC (rev 189112)
@@ -1,3 +1,32 @@
+2015-08-28 Jer Noble <jer.no...@apple.com>
+
+ [iOS] Make the AllowsInlineMediaPlayback preference work in WebKit / WebKit2.
+ https://bugs.webkit.org/show_bug.cgi?id=147512
+
+ Reviewed by Anders Carlsson.
+
+ Default the value of allowsInlineMediaPlayback to YES on iPad and NO on iPhone and iPod.
+ Add a new configuration property, _inlineMediaPlaybackRequiresPlaysInlineAttribute, which
+ defaults to NO on iPad and YES on iPhone and iPad.
+
+ * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
+ (-[WKWebViewConfiguration init]):
+ * Shared/WebPreferencesDefinitions.h:
+ * UIProcess/API/C/WKPreferences.cpp:
+ (WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute):
+ (WKPreferencesGetInlineMediaPlaybackRequiresPlaysInlineAttribute):
+ * UIProcess/API/C/WKPreferencesRefPrivate.h:
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView initWithFrame:configuration:]):
+ * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
+ (-[WKWebViewConfiguration init]):
+ (-[WKWebViewConfiguration copyWithZone:]):
+ (-[WKWebViewConfiguration _inlineMediaPlaybackRequiresPlaysInlineAttribute]):
+ (-[WKWebViewConfiguration _setInlineMediaPlaybackRequiresPlaysInlineAttribute:]):
+ * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::updatePreferences):
+
2015-08-28 Timothy Horton <timothy_hor...@apple.com>
Add navigation gesture callbacks to WKPageNavigationClient
Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (189111 => 189112)
--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2015-08-28 18:51:42 UTC (rev 189112)
@@ -57,6 +57,7 @@
#define DEFAULT_MINIMUM_FONT_ZOOM_SIZE WKGetMinimumZoomFontSize()
#define DEFAULT_PASSWORD_ECHO_ENABLED true
#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK false
+#define DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE true
#define DEFAULT_REQUIRES_USER_GESTURE_FOR_MEDIA_PLAYBACK true
#define DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM false
#define DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED false
@@ -69,6 +70,7 @@
#define DEFAULT_MINIMUM_FONT_ZOOM_SIZE 0
#define DEFAULT_PASSWORD_ECHO_ENABLED false
#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK true
+#define DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE false
#define DEFAULT_REQUIRES_USER_GESTURE_FOR_MEDIA_PLAYBACK false
#define DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM true
#define DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED true
@@ -132,6 +134,7 @@
macro(AVFoundationEnabled, isAVFoundationEnabled, Bool, bool, true) \
macro(RequiresUserGestureForMediaPlayback, requiresUserGestureForMediaPlayback, Bool, bool, DEFAULT_REQUIRES_USER_GESTURE_FOR_MEDIA_PLAYBACK) \
macro(AllowsInlineMediaPlayback, allowsInlineMediaPlayback, Bool, bool, DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK) \
+ macro(InlineMediaPlaybackRequiresPlaysInlineAttribute, inlineMediaPlaybackRequiresPlaysInlineAttribute, Bool, bool, DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE) \
macro(AllowsPictureInPictureMediaPlayback, allowsPictureInPictureMediaPlayback, Bool, bool, true) \
macro(AllowsAirPlayForMediaPlayback, allowsAirPlayForMediaPlayback, Bool, bool, true) \
macro(MediaControlsScaleWithPageZoom, mediaControlsScaleWithPageZoom, Bool, bool, DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM) \
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (189111 => 189112)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2015-08-28 18:51:42 UTC (rev 189112)
@@ -748,6 +748,16 @@
return toImpl(preferencesRef)->allowsInlineMediaPlayback();
}
+void WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute(WKPreferencesRef preferencesRef, bool flag)
+{
+ toImpl(preferencesRef)->setInlineMediaPlaybackRequiresPlaysInlineAttribute(flag);
+}
+
+bool WKPreferencesGetInlineMediaPlaybackRequiresPlaysInlineAttribute(WKPreferencesRef preferencesRef)
+{
+ return toImpl(preferencesRef)->inlineMediaPlaybackRequiresPlaysInlineAttribute();
+}
+
void WKPreferencesSetMediaControlsScaleWithPageZoom(WKPreferencesRef preferencesRef, bool flag)
{
toImpl(preferencesRef)->setMediaControlsScaleWithPageZoom(flag);
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h (189111 => 189112)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h 2015-08-28 18:51:42 UTC (rev 189112)
@@ -177,6 +177,10 @@
WK_EXPORT void WKPreferencesSetMediaPlaybackAllowsInline(WKPreferencesRef preferencesRef, bool flag);
WK_EXPORT bool WKPreferencesGetMediaPlaybackAllowsInline(WKPreferencesRef preferencesRef);
+// Defaults to false.
+WK_EXPORT void WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute(WKPreferencesRef preferencesRef, bool flag);
+WK_EXPORT bool WKPreferencesGetInlineMediaPlaybackRequiresPlaysInlineAttribute(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 (189111 => 189112)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2015-08-28 18:51:42 UTC (rev 189112)
@@ -327,6 +327,7 @@
pageConfiguration->setAlwaysRunsAtForegroundPriority([_configuration _alwaysRunsAtForegroundPriority]);
pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::allowsInlineMediaPlaybackKey(), WebKit::WebPreferencesStore::Value(!![_configuration allowsInlineMediaPlayback]));
+ pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::inlineMediaPlaybackRequiresPlaysInlineAttributeKey(), WebKit::WebPreferencesStore::Value(!![_configuration _inlineMediaPlaybackRequiresPlaysInlineAttribute]));
pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::allowsPictureInPictureMediaPlaybackKey(), WebKit::WebPreferencesStore::Value(!![_configuration allowsPictureInPictureMediaPlayback] && shouldAllowPictureInPictureMediaPlayback()));
pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::requiresUserGestureForMediaPlaybackKey(), WebKit::WebPreferencesStore::Value(!![_configuration requiresUserActionForMediaPlayback]));
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm (189111 => 189112)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2015-08-28 18:51:42 UTC (rev 189112)
@@ -40,6 +40,7 @@
#if PLATFORM(IOS)
#import "UIKitSPI.h"
+#import "WebKitSystemInterfaceIOS.h"
#endif
template<typename T> class LazyInitialized {
@@ -94,6 +95,8 @@
#if PLATFORM(IOS)
LazyInitialized<RetainPtr<WKWebViewContentProviderRegistry>> _contentProviderRegistry;
BOOL _alwaysRunsAtForegroundPriority;
+ BOOL _allowsInlineMediaPlayback;
+ BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute;
#endif
}
@@ -105,6 +108,8 @@
#if PLATFORM(IOS)
_requiresUserActionForMediaPlayback = YES;
_allowsPictureInPictureMediaPlayback = YES;
+ _allowsInlineMediaPlayback = WKGetDeviceClass() == WKDeviceClassiPad;
+ _inlineMediaPlaybackRequiresPlaysInlineAttribute = !_allowsInlineMediaPlayback;
#endif
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
@@ -140,6 +145,7 @@
#if PLATFORM(IOS)
configuration->_allowsInlineMediaPlayback = self->_allowsInlineMediaPlayback;
+ configuration->_inlineMediaPlaybackRequiresPlaysInlineAttribute = self->_inlineMediaPlaybackRequiresPlaysInlineAttribute;
configuration->_allowsPictureInPictureMediaPlayback = self->_allowsPictureInPictureMediaPlayback;
configuration->_alwaysRunsAtForegroundPriority = _alwaysRunsAtForegroundPriority;
configuration->_requiresUserActionForMediaPlayback = self->_requiresUserActionForMediaPlayback;
@@ -335,6 +341,16 @@
{
_alwaysRunsAtForegroundPriority = alwaysRunsAtForegroundPriority;
}
+
+- (BOOL)_inlineMediaPlaybackRequiresPlaysInlineAttribute
+{
+ return _inlineMediaPlaybackRequiresPlaysInlineAttribute;
+}
+
+- (void)_setInlineMediaPlaybackRequiresPlaysInlineAttribute:(BOOL)requires
+{
+ _inlineMediaPlaybackRequiresPlaysInlineAttribute = requires;
+}
#endif
@end
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h (189111 => 189112)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h 2015-08-28 18:51:42 UTC (rev 189112)
@@ -45,6 +45,8 @@
#if TARGET_OS_IPHONE
@property (nonatomic, setter=_setAlwaysRunsAtForegroundPriority:) BOOL _alwaysRunsAtForegroundPriority WK_AVAILABLE(NA, WK_IOS_TBA);
+
+@property (nonatomic, setter=_setInlineMediaPlaybackRequiresPlaysInlineAttribute:) BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute WK_AVAILABLE(NA, WK_IOS_TBA);
#endif
@property (nonatomic, strong, setter=_setVisitedLinkProvider:) _WKVisitedLinkProvider *_visitedLinkProvider WK_DEPRECATED(10_10, WK_MAC_TBA, 8_0, WK_IOS_TBA, "Please use visitedLinkStore instead");
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (189111 => 189112)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-08-28 18:51:42 UTC (rev 189112)
@@ -2734,6 +2734,7 @@
settings.setAccelerated2dCanvasEnabled(store.getBoolValueForKey(WebPreferencesKey::accelerated2dCanvasEnabledKey()));
settings.setRequiresUserGestureForMediaPlayback(store.getBoolValueForKey(WebPreferencesKey::requiresUserGestureForMediaPlaybackKey()));
settings.setAllowsInlineMediaPlayback(store.getBoolValueForKey(WebPreferencesKey::allowsInlineMediaPlaybackKey()));
+ settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(store.getBoolValueForKey(WebPreferencesKey::inlineMediaPlaybackRequiresPlaysInlineAttributeKey()));
settings.setAllowsPictureInPictureMediaPlayback(store.getBoolValueForKey(WebPreferencesKey::allowsPictureInPictureMediaPlaybackKey()));
settings.setMediaControlsScaleWithPageZoom(store.getBoolValueForKey(WebPreferencesKey::mediaControlsScaleWithPageZoomKey()));
settings.setMockScrollbarsEnabled(store.getBoolValueForKey(WebPreferencesKey::mockScrollbarsEnabledKey()));
Modified: trunk/Tools/ChangeLog (189111 => 189112)
--- trunk/Tools/ChangeLog 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Tools/ChangeLog 2015-08-28 18:51:42 UTC (rev 189112)
@@ -1,3 +1,18 @@
+2015-08-28 Jer Noble <jer.no...@apple.com>
+
+ [iOS] Make the AllowsInlineMediaPlayback preference work in WebKit / WebKit2.
+ https://bugs.webkit.org/show_bug.cgi?id=147512
+
+ Reviewed by Anders Carlsson.
+
+ Set the value of WebKitAllowsInlineMediaPlayback / WKPreferencesSetMediaPlaybackAllowsInline()
+ to a consistent (true) value.
+
+ * DumpRenderTree/mac/DumpRenderTree.mm:
+ (setDefaultsToConsistentValuesForTesting):
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::resetPreferencesToConsistentValues):
+
2015-08-28 Tim Horton <timothy_hor...@apple.com>
Add navigation gesture callbacks to WKPageNavigationClient
Modified: trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm (189111 => 189112)
--- trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm 2015-08-28 18:51:42 UTC (rev 189112)
@@ -1005,6 +1005,8 @@
@"AppleLanguages": @[ @"en" ],
WebKitEnableFullDocumentTeardownPreferenceKey: @YES,
WebKitFullScreenEnabledPreferenceKey: @YES,
+ WebKitAllowsInlineMediaPlaybackPreferenceKey: @YES,
+ WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey: @NO,
@"UseWebKitWebInspector": @YES,
#if !PLATFORM(IOS)
@"NSPreferredSpellServerLanguage": @"en_US",
Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (189111 => 189112)
--- trunk/Tools/WebKitTestRunner/TestController.cpp 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp 2015-08-28 18:51:42 UTC (rev 189112)
@@ -638,6 +638,9 @@
// FIXME: We should be testing the default.
WKPreferencesSetStorageBlockingPolicy(preferences, kWKAllowAllStorage);
+ WKPreferencesSetMediaPlaybackAllowsInline(preferences, true);
+ WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute(preferences, false);
+
WKCookieManagerDeleteAllCookies(WKContextGetCookieManager(m_context.get()));
platformResetPreferencesToConsistentValues();
Modified: trunk/Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm (189111 => 189112)
--- trunk/Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm 2015-08-28 18:49:02 UTC (rev 189111)
+++ trunk/Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm 2015-08-28 18:51:42 UTC (rev 189112)
@@ -55,7 +55,12 @@
globalWebViewConfiguration.processPool = [[WKProcessPool alloc] _initWithConfiguration:(_WKProcessPoolConfiguration *)contextConfiguration];
globalWebViewConfiguration.websiteDataStore = (WKWebsiteDataStore *)WKContextGetWebsiteDataStore(context);
+
+#if TARGET_OS_IPHONE
+ globalWebViewConfiguration.allowsInlineMediaPlayback = YES;
+ globalWebViewConfiguration._inlineMediaPlaybackRequiresPlaysInlineAttribute = NO;
#endif
+#endif
}
WKPreferencesRef TestController::platformPreferences()