Diff
Modified: trunk/Source/WebKit/mac/ChangeLog (192588 => 192589)
--- trunk/Source/WebKit/mac/ChangeLog 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit/mac/ChangeLog 2015-11-18 23:04:36 UTC (rev 192589)
@@ -1,3 +1,22 @@
+2015-11-18 Jer Noble <jer.no...@apple.com>
+
+ Expose WebCore's AudioPlaybackRequiresUserGesture setting to WebKit & WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=151274
+
+ Reviewed by Anders Carlsson.
+
+ Add a WebKit preference key, WebKitAudioPlaybackRequiresUserGesture, and a matching WebPreference
+ property, and transfer those preferences to WebCore's settings when they change.
+
+ * WebView/WebPreferenceKeysPrivate.h:
+ * WebView/WebPreferences.mm:
+ (+[WebPreferences initialize]):
+ (-[WebPreferences audioPlaybackRequiresUserGesture]):
+ (-[WebPreferences setAudioPlaybackRequiresUserGesture:]):
+ * WebView/WebPreferencesPrivate.h:
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]):
+
2015-11-12 Anders Carlsson <ander...@apple.com>
ContextMenuAction and WebMenuItemTag shouldn't have to be in sync
Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (192588 => 192589)
--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2015-11-18 23:04:36 UTC (rev 192589)
@@ -120,6 +120,7 @@
#define WebKitAVFoundationEnabledKey @"WebKitAVFoundationEnabled"
#define WebKitHixie76WebSocketProtocolEnabledKey @"WebKitHixie76WebSocketProtocolEnabled"
#define WebKitRequiresUserGestureForMediaPlaybackPreferenceKey @"WebKitMediaPlaybackRequiresUserGesture"
+#define WebKitRequiresUserGestureForAudioPlaybackPreferenceKey @"WebKitAudioPlaybackRequiresUserGesture"
#define WebKitAllowsInlineMediaPlaybackPreferenceKey @"WebKitMediaPlaybackAllowsInline"
#define WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey @"InlineMediaPlaybackRequiresPlaysInlineAttribute"
#define WebKitAllowsPictureInPictureMediaPlaybackPreferenceKey @"WebKitAllowsPictureInPictureMediaPlayback"
Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (192588 => 192589)
--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2015-11-18 23:04:36 UTC (rev 192589)
@@ -522,6 +522,7 @@
[NSNumber numberWithBool:NO], WebKitSuppressesIncrementalRenderingKey,
#if !PLATFORM(IOS)
[NSNumber numberWithBool:NO], WebKitRequiresUserGestureForMediaPlaybackPreferenceKey,
+ [NSNumber numberWithBool:NO], WebKitRequiresUserGestureForAudioPlaybackPreferenceKey,
[NSNumber numberWithBool:YES], WebKitAllowsInlineMediaPlaybackPreferenceKey,
[NSNumber numberWithBool:YES], WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey,
[NSNumber numberWithBool:YES], WebKitMediaControlsScaleWithPageZoomPreferenceKey,
@@ -535,6 +536,7 @@
[NSNumber numberWithBool:YES], WebKitMediaDataLoadsAutomaticallyPreferenceKey,
#else
[NSNumber numberWithBool:YES], WebKitRequiresUserGestureForMediaPlaybackPreferenceKey,
+ [NSNumber numberWithBool:YES], WebKitRequiresUserGestureForAudioPlaybackPreferenceKey,
[NSNumber numberWithBool:allowsInlineMediaPlayback], WebKitAllowsInlineMediaPlaybackPreferenceKey,
[NSNumber numberWithBool:requiresPlaysInlineAttribute], WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey,
[NSNumber numberWithBool:NO], WebKitMediaControlsScaleWithPageZoomPreferenceKey,
@@ -2186,6 +2188,16 @@
[self _setBoolValue:flag forKey:WebKitRequiresUserGestureForMediaPlaybackPreferenceKey];
}
+- (BOOL)audioPlaybackRequiresUserGesture
+{
+ return [self _boolValueForKey:WebKitRequiresUserGestureForAudioPlaybackPreferenceKey];
+}
+
+- (void)setAudioPlaybackRequiresUserGesture:(BOOL)flag
+{
+ [self _setBoolValue:flag forKey:WebKitRequiresUserGestureForAudioPlaybackPreferenceKey];
+}
+
- (BOOL)mediaPlaybackAllowsInline
{
return [self _boolValueForKey:WebKitAllowsInlineMediaPlaybackPreferenceKey];
Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (192588 => 192589)
--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2015-11-18 23:04:36 UTC (rev 192589)
@@ -245,6 +245,9 @@
- (void)setMediaPlaybackRequiresUserGesture:(BOOL)flag;
- (BOOL)mediaPlaybackRequiresUserGesture;
+- (void)setAudioPlaybackRequiresUserGesture:(BOOL)flag;
+- (BOOL)audioPlaybackRequiresUserGesture;
+
- (void)setMediaPlaybackAllowsInline:(BOOL)flag;
- (BOOL)mediaPlaybackAllowsInline;
Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (192588 => 192589)
--- trunk/Source/WebKit/mac/WebView/WebView.mm 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm 2015-11-18 23:04:36 UTC (rev 192589)
@@ -2303,6 +2303,7 @@
settings.setValidationMessageTimerMagnification([self validationMessageTimerMagnification]);
settings.setRequiresUserGestureForMediaPlayback([preferences mediaPlaybackRequiresUserGesture]);
+ settings.setAudioPlaybackRequiresUserGesture([preferences audioPlaybackRequiresUserGesture]);
settings.setAllowsInlineMediaPlayback([preferences mediaPlaybackAllowsInline]);
settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute([preferences inlineMediaPlaybackRequiresPlaysInlineAttribute]);
settings.setAllowsPictureInPictureMediaPlayback([preferences allowsPictureInPictureMediaPlayback] && shouldAllowPictureInPictureMediaPlayback());
Modified: trunk/Source/WebKit2/ChangeLog (192588 => 192589)
--- trunk/Source/WebKit2/ChangeLog 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit2/ChangeLog 2015-11-18 23:04:36 UTC (rev 192589)
@@ -1,3 +1,30 @@
+2015-11-18 Jer Noble <jer.no...@apple.com>
+
+ Expose WebCore's AudioPlaybackRequiresUserGesture setting to WebKit & WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=151274
+
+ Reviewed by Anders Carlsson.
+
+ Add a new, private, WKWebViewConfiguration property, _requiresUserActionForAudioPlayback,
+ and use that configuration property to set WebCore's AudioPlaybackRequiresUserGesture setting
+ during page creation.
+
+ * Shared/WebPreferencesDefinitions.h:
+ * UIProcess/API/C/WKPreferences.cpp:
+ (WKPreferencesSetAudioPlaybackRequiresUserGesture): Add legacy C API for setting this new WK preference.
+ (WKPreferencesGetAudioPlaybackRequiresUserGesture): Ditto.
+ * UIProcess/API/C/WKPreferencesRefPrivate.h:
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView initWithFrame:configuration:]): Set the page configuration value from preferences.
+ * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
+ (-[WKWebViewConfiguration init]): Default the value of the new configuration property to YES for iOS.
+ (-[WKWebViewConfiguration copyWithZone:]): Copy the value across.
+ (-[WKWebViewConfiguration _requiresUserActionForAudioPlayback]): Simple getter.
+ (-[WKWebViewConfiguration _setRequiresUserActionForAudioPlayback:]): Simple setter.
+ * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::updatePreferences): Set WebCore's audioPlaybackRequiresUserGesture Setting.
+
2015-11-18 Daniel Bates <daba...@apple.com>
[iOS] ASSERTION FAILED: temporaryFilePath.last() == '/' in WebCore::openTemporaryFile()
Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (192588 => 192589)
--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h 2015-11-18 23:04:36 UTC (rev 192589)
@@ -61,6 +61,7 @@
#define DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE true
#define DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY false
#define DEFAULT_REQUIRES_USER_GESTURE_FOR_MEDIA_PLAYBACK true
+#define DEFAULT_REQUIRES_USER_GESTURE_FOR_AUDIO_PLAYBACK true
#define DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM false
#define DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED false
#else
@@ -76,6 +77,7 @@
#define DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE false
#define DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY true
#define DEFAULT_REQUIRES_USER_GESTURE_FOR_MEDIA_PLAYBACK false
+#define DEFAULT_REQUIRES_USER_GESTURE_FOR_AUDIO_PLAYBACK false
#define DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM true
#define DEFAULT_TEMPORARY_TILE_COHORT_RETENTION_ENABLED true
#endif
@@ -138,6 +140,7 @@
macro(AllowFileAccessFromFileURLs, allowFileAccessFromFileURLs, Bool, bool, false) \
macro(AVFoundationEnabled, isAVFoundationEnabled, Bool, bool, true) \
macro(RequiresUserGestureForMediaPlayback, requiresUserGestureForMediaPlayback, Bool, bool, DEFAULT_REQUIRES_USER_GESTURE_FOR_MEDIA_PLAYBACK) \
+ macro(RequiresUserGestureForAudioPlayback, requiresUserGestureForAudioPlayback, Bool, bool, DEFAULT_REQUIRES_USER_GESTURE_FOR_AUDIO_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(MediaDataLoadsAutomatically, mediaDataLoadsAutomatically, Bool, bool, DEFAULT_MEDIA_DATA_LOADS_AUTOMATICALLY) \
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (192588 => 192589)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2015-11-18 23:04:36 UTC (rev 192589)
@@ -748,6 +748,16 @@
return toImpl(preferencesRef)->requiresUserGestureForMediaPlayback();
}
+void WKPreferencesSetAudioPlaybackRequiresUserGesture(WKPreferencesRef preferencesRef, bool flag)
+{
+ toImpl(preferencesRef)->setRequiresUserGestureForAudioPlayback(flag);
+}
+
+bool WKPreferencesGetAudioPlaybackRequiresUserGesture(WKPreferencesRef preferencesRef)
+{
+ return toImpl(preferencesRef)->requiresUserGestureForAudioPlayback();
+}
+
void WKPreferencesSetMediaPlaybackAllowsInline(WKPreferencesRef preferencesRef, bool flag)
{
toImpl(preferencesRef)->setAllowsInlineMediaPlayback(flag);
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h (192588 => 192589)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h 2015-11-18 23:04:36 UTC (rev 192589)
@@ -177,6 +177,10 @@
WK_EXPORT void WKPreferencesSetMediaPlaybackRequiresUserGesture(WKPreferencesRef preferencesRef, bool flag);
WK_EXPORT bool WKPreferencesGetMediaPlaybackRequiresUserGesture(WKPreferencesRef preferencesRef);
+// Defaults to false.
+WK_EXPORT void WKPreferencesSetAudioPlaybackRequiresUserGesture(WKPreferencesRef preferencesRef, bool flag);
+WK_EXPORT bool WKPreferencesGetAudioPlaybackRequiresUserGesture(WKPreferencesRef preferencesRef);
+
// Defaults to true.
WK_EXPORT void WKPreferencesSetMediaPlaybackAllowsInline(WKPreferencesRef preferencesRef, bool flag);
WK_EXPORT bool WKPreferencesGetMediaPlaybackAllowsInline(WKPreferencesRef preferencesRef);
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (192588 => 192589)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2015-11-18 23:04:36 UTC (rev 192589)
@@ -360,6 +360,7 @@
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]));
+ pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::requiresUserGestureForAudioPlaybackKey(), WebKit::WebPreferencesStore::Value(!![_configuration _requiresUserActionForAudioPlayback]));
pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::mediaDataLoadsAutomaticallyKey(), WebKit::WebPreferencesStore::Value(!![_configuration _mediaDataLoadsAutomatically]));
#endif
#if ENABLE(WIRELESS_PLAYBACK_TARGET)
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm (192588 => 192589)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2015-11-18 23:04:36 UTC (rev 192589)
@@ -104,6 +104,7 @@
BOOL _allowsInlineMediaPlayback;
BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute;
BOOL _mediaDataLoadsAutomatically;
+ BOOL _requiresUserActionForAudioPlayback;
#endif
#if PLATFORM(MAC)
BOOL _showsURLsInToolTips;
@@ -119,6 +120,7 @@
#if PLATFORM(IOS)
_requiresUserActionForMediaPlayback = YES;
+ _requiresUserActionForAudioPlayback = YES;
_allowsPictureInPictureMediaPlayback = YES;
_allowsInlineMediaPlayback = WebCore::deviceClass() == MGDeviceClassiPad;
_inlineMediaPlaybackRequiresPlaysInlineAttribute = !_allowsInlineMediaPlayback;
@@ -185,6 +187,7 @@
configuration->_allowsPictureInPictureMediaPlayback = self->_allowsPictureInPictureMediaPlayback;
configuration->_alwaysRunsAtForegroundPriority = _alwaysRunsAtForegroundPriority;
configuration->_requiresUserActionForMediaPlayback = self->_requiresUserActionForMediaPlayback;
+ configuration->_requiresUserActionForAudioPlayback = self->_requiresUserActionForAudioPlayback;
configuration->_selectionGranularity = self->_selectionGranularity;
#endif
#if PLATFORM(MAC)
@@ -462,6 +465,17 @@
{
_mediaDataLoadsAutomatically = mediaDataLoadsAutomatically;
}
+
+- (BOOL)_requiresUserActionForAudioPlayback
+{
+ return _requiresUserActionForAudioPlayback;
+}
+
+- (void)_setRequiresUserActionForAudioPlayback:(BOOL)requiresUserActionForAudioPlayback
+{
+ _requiresUserActionForAudioPlayback = requiresUserActionForAudioPlayback;
+}
+
#endif // PLATFORM(IOS)
#if PLATFORM(MAC)
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h (192588 => 192589)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h 2015-11-18 23:04:36 UTC (rev 192589)
@@ -53,6 +53,7 @@
#if TARGET_OS_IPHONE
@property (nonatomic, setter=_setAlwaysRunsAtForegroundPriority:) BOOL _alwaysRunsAtForegroundPriority WK_AVAILABLE(NA, 9_0);
+@property (nonatomic, setter=_setRequiresUserActionForAudioPlayback:) BOOL _requiresUserActionForAudioPlayback WK_AVAILABLE(NA, WK_IOS_TBA);
@property (nonatomic, setter=_setInlineMediaPlaybackRequiresPlaysInlineAttribute:) BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute WK_AVAILABLE(NA, WK_IOS_TBA);
@property (nonatomic, setter=_setMediaDataLoadsAutomatically:) BOOL _mediaDataLoadsAutomatically WK_AVAILABLE(NA, WK_IOS_TBA);
#else
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (192588 => 192589)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-11-18 22:30:45 UTC (rev 192588)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2015-11-18 23:04:36 UTC (rev 192589)
@@ -2780,6 +2780,7 @@
settings.setForceSoftwareWebGLRendering(store.getBoolValueForKey(WebPreferencesKey::forceSoftwareWebGLRenderingKey()));
settings.setAccelerated2dCanvasEnabled(store.getBoolValueForKey(WebPreferencesKey::accelerated2dCanvasEnabledKey()));
settings.setRequiresUserGestureForMediaPlayback(store.getBoolValueForKey(WebPreferencesKey::requiresUserGestureForMediaPlaybackKey()));
+ settings.setAudioPlaybackRequiresUserGesture(store.getBoolValueForKey(WebPreferencesKey::requiresUserGestureForAudioPlaybackKey()));
settings.setAllowsInlineMediaPlayback(store.getBoolValueForKey(WebPreferencesKey::allowsInlineMediaPlaybackKey()));
settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(store.getBoolValueForKey(WebPreferencesKey::inlineMediaPlaybackRequiresPlaysInlineAttributeKey()));
settings.setMediaDataLoadsAutomatically(store.getBoolValueForKey(WebPreferencesKey::mediaDataLoadsAutomaticallyKey()));