Diff
Modified: trunk/LayoutTests/ChangeLog (201186 => 201187)
--- trunk/LayoutTests/ChangeLog 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/LayoutTests/ChangeLog 2016-05-19 21:59:12 UTC (rev 201187)
@@ -1,3 +1,16 @@
+2016-05-19 Jer Noble <[email protected]>
+
+ [IOS] Add setting to allow playback to continue inline after exiting fullscreen.
+ https://bugs.webkit.org/show_bug.cgi?id=157912
+
+ Reviewed by Eric Carlson.
+
+ * media/media-fullscreen-return-to-inline-expected.txt: Added.
+ * media/media-fullscreen-return-to-inline.html: Added.
+ * media/video-test.js:
+ (runWithKeyDown.eventName.window.testRunner.eventSender.keyDown.string_appeared_here.string_appeared_here.thunk):
+ (runWithKeyDown):
+
2016-05-19 Joseph Pecoraro <[email protected]>
Web Inspector: HeapSnapshot Instances view should remove dead objects
Added: trunk/LayoutTests/media/media-fullscreen-return-to-inline-expected.txt (0 => 201187)
--- trunk/LayoutTests/media/media-fullscreen-return-to-inline-expected.txt (rev 0)
+++ trunk/LayoutTests/media/media-fullscreen-return-to-inline-expected.txt 2016-05-19 21:59:12 UTC (rev 201187)
@@ -0,0 +1,17 @@
+
+RUN(internals.settings.setAllowsInlineMediaPlayback(false))
+RUN(internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(false))
+RUN(video.src = "" "content/test"))
+EVENT(canplaythrough)
+RUN(video.play())
+EVENT(webkitfullscreenchange)
+RUN(video.webkitExitFullscreen())
+EVENT(pause)
+RUN(internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(true))
+RUN(video.play())
+EVENT(webkitfullscreenchange)
+RUN(video.webkitExitFullscreen())
+EVENT(webkitfullscreenchange)
+EXPECTED (video.paused == 'false') OK
+END OF TEST
+
Added: trunk/LayoutTests/media/media-fullscreen-return-to-inline.html (0 => 201187)
--- trunk/LayoutTests/media/media-fullscreen-return-to-inline.html (rev 0)
+++ trunk/LayoutTests/media/media-fullscreen-return-to-inline.html 2016-05-19 21:59:12 UTC (rev 201187)
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>media-fullscreen-return-to-inline</title>
+
+ <script src=""
+ <script src=""
+
+ <script>
+ function go()
+ {
+ findMediaElement();
+ run('internals.settings.setAllowsInlineMediaPlayback(false)');
+ run('internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(false)');
+ run('video.src = "" "content/test")');
+ waitForEventOnce('canplaythrough', canplaythrough);
+ }
+
+ function canplaythrough()
+ {
+ runWithKeyDown('video.play()');
+ waitForEventOnce('webkitfullscreenchange', beginfullscreen1);
+ }
+
+ function beginfullscreen1()
+ {
+ run('video.webkitExitFullscreen()');
+ waitForEventOnce('pause', pause);
+ }
+
+ function pause()
+ {
+ run('internals.settings.setAllowsInlineMediaPlaybackAfterFullscreen(true)');
+ runWithKeyDown('video.play()');
+ waitForEventOnce('webkitfullscreenchange', beginfullscreen2);
+ }
+
+ function beginfullscreen2()
+ {
+ run('video.webkitExitFullscreen()');
+ waitForEventOnce('webkitfullscreenchange', endfullscreen);
+ }
+
+ function endfullscreen()
+ {
+ testExpected('video.paused', false);
+ endTest();
+ }
+ </script>
+
+</head>
+
+<body _onload_="go()">
+ <video controls></video>
+</body>
+</html>
Modified: trunk/LayoutTests/media/video-test.js (201186 => 201187)
--- trunk/LayoutTests/media/video-test.js 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/LayoutTests/media/video-test.js 2016-05-19 21:59:12 UTC (rev 201187)
@@ -396,7 +396,10 @@
function thunk() {
document.removeEventListener(eventName, thunk, false);
- fn();
+ if (typeof fn === 'function')
+ fn();
+ else
+ run(fn);
}
document.addEventListener(eventName, thunk, false);
Modified: trunk/Source/WebCore/ChangeLog (201186 => 201187)
--- trunk/Source/WebCore/ChangeLog 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebCore/ChangeLog 2016-05-19 21:59:12 UTC (rev 201187)
@@ -1,3 +1,18 @@
+2016-05-19 Jer Noble <[email protected]>
+
+ [IOS] Add setting to allow playback to continue inline after exiting fullscreen.
+ https://bugs.webkit.org/show_bug.cgi?id=157912
+
+ Reviewed by Eric Carlson.
+
+ Test: media/media-fullscreen-return-to-inline.html
+
+ Allow playback to continue when exiting fullscreen via settings.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::exitFullscreen):
+ * page/Settings.in:
+
2016-05-19 Dave Hyatt <[email protected]>
Fix childrenInline() check in markAllDescendantsWithFloatsForLayout()
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (201186 => 201187)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2016-05-19 21:59:12 UTC (rev 201187)
@@ -5408,7 +5408,7 @@
if (hasMediaControls())
mediaControls()->exitedFullscreen();
if (document().page() && is<HTMLVideoElement>(*this)) {
- if (m_mediaSession->requiresFullscreenForVideoPlayback(*this))
+ if (m_mediaSession->requiresFullscreenForVideoPlayback(*this) && (!document().settings() || !document().settings()->allowsInlineMediaPlaybackAfterFullscreen()))
pauseInternal();
if (document().page()->chrome().client().supportsVideoFullscreen(oldVideoFullscreenMode)) {
Modified: trunk/Source/WebCore/page/Settings.in (201186 => 201187)
--- trunk/Source/WebCore/page/Settings.in 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebCore/page/Settings.in 2016-05-19 21:59:12 UTC (rev 201187)
@@ -130,6 +130,7 @@
audioPlaybackRequiresUserGesture initial=defaultAudioPlaybackRequiresUserGesture
mainContentUserGestureOverrideEnabled initial=false
allowsInlineMediaPlayback initial=defaultAllowsInlineMediaPlayback
+allowsInlineMediaPlaybackAfterFullscreen initial=true
inlineMediaPlaybackRequiresPlaysInlineAttribute initial=defaultInlineMediaPlaybackRequiresPlaysInlineAttribute
allowsPictureInPictureMediaPlayback initial=defaultAllowsPictureInPictureMediaPlayback
mediaControlsScaleWithPageZoom initial=defaultMediaControlsScaleWithPageZoom
Modified: trunk/Source/WebCore/testing/InternalSettings.cpp (201186 => 201187)
--- trunk/Source/WebCore/testing/InternalSettings.cpp 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebCore/testing/InternalSettings.cpp 2016-05-19 21:59:12 UTC (rev 201187)
@@ -103,6 +103,7 @@
, m_allowsAirPlayForMediaPlayback(settings.allowsAirPlayForMediaPlayback())
#endif
, m_allowsInlineMediaPlayback(settings.allowsInlineMediaPlayback())
+ , m_allowsInlineMediaPlaybackAfterFullscreen(settings.allowsInlineMediaPlaybackAfterFullscreen())
, m_inlineMediaPlaybackRequiresPlaysInlineAttribute(settings.inlineMediaPlaybackRequiresPlaysInlineAttribute())
#if ENABLE(INDEXED_DATABASE_IN_WORKERS)
, m_indexedDBWorkersEnabled(RuntimeEnabledFeatures::sharedFeatures().indexedDBWorkersEnabled())
@@ -175,6 +176,7 @@
settings.setTouchEventEmulationEnabled(m_touchEventEmulationEnabled);
#endif
settings.setAllowsInlineMediaPlayback(m_allowsInlineMediaPlayback);
+ settings.setAllowsInlineMediaPlaybackAfterFullscreen(m_allowsInlineMediaPlaybackAfterFullscreen);
settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(m_inlineMediaPlaybackRequiresPlaysInlineAttribute);
RuntimeEnabledFeatures::sharedFeatures().setPluginReplacementEnabled(m_pluginReplacementEnabled);
#if ENABLE(INDEXED_DATABASE_IN_WORKERS)
@@ -541,6 +543,12 @@
settings()->setAllowsInlineMediaPlayback(allows);
}
+void InternalSettings::setAllowsInlineMediaPlaybackAfterFullscreen(bool allows, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setAllowsInlineMediaPlaybackAfterFullscreen(allows);
+}
+
void InternalSettings::setInlineMediaPlaybackRequiresPlaysInlineAttribute(bool requires, ExceptionCode& ec)
{
InternalSettingsGuardForSettings();
Modified: trunk/Source/WebCore/testing/InternalSettings.h (201186 => 201187)
--- trunk/Source/WebCore/testing/InternalSettings.h 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebCore/testing/InternalSettings.h 2016-05-19 21:59:12 UTC (rev 201187)
@@ -103,6 +103,7 @@
bool m_allowsAirPlayForMediaPlayback;
#endif
bool m_allowsInlineMediaPlayback;
+ bool m_allowsInlineMediaPlaybackAfterFullscreen;
bool m_inlineMediaPlaybackRequiresPlaysInlineAttribute;
#if ENABLE(INDEXED_DATABASE_IN_WORKERS)
bool m_indexedDBWorkersEnabled;
@@ -154,6 +155,7 @@
void setShouldConvertPositionStyleOnCopy(bool, ExceptionCode&);
void setScrollingTreeIncludesFrames(bool, ExceptionCode&);
void setAllowsInlineMediaPlayback(bool, ExceptionCode&);
+ void setAllowsInlineMediaPlaybackAfterFullscreen(bool, ExceptionCode&);
void setInlineMediaPlaybackRequiresPlaysInlineAttribute(bool, ExceptionCode&);
void setIndexedDBWorkersEnabled(bool, ExceptionCode&);
String userInterfaceDirectionPolicy(ExceptionCode&);
Modified: trunk/Source/WebCore/testing/InternalSettings.idl (201186 => 201187)
--- trunk/Source/WebCore/testing/InternalSettings.idl 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebCore/testing/InternalSettings.idl 2016-05-19 21:59:12 UTC (rev 201187)
@@ -73,6 +73,7 @@
[RaisesException] void setMinimumTimerInterval(unrestricted double intervalInSeconds);
[RaisesException] void setAllowsInlineMediaPlayback(boolean allows);
+ [RaisesException] void setAllowsInlineMediaPlaybackAfterFullscreen(boolean allows);
[RaisesException] void setInlineMediaPlaybackRequiresPlaysInlineAttribute(boolean requires);
[RaisesException] void setIndexedDBWorkersEnabled(boolean requires);
Modified: trunk/Source/WebKit/mac/ChangeLog (201186 => 201187)
--- trunk/Source/WebKit/mac/ChangeLog 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebKit/mac/ChangeLog 2016-05-19 21:59:12 UTC (rev 201187)
@@ -1,3 +1,22 @@
+2016-05-19 Jer Noble <[email protected]>
+
+ [IOS] Add setting to allow playback to continue inline after exiting fullscreen.
+ https://bugs.webkit.org/show_bug.cgi?id=157912
+
+ Reviewed by Eric Carlson.
+
+ Add a preference to control whether media should be allowed to continue playing inline when
+ exiting fullscreen.
+
+ * WebView/WebPreferenceKeysPrivate.h:
+ * WebView/WebPreferences.mm:
+ (+[WebPreferences initialize]):
+ (-[WebPreferences allowsInlineMediaPlaybackAfterFullscreen]):
+ (-[WebPreferences setAllowsInlineMediaPlaybackAfterFullscreen:]):
+ * WebView/WebPreferencesPrivate.h:
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]):
+
2016-05-18 Brady Eidson <[email protected]>
Modern IDB: Make TestRunner.clearAllDatabases also delete IndexedDB databases (once doing so is supported).
Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (201186 => 201187)
--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2016-05-19 21:59:12 UTC (rev 201187)
@@ -125,6 +125,7 @@
#define WebKitRequiresUserGestureForAudioPlaybackPreferenceKey @"WebKitAudioPlaybackRequiresUserGesture"
#define WebKitMainContentUserGestureOverrideEnabledPreferenceKey @"WebKitMainContentUserGestureOverrideEnabled"
#define WebKitAllowsInlineMediaPlaybackPreferenceKey @"WebKitMediaPlaybackAllowsInline"
+#define WebKitAllowsInlineMediaPlaybackAfterFullscreenPreferenceKey @"WebKitAllowsInlineMediaPlaybackAfterFullscreen"
#define WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey @"InlineMediaPlaybackRequiresPlaysInlineAttribute"
#define WebKitInvisibleAutoplayNotPermittedKey @"InvisibleAutoplayNotPermitted"
#define WebKitAllowsPictureInPictureMediaPlaybackPreferenceKey @"WebKitAllowsPictureInPictureMediaPlayback"
Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (201186 => 201187)
--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2016-05-19 21:59:12 UTC (rev 201187)
@@ -397,6 +397,7 @@
bool attachmentElementEnabled = MacApplication::isAppleMail();
#else
bool allowsInlineMediaPlayback = WebCore::deviceClass() == MGDeviceClassiPad;
+ bool allowsInlineMediaPlaybackAfterFullscreen = WebCore::deviceClass() != MGDeviceClassiPad;
bool requiresPlaysInlineAttribute = !allowsInlineMediaPlayback;
bool attachmentElementEnabled = IOSApplication::isMobileMail();
#endif
@@ -523,6 +524,7 @@
[NSNumber numberWithBool:attachmentElementEnabled], WebKitAttachmentElementEnabledPreferenceKey,
#if !PLATFORM(IOS)
[NSNumber numberWithBool:YES], WebKitAllowsInlineMediaPlaybackPreferenceKey,
+ [NSNumber numberWithBool:NO], WebKitAllowsInlineMediaPlaybackAfterFullscreenPreferenceKey,
[NSNumber numberWithBool:NO], WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey,
[NSNumber numberWithBool:YES], WebKitMediaControlsScaleWithPageZoomPreferenceKey,
[NSNumber numberWithBool:NO], WebKitWebAudioEnabledPreferenceKey,
@@ -535,6 +537,7 @@
[NSNumber numberWithBool:YES], WebKitMediaDataLoadsAutomaticallyPreferenceKey,
#else
[NSNumber numberWithBool:allowsInlineMediaPlayback], WebKitAllowsInlineMediaPlaybackPreferenceKey,
+ [NSNumber numberWithBool:allowsInlineMediaPlaybackAfterFullscreen], WebKitAllowsInlineMediaPlaybackAfterFullscreenPreferenceKey,
[NSNumber numberWithBool:requiresPlaysInlineAttribute], WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey,
[NSNumber numberWithBool:NO], WebKitMediaControlsScaleWithPageZoomPreferenceKey,
[NSNumber numberWithUnsignedInt:AudioSession::None], WebKitAudioSessionCategoryOverride,
@@ -2681,6 +2684,16 @@
[self _setBoolValue:flag forKey:WebKitAttachmentElementEnabledPreferenceKey];
}
+- (BOOL)allowsInlineMediaPlaybackAfterFullscreen
+{
+ return [self _boolValueForKey:WebKitAllowsInlineMediaPlaybackAfterFullscreenPreferenceKey];
+}
+
+- (void)setAllowsInlineMediaPlaybackAfterFullscreen:(BOOL)flag
+{
+ [self _setBoolValue:flag forKey:WebKitAllowsInlineMediaPlaybackAfterFullscreenPreferenceKey];
+}
+
- (BOOL)mockCaptureDevicesEnabled
{
return [self _boolValueForKey:WebKitMockCaptureDevicesEnabledPreferenceKey];
Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (201186 => 201187)
--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2016-05-19 21:59:12 UTC (rev 201187)
@@ -493,5 +493,7 @@
@property (nonatomic) BOOL _javascript_MarkupEnabled;
@property (nonatomic) BOOL mediaDataLoadsAutomatically;
@property (nonatomic) BOOL attachmentElementEnabled;
+@property (nonatomic) BOOL allowsInlineMediaPlaybackAfterFullscreen;
+
@end
Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (201186 => 201187)
--- trunk/Source/WebKit/mac/WebView/WebView.mm 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm 2016-05-19 21:59:12 UTC (rev 201187)
@@ -2338,6 +2338,7 @@
settings.setAudioPlaybackRequiresUserGesture(mediaPlaybackRequiresUserGesture || [preferences audioPlaybackRequiresUserGesture]);
settings.setMainContentUserGestureOverrideEnabled([preferences overrideUserGestureRequirementForMainContent]);
settings.setAllowsInlineMediaPlayback([preferences mediaPlaybackAllowsInline]);
+ settings.setAllowsInlineMediaPlaybackAfterFullscreen([preferences allowsInlineMediaPlaybackAfterFullscreen]);
settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute([preferences inlineMediaPlaybackRequiresPlaysInlineAttribute]);
settings.setInvisibleAutoplayNotPermitted([preferences invisibleAutoplayNotPermitted]);
settings.setAllowsPictureInPictureMediaPlayback([preferences allowsPictureInPictureMediaPlayback] && shouldAllowPictureInPictureMediaPlayback());
Modified: trunk/Source/WebKit2/ChangeLog (201186 => 201187)
--- trunk/Source/WebKit2/ChangeLog 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebKit2/ChangeLog 2016-05-19 21:59:12 UTC (rev 201187)
@@ -1,3 +1,38 @@
+2016-05-19 Jer Noble <[email protected]>
+
+ [IOS] Add setting to allow playback to continue inline after exiting fullscreen.
+ https://bugs.webkit.org/show_bug.cgi?id=157912
+
+ Reviewed by Eric Carlson.
+
+ Add a preference and configuration property to control whether media should be allowed to continue
+ playing inline when exiting fullscreen.
+
+ * Shared/WebPreferencesDefinitions.h:
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _initializeWithConfiguration:]):
+ * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
+ (-[WKWebViewConfiguration init]):
+ (-[WKWebViewConfiguration encodeWithCoder:]):
+ (-[WKWebViewConfiguration initWithCoder:]):
+ (-[WKWebViewConfiguration copyWithZone:]):
+ (-[WKWebViewConfiguration _allowsInlineMediaPlaybackAfterFullscreen]):
+ (-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackAfterFullscreen:]):
+ * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
+ * UIProcess/mac/WKFullScreenWindowController.mm:
+ (disableScreenUpdates):
+ (enableScreenUpdates):
+ (-[WKFullScreenWindowController enterFullScreen:]):
+ (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
+ (-[WKFullScreenWindowController exitFullScreen]):
+ (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
+ (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
+ (-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]):
+ (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]):
+ (-[WKFullScreenWindowController _startExitFullScreenAnimationWithDuration:]):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::updatePreferences):
+
2016-05-19 Brian Burg <[email protected]>
Web Inspector: timelines should not update via requestAnimationFrame unless Web Inspector is visible
Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (201186 => 201187)
--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2016-05-19 21:59:12 UTC (rev 201187)
@@ -71,6 +71,7 @@
#define DEFAULT_SHOULD_RESPECT_IMAGE_ORIENTATION true
#define DEFAULT_PASSWORD_ECHO_ENABLED true
#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_INVISIBLE_AUTOPLAY_NOT_PERMITTED true
#define DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY false
@@ -86,6 +87,7 @@
#define DEFAULT_SHOULD_RESPECT_IMAGE_ORIENTATION false
#define DEFAULT_PASSWORD_ECHO_ENABLED false
#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_INVISIBLE_AUTOPLAY_NOT_PERMITTED false
#define DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY true
@@ -155,6 +157,7 @@
macro(RequiresUserGestureForAudioPlayback, requiresUserGestureForAudioPlayback, Bool, bool, DEFAULT_REQUIRES_USER_GESTURE_FOR_AUDIO_PLAYBACK, "", "") \
macro(MainContentUserGestureOverrideEnabled, mainContentUserGestureOverrideEnabled, Bool, bool, false, "", "") \
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(InvisibleAutoplayNotPermitted, invisibleAutoplayNotPermitted, Bool, bool, DEFAULT_INVISIBLE_AUTOPLAY_NOT_PERMITTED, "", "") \
macro(MediaDataLoadsAutomatically, mediaDataLoadsAutomatically, Bool, bool, DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY, "", "") \
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (201186 => 201187)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2016-05-19 21:59:12 UTC (rev 201187)
@@ -455,6 +455,7 @@
pageConfiguration->setAlwaysRunsAtForegroundPriority([_configuration _alwaysRunsAtForegroundPriority]);
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::allowsPictureInPictureMediaPlaybackKey(), WebKit::WebPreferencesStore::Value(!![_configuration allowsPictureInPictureMediaPlayback] && shouldAllowPictureInPictureMediaPlayback()));
pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::userInterfaceDirectionPolicyKey(), WebKit::WebPreferencesStore::Value(static_cast<uint32_t>(WebCore::UserInterfaceDirectionPolicy::Content)));
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm (201186 => 201187)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2016-05-19 21:59:12 UTC (rev 201187)
@@ -108,6 +108,7 @@
BOOL _alwaysRunsAtForegroundPriority;
BOOL _allowsInlineMediaPlayback;
BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute;
+ BOOL _allowsInlineMediaPlaybackAfterFullscreen;
#endif
BOOL _invisibleAutoplayNotPermitted;
@@ -135,6 +136,7 @@
_allowsPictureInPictureMediaPlayback = YES;
_allowsInlineMediaPlayback = WebCore::deviceClass() == MGDeviceClassiPad;
_inlineMediaPlaybackRequiresPlaysInlineAttribute = !_allowsInlineMediaPlayback;
+ _allowsInlineMediaPlaybackAfterFullscreen = !_allowsInlineMediaPlayback;
_mediaDataLoadsAutomatically = NO;
if (linkedOnOrAfter(WebKit::LibraryVersion::FirstWithMediaTypesRequiringUserActionForPlayback))
_mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeAudio;
@@ -203,6 +205,7 @@
#if PLATFORM(IOS)
[coder encodeInteger:self.dataDetectorTypes forKey:@"dataDetectorTypes"];
[coder encodeBool:self.allowsInlineMediaPlayback forKey:@"allowsInlineMediaPlayback"];
+ [coder encodeBool:self._allowsInlineMediaPlaybackAfterFullscreen forKey:@"allowsInlineMediaPlaybackAfterFullscreen"];
[coder encodeBool:self.mediaTypesRequiringUserActionForPlayback forKey:@"mediaTypesRequiringUserActionForPlayback"];
[coder encodeInteger:self.selectionGranularity forKey:@"selectionGranularity"];
[coder encodeBool:self.allowsPictureInPictureMediaPlayback forKey:@"allowsPictureInPictureMediaPlayback"];
@@ -228,6 +231,7 @@
#if PLATFORM(IOS)
self.dataDetectorTypes = [coder decodeIntegerForKey:@"dataDetectorTypes"];
self.allowsInlineMediaPlayback = [coder decodeBoolForKey:@"allowsInlineMediaPlayback"];
+ self._allowsInlineMediaPlaybackAfterFullscreen = [coder decodeBoolForKey:@"allowsInlineMediaPlaybackAfterFullscreen"];
self.mediaTypesRequiringUserActionForPlayback = [coder decodeBoolForKey:@"mediaTypesRequiringUserActionForPlayback"];
self.selectionGranularity = static_cast<WKSelectionGranularity>([coder decodeIntegerForKey:@"selectionGranularity"]);
self.allowsPictureInPictureMediaPlayback = [coder decodeBoolForKey:@"allowsPictureInPictureMediaPlayback"];
@@ -275,6 +279,7 @@
#if PLATFORM(IOS)
configuration->_allowsInlineMediaPlayback = self->_allowsInlineMediaPlayback;
+ configuration->_allowsInlineMediaPlaybackAfterFullscreen = self->_allowsInlineMediaPlaybackAfterFullscreen;
configuration->_inlineMediaPlaybackRequiresPlaysInlineAttribute = self->_inlineMediaPlaybackRequiresPlaysInlineAttribute;
configuration->_allowsPictureInPictureMediaPlayback = self->_allowsPictureInPictureMediaPlayback;
configuration->_alwaysRunsAtForegroundPriority = _alwaysRunsAtForegroundPriority;
@@ -563,6 +568,16 @@
{
_inlineMediaPlaybackRequiresPlaysInlineAttribute = requires;
}
+
+- (BOOL)_allowsInlineMediaPlaybackAfterFullscreen
+{
+ return _allowsInlineMediaPlaybackAfterFullscreen;
+}
+
+- (void)_setAllowsInlineMediaPlaybackAfterFullscreen:(BOOL)allows
+{
+ _allowsInlineMediaPlaybackAfterFullscreen = allows;
+}
#endif // PLATFORM(IOS)
- (BOOL)_invisibleAutoplayNotPermitted
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h (201186 => 201187)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h 2016-05-19 21:59:12 UTC (rev 201187)
@@ -58,6 +58,7 @@
#if TARGET_OS_IPHONE
@property (nonatomic, setter=_setAlwaysRunsAtForegroundPriority:) BOOL _alwaysRunsAtForegroundPriority WK_AVAILABLE(NA, 9_0);
@property (nonatomic, setter=_setInlineMediaPlaybackRequiresPlaysInlineAttribute:) BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute WK_AVAILABLE(NA, WK_IOS_TBA);
+@property (nonatomic, setter=_setAllowsInlineMediaPlaybackAfterFullscreen:) BOOL _allowsInlineMediaPlaybackAfterFullscreen WK_AVAILABLE(NA, WK_IOS_TBA);
#else
@property (nonatomic, setter=_setShowsURLsInToolTips:) BOOL _showsURLsInToolTips WK_AVAILABLE(WK_MAC_TBA, NA);
@property (nonatomic, setter=_setServiceControlsEnabled:) BOOL _serviceControlsEnabled WK_AVAILABLE(WK_MAC_TBA, NA);
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (201186 => 201187)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2016-05-19 21:51:31 UTC (rev 201186)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2016-05-19 21:59:12 UTC (rev 201187)
@@ -2928,6 +2928,7 @@
settings.setAudioPlaybackRequiresUserGesture(requiresUserGestureForMedia || store.getBoolValueForKey(WebPreferencesKey::requiresUserGestureForAudioPlaybackKey()));
settings.setMainContentUserGestureOverrideEnabled(store.getBoolValueForKey(WebPreferencesKey::mainContentUserGestureOverrideEnabledKey()));
settings.setAllowsInlineMediaPlayback(store.getBoolValueForKey(WebPreferencesKey::allowsInlineMediaPlaybackKey()));
+ settings.setAllowsInlineMediaPlaybackAfterFullscreen(store.getBoolValueForKey(WebPreferencesKey::allowsInlineMediaPlaybackAfterFullscreenKey()));
settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(store.getBoolValueForKey(WebPreferencesKey::inlineMediaPlaybackRequiresPlaysInlineAttributeKey()));
settings.setInvisibleAutoplayNotPermitted(store.getBoolValueForKey(WebPreferencesKey::invisibleAutoplayNotPermittedKey()));
settings.setMediaDataLoadsAutomatically(store.getBoolValueForKey(WebPreferencesKey::mediaDataLoadsAutomaticallyKey()));