Changeset 189112 in webkit


Ignore:
Timestamp:
Aug 28, 2015 11:51:42 AM (9 years ago)
Author:
jer.noble@apple.com
Message:

[iOS] Make the AllowsInlineMediaPlayback preference work in WebKit / WebKit2.
https://bugs.webkit.org/show_bug.cgi?id=147512

Reviewed by Anders Carlsson.

Source/WebCore:

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.

Source/WebKit/mac:

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

Source/WebKit2:

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

Tools:

Set the value of WebKitAllowsInlineMediaPlayback / WKPreferencesSetMediaPlaybackAllowsInline()
to a consistent (true) value.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setDefaultsToConsistentValuesForTesting):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

  • 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:
Location:
trunk
Files:
32 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r189107 r189112  
     12015-08-28  Jer Noble  <jer.noble@apple.com>
     2
     3        [iOS] Make the AllowsInlineMediaPlayback preference work in WebKit / WebKit2.
     4        https://bugs.webkit.org/show_bug.cgi?id=147512
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * media/video-fullscreeen-only-controls.html:
     9        * media/video-fullscreeen-only-controls-expected.txt:
     10        * media/video-fullscreeen-only-playback.html:
     11        * media/video-fullscreeen-only-playback-expected.txt:
     12
    1132015-08-28  Eric Carlson  <eric.carlson@apple.com>
    214
  • trunk/LayoutTests/media/video-fullscreeen-only-controls-expected.txt

    r179612 r189112  
    22
    33
    4 RUN(internals.setMediaSessionRestrictions('video', 'InlineVideoPlaybackRestricted'))
     4RUN(internals.settings.setAllowsInlineMediaPlayback(false))
    55EXPECTED (video.hasAttribute('controls') == 'false') OK
    66EXPECTED (video.controls == 'false') OK
  • trunk/LayoutTests/media/video-fullscreeen-only-controls.html

    r179612 r189112  
    1010    var panel;
    1111
    12     run("internals.setMediaSessionRestrictions('video', 'InlineVideoPlaybackRestricted')");
     12    run("internals.settings.setAllowsInlineMediaPlayback(false)");
    1313
    1414    var video = document.getElementById('video');
  • trunk/LayoutTests/media/video-fullscreeen-only-playback-expected.txt

    r162145 r189112  
    22Test play() when <video> playback requires fullscreen.
    33
    4 RUN(internals.setMediaSessionRestrictions('video', 'InlineVideoPlaybackRestricted'))
     4internals.settings.setAllowsInlineMediaPlayback(false)
    55
    66EVENT(canplaythrough)
  • trunk/LayoutTests/media/video-fullscreeen-only-playback.html

    r162145 r189112  
    6565                video.src = findMediaFile("video", "content/test");
    6666
    67                 run("internals.setMediaSessionRestrictions('video', 'InlineVideoPlaybackRestricted')");
     67                run("internals.settings.setAllowsInlineMediaPlayback(false)");
    6868                consoleWrite("");
    6969            }
  • trunk/Source/WebCore/ChangeLog

    r189107 r189112  
     12015-08-28  Jer Noble  <jer.noble@apple.com>
     2
     3        [iOS] Make the AllowsInlineMediaPlayback preference work in WebKit / WebKit2.
     4        https://bugs.webkit.org/show_bug.cgi?id=147512
     5
     6        Reviewed by Anders Carlsson.
     7
     8        Updated existing tests to use the Setting rather than the Behavior Restriction.
     9
     10        Get rid of the sessionRestrictsInlineVideoPlayback() method and the InlineVideoPlaybackRestricted
     11        restriction. Instead, just use the allowsInlineMediaPlayback() setting, and require
     12        WebKit and WebKitLegacy clients to initialize the setting appropriately.
     13
     14        * html/MediaElementSession.cpp:
     15        (WebCore::MediaElementSession::requiresFullscreenForVideoPlayback): Deleted.
     16        * page/Settings.cpp: Add a new inlineMediaPlaybackRequiresPlaysInlineAttribute setting.
     17        * page/Settings.in: Ditto.
     18        * platform/audio/PlatformMediaSessionManager.cpp:
     19        (WebCore::PlatformMediaSessionManager::sessionRestrictsInlineVideoPlayback): Deleted.
     20        * platform/audio/PlatformMediaSessionManager.h:
     21        * platform/audio/ios/MediaSessionManagerIOS.mm:
     22        (WebCore::MediaSessionManageriOS::resetRestrictions): Deleted.
     23        * testing/InternalSettings.cpp:
     24        (WebCore::InternalSettings::Backup::Backup): Backup the allowsInlineMediaPlayback() setting value.
     25        (WebCore::InternalSettings::Backup::restoreTo): Restore same.
     26        (WebCore::InternalSettings::setAllowsInlineMediaPlayback): Set allowsInlineMediaPlayback().
     27        * testing/InternalSettings.h:
     28        * testing/InternalSettings.idl:
     29        * testing/Internals.cpp:
     30        (WebCore::Internals::setMediaSessionRestrictions): Deleted.
     31
    1322015-08-28  Eric Carlson  <eric.carlson@apple.com>
    233
  • trunk/Source/WebCore/html/MediaElementSession.cpp

    r187892 r189112  
    361361        return false;
    362362
    363     if (!PlatformMediaSessionManager::sharedManager().sessionRestrictsInlineVideoPlayback(*this))
    364         return false;
    365 
    366363    Settings* settings = element.document().settings();
    367364    if (!settings || !settings->allowsInlineMediaPlayback())
    368365        return true;
    369366
    370     if (element.fastHasAttribute(HTMLNames::webkit_playsinlineAttr))
    371         return false;
    372 
    373 #if PLATFORM(IOS)
    374     if (applicationIsDumpRenderTree())
    375         return false;
    376 #endif
    377 
    378     return true;
     367    return settings->inlineMediaPlaybackRequiresPlaysInlineAttribute() && !element.fastHasAttribute(HTMLNames::webkit_playsinlineAttr);
    379368}
    380369
  • trunk/Source/WebCore/page/Settings.cpp

    r186083 r189112  
    123123static const bool defaultAcceleratedCompositingForFixedPositionEnabled = true;
    124124static const bool defaultAllowsInlineMediaPlayback = false;
     125static const bool defaultInlineMediaPlaybackRequiresPlaysInlineAttribute = true;
    125126static const bool defaultRequiresUserGestureForMediaPlayback = true;
    126127static const bool defaultAudioPlaybackRequiresUserGesture = true;
     
    134135static const bool defaultAcceleratedCompositingForFixedPositionEnabled = false;
    135136static const bool defaultAllowsInlineMediaPlayback = true;
     137static const bool defaultInlineMediaPlaybackRequiresPlaysInlineAttribute = false;
    136138static const bool defaultRequiresUserGestureForMediaPlayback = false;
    137139static const bool defaultAudioPlaybackRequiresUserGesture = false;
  • trunk/Source/WebCore/page/Settings.in

    r186982 r189112  
    129129audioPlaybackRequiresUserGesture initial=defaultAudioPlaybackRequiresUserGesture
    130130allowsInlineMediaPlayback initial=defaultAllowsInlineMediaPlayback
     131inlineMediaPlaybackRequiresPlaysInlineAttribute initial=defaultInlineMediaPlaybackRequiresPlaysInlineAttribute
    131132allowsPictureInPictureMediaPlayback initial=defaultAllowsPictureInPictureMediaPlayback
    132133mediaControlsScaleWithPageZoom initial=defaultMediaControlsScaleWithPageZoom
  • trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp

    r187544 r189112  
    268268}
    269269   
    270 bool PlatformMediaSessionManager::sessionRestrictsInlineVideoPlayback(const PlatformMediaSession& session) const
    271 {
    272     PlatformMediaSession::MediaType sessionType = session.presentationType();
    273     if (sessionType != PlatformMediaSession::Video)
    274         return false;
    275 
    276     return m_restrictions[sessionType] & InlineVideoPlaybackRestricted;
    277 }
    278 
    279270bool PlatformMediaSessionManager::sessionCanLoadMedia(const PlatformMediaSession& session) const
    280271{
  • trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h

    r187544 r189112  
    8282    virtual bool sessionWillBeginPlayback(PlatformMediaSession&);
    8383    virtual void sessionWillEndPlayback(PlatformMediaSession&);
    84 
    85     bool sessionRestrictsInlineVideoPlayback(const PlatformMediaSession&) const;
    86 
    8784    virtual bool sessionCanLoadMedia(const PlatformMediaSession&) const;
    8885
  • trunk/Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm

    r188922 r189112  
    3535#import "SoftLinking.h"
    3636#import "SystemMemory.h"
    37 #import "WebCoreSystemInterface.h"
    3837#import "WebCoreThreadRun.h"
    3938#import <AVFoundation/AVAudioSession.h>
     
    149148    PlatformMediaSessionManager::resetRestrictions();
    150149
    151     static wkDeviceClass deviceClass = iosDeviceClass();
    152     if (deviceClass == wkDeviceClassiPhone || deviceClass == wkDeviceClassiPod)
    153         addRestriction(PlatformMediaSession::Video, InlineVideoPlaybackRestricted);
    154 
    155150    if (ramSize() < systemMemoryRequiredForVideoInBackgroundTabs) {
    156151        LOG(Media, "MediaSessionManageriOS::resetRestrictions - restricting video in background tabs because system memory = %zul", ramSize());
  • trunk/Source/WebCore/testing/InternalSettings.cpp

    r185172 r189112  
    102102    , m_allowsAirPlayForMediaPlayback(settings.allowsAirPlayForMediaPlayback())
    103103#endif
     104    , m_allowsInlineMediaPlayback(settings.allowsInlineMediaPlayback())
     105    , m_inlineMediaPlaybackRequiresPlaysInlineAttribute(settings.inlineMediaPlaybackRequiresPlaysInlineAttribute())
    104106{
    105107}
     
    166168    settings.setTouchEventEmulationEnabled(m_touchEventEmulationEnabled);
    167169#endif
     170    settings.setAllowsInlineMediaPlayback(m_allowsInlineMediaPlayback);
     171    settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(m_inlineMediaPlaybackRequiresPlaysInlineAttribute);
    168172    RuntimeEnabledFeatures::sharedFeatures().setPluginReplacementEnabled(m_pluginReplacementEnabled);
    169173}
     
    525529}
    526530
     531void InternalSettings::setAllowsInlineMediaPlayback(bool allows, ExceptionCode& ec)
     532{
     533    InternalSettingsGuardForSettings();
     534    settings()->setAllowsInlineMediaPlayback(allows);
     535}
     536
     537void InternalSettings::setInlineMediaPlaybackRequiresPlaysInlineAttribute(bool requires, ExceptionCode& ec)
     538{
     539    InternalSettingsGuardForSettings();
     540    settings()->setInlineMediaPlaybackRequiresPlaysInlineAttribute(requires);
     541}
     542
    527543// If you add to this list, make sure that you update the Backup class for test reproducability!
    528544
  • trunk/Source/WebCore/testing/InternalSettings.h

    r185172 r189112  
    100100        bool m_allowsAirPlayForMediaPlayback;
    101101#endif
     102        bool m_allowsInlineMediaPlayback;
     103        bool m_inlineMediaPlaybackRequiresPlaysInlineAttribute;
    102104    };
    103105
     
    145147    void setShouldConvertPositionStyleOnCopy(bool, ExceptionCode&);
    146148    void setScrollingTreeIncludesFrames(bool, ExceptionCode&);
     149    void setAllowsInlineMediaPlayback(bool, ExceptionCode&);
     150    void setInlineMediaPlaybackRequiresPlaysInlineAttribute(bool, ExceptionCode&);
    147151
    148152private:
  • trunk/Source/WebCore/testing/InternalSettings.idl

    r185172 r189112  
    7575
    7676    [RaisesException] void setMinimumTimerInterval(unrestricted double intervalInSeconds);
     77    [RaisesException] void setAllowsInlineMediaPlayback(boolean allows);
     78    [RaisesException] void setInlineMediaPlaybackRequiresPlaysInlineAttribute(boolean requires);
    7779};
    7880
  • trunk/Source/WebKit/mac/ChangeLog

    r189102 r189112  
     12015-08-28  Jer Noble  <jer.noble@apple.com>
     2
     3        [iOS] Make the AllowsInlineMediaPlayback preference work in WebKit / WebKit2.
     4        https://bugs.webkit.org/show_bug.cgi?id=147512
     5
     6        Reviewed by Anders Carlsson.
     7
     8        Add a new preference, inlineMediaPlaybackRequiresPlaysInlineAttribute, which defaults to
     9        NO on iPad and YES on iPhone and iPod.
     10
     11        * WebView/WebPreferenceKeysPrivate.h:
     12        * WebView/WebPreferences.mm:
     13        (+[WebPreferences initialize]): Default the value of WebKitAllowsInlineMediaPlaybackPreferenceKey to
     14        YES on iPad and NO on iPhone and iPod.
     15        (-[WebPreferences inlineMediaPlaybackRequiresPlaysInlineAttribute]):
     16        (-[WebPreferences setInlineMediaPlaybackRequiresPlaysInlineAttribute:]):
     17        * WebView/WebPreferencesPrivate.h:
     18        * WebView/WebView.mm:
     19        (-[WebView _preferencesChanged:]):
     20
    1212015-08-28  Timothy Horton  <timothy_horton@apple.com>
    222
  • trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h

    r186232 r189112  
    122122#define WebKitRequiresUserGestureForMediaPlaybackPreferenceKey @"WebKitMediaPlaybackRequiresUserGesture"
    123123#define WebKitAllowsInlineMediaPlaybackPreferenceKey @"WebKitMediaPlaybackAllowsInline"
     124#define WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey @"InlineMediaPlaybackRequiresPlaysInlineAttribute"
    124125#define WebKitAllowsPictureInPictureMediaPlaybackPreferenceKey @"WebKitAllowsPictureInPictureMediaPlayback"
    125126#define WebKitAllowsAirPlayForMediaPlaybackPreferenceKey @"WebKitMediaPlaybackAllowsAirPlay"
  • trunk/Source/WebKit/mac/WebView/WebPreferences.mm

    r187103 r189112  
    396396    WTF::initializeMainThreadToProcessMainThread();
    397397    RunLoop::initializeMainRunLoop();
     398#else
     399    bool allowsInlineMediaPlayback = WKGetDeviceClass() == WKDeviceClassiPad;
     400    bool requiresPlaysInlineAttribute = !allowsInlineMediaPlayback;
    398401#endif
    399402    InitWebCoreSystemInterface();
     
    520523        [NSNumber numberWithBool:NO],   WebKitRequiresUserGestureForMediaPlaybackPreferenceKey,
    521524        [NSNumber numberWithBool:YES],  WebKitAllowsInlineMediaPlaybackPreferenceKey,
     525        [NSNumber numberWithBool:YES],  WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey,
    522526        [NSNumber numberWithBool:YES],  WebKitMediaControlsScaleWithPageZoomPreferenceKey,
    523527        [NSNumber numberWithBool:NO],   WebKitWebAudioEnabledPreferenceKey,
     
    530534#else
    531535        [NSNumber numberWithBool:YES],  WebKitRequiresUserGestureForMediaPlaybackPreferenceKey,
    532         [NSNumber numberWithBool:NO],   WebKitAllowsInlineMediaPlaybackPreferenceKey,
     536        [NSNumber numberWithBool:allowsInlineMediaPlayback],   WebKitAllowsInlineMediaPlaybackPreferenceKey,
     537        [NSNumber numberWithBool:requiresPlaysInlineAttribute], WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey,
    533538        [NSNumber numberWithBool:NO],   WebKitMediaControlsScaleWithPageZoomPreferenceKey,
    534539        [NSNumber numberWithUnsignedInt:AudioSession::None],  WebKitAudioSessionCategoryOverride,
     
    21992204}
    22002205
     2206- (BOOL)inlineMediaPlaybackRequiresPlaysInlineAttribute
     2207{
     2208    return [self _boolValueForKey:WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey];
     2209}
     2210
     2211- (void)setInlineMediaPlaybackRequiresPlaysInlineAttribute:(BOOL)flag
     2212{
     2213    [self _setBoolValue:flag forKey:WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey];
     2214}
     2215
    22012216- (BOOL)mediaControlsScaleWithPageZoom
    22022217{
  • trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h

    r187356 r189112  
    249249- (BOOL)mediaPlaybackAllowsInline;
    250250
     251- (void)setInlineMediaPlaybackRequiresPlaysInlineAttribute:(BOOL)flag;
     252- (BOOL)inlineMediaPlaybackRequiresPlaysInlineAttribute;
     253
    251254- (void)setMediaControlsScaleWithPageZoom:(BOOL)flag;
    252255- (BOOL)mediaControlsScaleWithPageZoom;
  • trunk/Source/WebKit/mac/WebView/WebView.mm

    r189052 r189112  
    23052305    settings.setRequiresUserGestureForMediaPlayback([preferences mediaPlaybackRequiresUserGesture]);
    23062306    settings.setAllowsInlineMediaPlayback([preferences mediaPlaybackAllowsInline]);
     2307    settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute([preferences inlineMediaPlaybackRequiresPlaysInlineAttribute]);
    23072308    settings.setAllowsPictureInPictureMediaPlayback([preferences allowsPictureInPictureMediaPlayback] && shouldAllowPictureInPictureMediaPlayback());
    23082309    settings.setMediaControlsScaleWithPageZoom([preferences mediaControlsScaleWithPageZoom]);
  • trunk/Source/WebKit2/ChangeLog

    r189109 r189112  
     12015-08-28  Jer Noble  <jer.noble@apple.com>
     2
     3        [iOS] Make the AllowsInlineMediaPlayback preference work in WebKit / WebKit2.
     4        https://bugs.webkit.org/show_bug.cgi?id=147512
     5
     6        Reviewed by Anders Carlsson.
     7
     8        Default the value of allowsInlineMediaPlayback to YES on iPad and NO on iPhone and iPod.
     9        Add a new configuration property, _inlineMediaPlaybackRequiresPlaysInlineAttribute, which
     10        defaults to NO on iPad and YES on iPhone and iPad.
     11
     12        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
     13        (-[WKWebViewConfiguration init]):
     14        * Shared/WebPreferencesDefinitions.h:
     15        * UIProcess/API/C/WKPreferences.cpp:
     16        (WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute):
     17        (WKPreferencesGetInlineMediaPlaybackRequiresPlaysInlineAttribute):
     18        * UIProcess/API/C/WKPreferencesRefPrivate.h:
     19        * UIProcess/API/Cocoa/WKWebView.mm:
     20        (-[WKWebView initWithFrame:configuration:]):
     21        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
     22        (-[WKWebViewConfiguration init]):
     23        (-[WKWebViewConfiguration copyWithZone:]):
     24        (-[WKWebViewConfiguration _inlineMediaPlaybackRequiresPlaysInlineAttribute]):
     25        (-[WKWebViewConfiguration _setInlineMediaPlaybackRequiresPlaysInlineAttribute:]):
     26        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
     27        * WebProcess/WebPage/WebPage.cpp:
     28        (WebKit::WebPage::updatePreferences):
     29
    1302015-08-28  Timothy Horton  <timothy_horton@apple.com>
    231
  • trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h

    r188828 r189112  
    5858#define DEFAULT_PASSWORD_ECHO_ENABLED true
    5959#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK false
     60#define DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE true
    6061#define DEFAULT_REQUIRES_USER_GESTURE_FOR_MEDIA_PLAYBACK true
    6162#define DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM false
     
    7071#define DEFAULT_PASSWORD_ECHO_ENABLED false
    7172#define DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK true
     73#define DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE false
    7274#define DEFAULT_REQUIRES_USER_GESTURE_FOR_MEDIA_PLAYBACK false
    7375#define DEFAULT_MEDIA_CONTROLS_SCALE_WITH_PAGE_ZOOM true
     
    133135    macro(RequiresUserGestureForMediaPlayback, requiresUserGestureForMediaPlayback, Bool, bool, DEFAULT_REQUIRES_USER_GESTURE_FOR_MEDIA_PLAYBACK) \
    134136    macro(AllowsInlineMediaPlayback, allowsInlineMediaPlayback, Bool, bool, DEFAULT_ALLOWS_INLINE_MEDIA_PLAYBACK) \
     137    macro(InlineMediaPlaybackRequiresPlaysInlineAttribute, inlineMediaPlaybackRequiresPlaysInlineAttribute, Bool, bool, DEFAULT_INLINE_MEDIA_PLAYBACK_REQUIRES_PLAYS_INLINE_ATTRIBUTE) \
    135138    macro(AllowsPictureInPictureMediaPlayback, allowsPictureInPictureMediaPlayback, Bool, bool, true) \
    136139    macro(AllowsAirPlayForMediaPlayback, allowsAirPlayForMediaPlayback, Bool, bool, true) \
  • trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp

    r186232 r189112  
    749749}
    750750
     751void WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute(WKPreferencesRef preferencesRef, bool flag)
     752{
     753    toImpl(preferencesRef)->setInlineMediaPlaybackRequiresPlaysInlineAttribute(flag);
     754}
     755
     756bool WKPreferencesGetInlineMediaPlaybackRequiresPlaysInlineAttribute(WKPreferencesRef preferencesRef)
     757{
     758    return toImpl(preferencesRef)->inlineMediaPlaybackRequiresPlaysInlineAttribute();
     759}
     760
    751761void WKPreferencesSetMediaControlsScaleWithPageZoom(WKPreferencesRef preferencesRef, bool flag)
    752762{
  • trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h

    r187356 r189112  
    178178WK_EXPORT bool WKPreferencesGetMediaPlaybackAllowsInline(WKPreferencesRef preferencesRef);
    179179
     180// Defaults to false.
     181WK_EXPORT void WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute(WKPreferencesRef preferencesRef, bool flag);
     182WK_EXPORT bool WKPreferencesGetInlineMediaPlaybackRequiresPlaysInlineAttribute(WKPreferencesRef preferencesRef);
     183
    180184// Defaults to false on iOS, true elsewhere.
    181185WK_EXPORT void WKPreferencesSetMediaControlsScaleWithPageZoom(WKPreferencesRef preferencesRef, bool flag);
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r189105 r189112  
    328328
    329329    pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::allowsInlineMediaPlaybackKey(), WebKit::WebPreferencesStore::Value(!![_configuration allowsInlineMediaPlayback]));
     330    pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::inlineMediaPlaybackRequiresPlaysInlineAttributeKey(), WebKit::WebPreferencesStore::Value(!![_configuration _inlineMediaPlaybackRequiresPlaysInlineAttribute]));
    330331    pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::allowsPictureInPictureMediaPlaybackKey(), WebKit::WebPreferencesStore::Value(!![_configuration allowsPictureInPictureMediaPlayback] && shouldAllowPictureInPictureMediaPlayback()));
    331332    pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::requiresUserGestureForMediaPlaybackKey(), WebKit::WebPreferencesStore::Value(!![_configuration requiresUserActionForMediaPlayback]));
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm

    r188891 r189112  
    4141#if PLATFORM(IOS)
    4242#import "UIKitSPI.h"
     43#import "WebKitSystemInterfaceIOS.h"
    4344#endif
    4445
     
    9596    LazyInitialized<RetainPtr<WKWebViewContentProviderRegistry>> _contentProviderRegistry;
    9697    BOOL _alwaysRunsAtForegroundPriority;
     98    BOOL _allowsInlineMediaPlayback;
     99    BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute;
    97100#endif
    98101}
     
    106109    _requiresUserActionForMediaPlayback = YES;
    107110    _allowsPictureInPictureMediaPlayback = YES;
     111    _allowsInlineMediaPlayback = WKGetDeviceClass() == WKDeviceClassiPad;
     112    _inlineMediaPlaybackRequiresPlaysInlineAttribute = !_allowsInlineMediaPlayback;
    108113#endif
    109114
     
    141146#if PLATFORM(IOS)
    142147    configuration->_allowsInlineMediaPlayback = self->_allowsInlineMediaPlayback;
     148    configuration->_inlineMediaPlaybackRequiresPlaysInlineAttribute = self->_inlineMediaPlaybackRequiresPlaysInlineAttribute;
    143149    configuration->_allowsPictureInPictureMediaPlayback = self->_allowsPictureInPictureMediaPlayback;
    144150    configuration->_alwaysRunsAtForegroundPriority = _alwaysRunsAtForegroundPriority;
     
    336342    _alwaysRunsAtForegroundPriority = alwaysRunsAtForegroundPriority;
    337343}
     344
     345- (BOOL)_inlineMediaPlaybackRequiresPlaysInlineAttribute
     346{
     347    return _inlineMediaPlaybackRequiresPlaysInlineAttribute;
     348}
     349
     350- (void)_setInlineMediaPlaybackRequiresPlaysInlineAttribute:(BOOL)requires
     351{
     352    _inlineMediaPlaybackRequiresPlaysInlineAttribute = requires;
     353}
    338354#endif
    339355
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h

    r188891 r189112  
    4646#if TARGET_OS_IPHONE
    4747@property (nonatomic, setter=_setAlwaysRunsAtForegroundPriority:) BOOL _alwaysRunsAtForegroundPriority WK_AVAILABLE(NA, WK_IOS_TBA);
     48
     49@property (nonatomic, setter=_setInlineMediaPlaybackRequiresPlaysInlineAttribute:) BOOL _inlineMediaPlaybackRequiresPlaysInlineAttribute WK_AVAILABLE(NA, WK_IOS_TBA);
    4850#endif
    4951
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r189105 r189112  
    27352735    settings.setRequiresUserGestureForMediaPlayback(store.getBoolValueForKey(WebPreferencesKey::requiresUserGestureForMediaPlaybackKey()));
    27362736    settings.setAllowsInlineMediaPlayback(store.getBoolValueForKey(WebPreferencesKey::allowsInlineMediaPlaybackKey()));
     2737    settings.setInlineMediaPlaybackRequiresPlaysInlineAttribute(store.getBoolValueForKey(WebPreferencesKey::inlineMediaPlaybackRequiresPlaysInlineAttributeKey()));
    27372738    settings.setAllowsPictureInPictureMediaPlayback(store.getBoolValueForKey(WebPreferencesKey::allowsPictureInPictureMediaPlaybackKey()));
    27382739    settings.setMediaControlsScaleWithPageZoom(store.getBoolValueForKey(WebPreferencesKey::mediaControlsScaleWithPageZoomKey()));
  • trunk/Tools/ChangeLog

    r189109 r189112  
     12015-08-28  Jer Noble  <jer.noble@apple.com>
     2
     3        [iOS] Make the AllowsInlineMediaPlayback preference work in WebKit / WebKit2.
     4        https://bugs.webkit.org/show_bug.cgi?id=147512
     5
     6        Reviewed by Anders Carlsson.
     7
     8        Set the value of WebKitAllowsInlineMediaPlayback / WKPreferencesSetMediaPlaybackAllowsInline()
     9        to a consistent (true) value.
     10
     11        * DumpRenderTree/mac/DumpRenderTree.mm:
     12        (setDefaultsToConsistentValuesForTesting):
     13        * WebKitTestRunner/TestController.cpp:
     14        (WTR::TestController::resetPreferencesToConsistentValues):
     15
    1162015-08-28  Tim Horton  <timothy_horton@apple.com>
    217
  • trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm

    r188566 r189112  
    10061006        WebKitEnableFullDocumentTeardownPreferenceKey: @YES,
    10071007        WebKitFullScreenEnabledPreferenceKey: @YES,
     1008        WebKitAllowsInlineMediaPlaybackPreferenceKey: @YES,
     1009        WebKitInlineMediaPlaybackRequiresPlaysInlineAttributeKey: @NO,
    10081010        @"UseWebKitWebInspector": @YES,
    10091011#if !PLATFORM(IOS)
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r189109 r189112  
    639639    WKPreferencesSetStorageBlockingPolicy(preferences, kWKAllowAllStorage);
    640640
     641    WKPreferencesSetMediaPlaybackAllowsInline(preferences, true);
     642    WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute(preferences, false);
     643
    641644    WKCookieManagerDeleteAllCookies(WKContextGetCookieManager(m_context.get()));
    642645
  • trunk/Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm

    r188828 r189112  
    5656    globalWebViewConfiguration.processPool = [[WKProcessPool alloc] _initWithConfiguration:(_WKProcessPoolConfiguration *)contextConfiguration];
    5757    globalWebViewConfiguration.websiteDataStore = (WKWebsiteDataStore *)WKContextGetWebsiteDataStore(context);
     58
     59#if TARGET_OS_IPHONE
     60    globalWebViewConfiguration.allowsInlineMediaPlayback = YES;
     61    globalWebViewConfiguration._inlineMediaPlaybackRequiresPlaysInlineAttribute = NO;
     62#endif
    5863#endif
    5964}
Note: See TracChangeset for help on using the changeset viewer.