Changeset 91232 in webkit


Ignore:
Timestamp:
Jul 18, 2011 7:21:40 PM (13 years ago)
Author:
dino@apple.com
Message:

2011-07-18 Dean Jackson <dino@apple.com>

https://bugs.webkit.org/show_bug.cgi?id=64742
Expose WebPreferences for media playback requiring user gestures and inline playback

Reviewed by Simon Fraser.

Media playback already tested if it should require user gestures, but
no setting was ever exposed to clients. Also, some ports only allow media
playback to be fullscreen, so exposing a new setting for them.

Two new WebPreferences: MediaPlaybackRequiresUserGesture and
MediaPlaybackAllowsInline.

WebCore:

  • html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::HTMLMediaElement): Examine the new Setting for user gestures.
  • page/Settings.cpp: (WebCore::Settings::Settings):
  • page/Settings.h: Two new settings. (WebCore::Settings::setMediaPlaybackRequiresUserGesture): (WebCore::Settings::mediaPlaybackRequiresUserGesture): (WebCore::Settings::setMediaPlaybackAllowsInline): (WebCore::Settings::mediaPlaybackAllowsInline):

WebKit/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm: (+[WebPreferences initialize]): (-[WebPreferences mediaPlaybackRequiresUserGesture]): (-[WebPreferences setMediaPlaybackRequiresUserGesture:]): (-[WebPreferences mediaPlaybackAllowsInline]): (-[WebPreferences setMediaPlaybackAllowsInline:]):
  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm: (-[WebView _preferencesChanged:]):

WebKit/win:

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp: (WebPreferences::initializeDefaultSettings): (WebPreferences::setMediaPlaybackRequiresUserGesture): (WebPreferences::mediaPlaybackRequiresUserGesture): (WebPreferences::setMediaPlaybackAllowsInline): (WebPreferences::mediaPlaybackAllowsInline):
  • WebPreferences.h:
  • WebView.cpp: (WebView::notifyPreferencesChanged):

WebKit2:

  • Shared/WebPreferencesStore.h:
  • UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetMediaPlaybackRequiresUserGesture): (WKPreferencesGetMediaPlaybackRequiresUserGesture): (WKPreferencesSetMediaPlaybackAllowsInline): (WKPreferencesGetMediaPlaybackAllowsInline):
  • UIProcess/API/C/WKPreferencesPrivate.h:
  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences):
Location:
trunk/Source
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r91231 r91232  
     12011-07-18  Dean Jackson  <dino@apple.com>
     2
     3        https://bugs.webkit.org/show_bug.cgi?id=64742
     4        Expose WebPreferences for media playback requiring user gestures and inline playback
     5
     6        Reviewed by Simon Fraser.
     7
     8        Media playback already tested if it should require user gestures, but
     9        no setting was ever exposed to clients. Also, some ports only allow media
     10        playback to be fullscreen, so exposing a new setting for them.
     11
     12        * html/HTMLMediaElement.cpp:
     13        (WebCore::HTMLMediaElement::HTMLMediaElement): Examine the new Setting
     14        for user gestures.
     15        * page/Settings.cpp:
     16        (WebCore::Settings::Settings):
     17        * page/Settings.h: Two new settings.
     18        (WebCore::Settings::setMediaPlaybackRequiresUserGesture):
     19        (WebCore::Settings::mediaPlaybackRequiresUserGesture):
     20        (WebCore::Settings::setMediaPlaybackAllowsInline):
     21        (WebCore::Settings::mediaPlaybackAllowsInline):
     22
    1232011-07-18  Ryosuke Niwa  <rniwa@webkit.org>
    224
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r90039 r91232  
    185185    document->registerForMediaVolumeCallbacks(this);
    186186    document->registerForPrivateBrowsingStateChangedCallbacks(this);
     187   
     188    if (document->settings() && document->settings()->mediaPlaybackRequiresUserGesture())
     189        m_restrictions |= RequireUserGestureForRateChangeRestriction;
    187190}
    188191
  • trunk/Source/WebCore/page/Settings.cpp

    r90259 r91232  
    206206    , m_useHixie76WebSocketProtocol(true)
    207207#endif
     208    , m_mediaPlaybackRequiresUserGesture(false)
     209    , m_mediaPlaybackAllowsInline(true)
    208210    , m_loadsImagesAutomaticallyTimer(this, &Settings::loadsImagesAutomaticallyTimerFired)
    209211{
  • trunk/Source/WebCore/page/Settings.h

    r90301 r91232  
    432432        bool useHixie76WebSocketProtocol() { return m_useHixie76WebSocketProtocol; }
    433433#endif
     434
     435        void setMediaPlaybackRequiresUserGesture(bool flag) { m_mediaPlaybackRequiresUserGesture = flag; };
     436        bool mediaPlaybackRequiresUserGesture() const { return m_mediaPlaybackRequiresUserGesture; }
     437
     438        void setMediaPlaybackAllowsInline(bool flag) { m_mediaPlaybackAllowsInline = flag; };
     439        bool mediaPlaybackAllowsInline() const { return m_mediaPlaybackAllowsInline; }
    434440
    435441    private:
     
    545551        bool m_useHixie76WebSocketProtocol : 1;
    546552#endif
     553        bool m_mediaPlaybackRequiresUserGesture : 1;
     554        bool m_mediaPlaybackAllowsInline : 1;
    547555
    548556        Timer<Settings> m_loadsImagesAutomaticallyTimer;
  • trunk/Source/WebKit/mac/ChangeLog

    r91198 r91232  
     12011-07-18  Dean Jackson  <dino@apple.com>
     2
     3        https://bugs.webkit.org/show_bug.cgi?id=64742
     4        Expose WebPreferences for media playback requiring user gestures and inline playback
     5
     6        Reviewed by Simon Fraser.
     7
     8        Two new WebPreferences: MediaPlaybackRequiresUserGesture and
     9        MediaPlaybackAllowsInline.
     10
     11        * WebView/WebPreferenceKeysPrivate.h:
     12        * WebView/WebPreferences.mm:
     13        (+[WebPreferences initialize]):
     14        (-[WebPreferences mediaPlaybackRequiresUserGesture]):
     15        (-[WebPreferences setMediaPlaybackRequiresUserGesture:]):
     16        (-[WebPreferences mediaPlaybackAllowsInline]):
     17        (-[WebPreferences setMediaPlaybackAllowsInline:]):
     18        * WebView/WebPreferencesPrivate.h:
     19        * WebView/WebView.mm:
     20        (-[WebView _preferencesChanged:]):
     21
    1222011-07-18  Pratik Solanki  <psolanki@apple.com>
    223
  • trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h

    r89669 r91232  
    109109#define WebKitAVFoundationEnabledKey @"WebKitAVFoundationEnabled"
    110110#define WebKitHixie76WebSocketProtocolEnabledKey @"WebKitHixie76WebSocketProtocolEnabled"
     111#define WebKitMediaPlaybackRequiresUserGesturePreferenceKey @"WebKitMediaPlaybackRequiresUserGesture"
     112#define WebKitMediaPlaybackAllowsInlinePreferenceKey @"WebKitMediaPlaybackAllowsInline"
    111113
    112114// These are private both because callers should be using the cover methods and because the
  • trunk/Source/WebKit/mac/WebView/WebPreferences.mm

    r89669 r91232  
    378378        [NSNumber numberWithBool:YES],  WebKitAVFoundationEnabledKey,
    379379        [NSNumber numberWithBool:YES],  WebKitHixie76WebSocketProtocolEnabledKey,
     380        [NSNumber numberWithBool:NO],   WebKitMediaPlaybackRequiresUserGesturePreferenceKey,
     381        [NSNumber numberWithBool:YES],  WebKitMediaPlaybackAllowsInlinePreferenceKey,
     382
    380383        [NSNumber numberWithLongLong:WebCore::ApplicationCacheStorage::noQuota()], WebKitApplicationCacheTotalQuota,
    381384        [NSNumber numberWithLongLong:WebCore::ApplicationCacheStorage::noQuota()], WebKitApplicationCacheDefaultOriginQuota,
     
    14841487    return [self _boolValueForKey:WebKitHixie76WebSocketProtocolEnabledKey];
    14851488}
     1489
     1490- (BOOL)mediaPlaybackRequiresUserGesture
     1491{
     1492    return [self _boolValueForKey:WebKitMediaPlaybackRequiresUserGesturePreferenceKey];
     1493}
     1494
     1495- (void)setMediaPlaybackRequiresUserGesture:(BOOL)flag
     1496{
     1497    [self _setBoolValue:flag forKey:WebKitMediaPlaybackRequiresUserGesturePreferenceKey];
     1498}
     1499
     1500- (BOOL)mediaPlaybackAllowsInline
     1501{
     1502    return [self _boolValueForKey:WebKitMediaPlaybackAllowsInlinePreferenceKey];
     1503}
     1504
     1505- (void)setMediaPlaybackAllowsInline:(BOOL)flag
     1506{
     1507    [self _setBoolValue:flag forKey:WebKitMediaPlaybackAllowsInlinePreferenceKey];
     1508}
    14861509@end
    14871510
  • trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h

    r89669 r91232  
    211211- (void)setHyperlinkAuditingEnabled:(BOOL)enabled;
    212212
     213- (void)setMediaPlaybackRequiresUserGesture:(BOOL)flag;
     214- (BOOL)mediaPlaybackRequiresUserGesture;
     215
     216- (void)setMediaPlaybackAllowsInline:(BOOL)flag;
     217- (BOOL)mediaPlaybackAllowsInline;
     218
    213219// Other private methods
    214220- (void)_postPreferencesChangedNotification;
  • trunk/Source/WebKit/mac/WebView/WebView.mm

    r91134 r91232  
    15941594    settings->setUseHixie76WebSocketProtocol([preferences isHixie76WebSocketProtocolEnabled]);
    15951595#endif
     1596    settings->setMediaPlaybackRequiresUserGesture([preferences mediaPlaybackRequiresUserGesture]);
     1597    settings->setMediaPlaybackAllowsInline([preferences mediaPlaybackAllowsInline]);
    15961598
    15971599    // Application Cache Preferences are stored on the global cache storage manager, not in Settings.
  • trunk/Source/WebKit/win/ChangeLog

    r91161 r91232  
     12011-07-18  Dean Jackson  <dino@apple.com>
     2
     3        https://bugs.webkit.org/show_bug.cgi?id=64742
     4        Expose WebPreferences for media playback requiring user gestures and inline playback
     5
     6        Reviewed by Simon Fraser.
     7
     8        Two new WebPreferences: MediaPlaybackRequiresUserGesture and
     9        MediaPlaybackAllowsInline.
     10
     11        * Interfaces/IWebPreferencesPrivate.idl:
     12        * WebPreferenceKeysPrivate.h:
     13        * WebPreferences.cpp:
     14        (WebPreferences::initializeDefaultSettings):
     15        (WebPreferences::setMediaPlaybackRequiresUserGesture):
     16        (WebPreferences::mediaPlaybackRequiresUserGesture):
     17        (WebPreferences::setMediaPlaybackAllowsInline):
     18        (WebPreferences::mediaPlaybackAllowsInline):
     19        * WebPreferences.h:
     20        * WebView.cpp:
     21        (WebView::notifyPreferencesChanged):
     22
    1232011-07-16  Simon Fraser  <simon.fraser@apple.com>
    224
  • trunk/Source/WebKit/win/Interfaces/IWebPreferencesPrivate.idl

    r89669 r91232  
    131131    HRESULT setHixie76WebSocketProtocolEnabled([in] BOOL enabled);
    132132    HRESULT hixie76WebSocketProtocolEnabled([out, retval] BOOL* enabled);
     133
     134    HRESULT setMediaPlaybackRequiresUserGesture([in] BOOL);
     135    HRESULT mediaPlaybackRequiresUserGesture([out, retval] BOOL*);
     136
     137    HRESULT setMediaPlaybackAllowsInline([in] BOOL);
     138    HRESULT mediaPlaybackAllowsInline([out, retval] BOOL*);
    133139}
  • trunk/Source/WebKit/win/WebPreferenceKeysPrivate.h

    r89669 r91232  
    155155
    156156#define WebKitHixie76WebSocketProtocolEnabledPreferenceKey "WebKitHixie76WebSocketProtocolEnabled"
     157
     158#define WebKitMediaPlaybackRequiresUserGesturePreferenceKey "WebKitMediaPlaybackRequiresUserGesture"
     159
     160#define WebKitMediaPlaybackAllowsInlinePreferenceKey "WebKitMediaPlaybackAllowsInline"
     161
  • trunk/Source/WebKit/win/WebPreferences.cpp

    r89669 r91232  
    269269    CFDictionaryAddValue(defaults, CFSTR(WebKitHixie76WebSocketProtocolEnabledPreferenceKey), kCFBooleanTrue);
    270270
     271    CFDictionaryAddValue(defaults, CFSTR(WebKitMediaPlaybackRequiresUserGesturePreferenceKey), kCFBooleanFalse);
     272    CFDictionaryAddValue(defaults, CFSTR(WebKitMediaPlaybackAllowsInlinePreferenceKey), kCFBooleanTrue);
     273
    271274    defaultSettings = defaults;
    272275}
     
    955958{
    956959    *enabled = boolValueForKey(CFSTR(WebKitHixie76WebSocketProtocolEnabledPreferenceKey));
     960    return S_OK;
     961}
     962
     963HRESULT STDMETHODCALLTYPE WebPreferences::setMediaPlaybackRequiresUserGesture(
     964    /* [in] */ BOOL enabled)
     965{
     966    setBoolValue(CFSTR(WebKitMediaPlaybackRequiresUserGesturePreferenceKey), enabled);
     967    return S_OK;
     968}
     969
     970HRESULT STDMETHODCALLTYPE WebPreferences::mediaPlaybackRequiresUserGesture(
     971    /* [retval][out] */ BOOL* enabled)
     972{
     973    *enabled = boolValueForKey(CFSTR(WebKitMediaPlaybackRequiresUserGesturePreferenceKey));
     974    return S_OK;
     975}
     976
     977HRESULT STDMETHODCALLTYPE WebPreferences::setMediaPlaybackAllowsInline(
     978    /* [in] */ BOOL enabled)
     979{
     980    setBoolValue(CFSTR(WebKitMediaPlaybackAllowsInlinePreferenceKey), enabled);
     981    return S_OK;
     982}
     983
     984HRESULT STDMETHODCALLTYPE WebPreferences::mediaPlaybackAllowsInline(
     985    /* [retval][out] */ BOOL* enabled)
     986{
     987    *enabled = boolValueForKey(CFSTR(WebKitMediaPlaybackAllowsInlinePreferenceKey));
    957988    return S_OK;
    958989}
  • trunk/Source/WebKit/win/WebPreferences.h

    r89669 r91232  
    439439    virtual HRESULT STDMETHODCALLTYPE setHixie76WebSocketProtocolEnabled(BOOL);
    440440
     441    virtual HRESULT STDMETHODCALLTYPE mediaPlaybackRequiresUserGesture(BOOL*);
     442    virtual HRESULT STDMETHODCALLTYPE setMediaPlaybackRequiresUserGesture(BOOL);
     443
     444    virtual HRESULT STDMETHODCALLTYPE mediaPlaybackAllowsInline(BOOL*);
     445    virtual HRESULT STDMETHODCALLTYPE setMediaPlaybackAllowsInline(BOOL);
     446
    441447    // WebPreferences
    442448
  • trunk/Source/WebKit/win/WebView.cpp

    r89669 r91232  
    48714871#endif
    48724872
     4873    hr = prefsPrivate->mediaPlaybackRequiresUserGesture(&enabled);
     4874    if (FAILED(hr))
     4875        return hr;
     4876    settings->setMediaPlaybackRequiresUserGesture(enabled);
     4877
     4878    hr = prefsPrivate->mediaPlaybackAllowsInline(&enabled);
     4879    if (FAILED(hr))
     4880        return hr;
     4881    settings->setMediaPlaybackAllowsInline(enabled);
     4882
    48734883    return S_OK;
    48744884}
  • trunk/Source/WebKit2/ChangeLog

    r91206 r91232  
     12011-07-18  Dean Jackson  <dino@apple.com>
     2
     3        https://bugs.webkit.org/show_bug.cgi?id=64742
     4        Expose WebPreferences for media playback requiring user gestures and inline playback
     5
     6        Reviewed by Simon Fraser.
     7
     8        Two new WebPreferences: MediaPlaybackRequiresUserGesture and
     9        MediaPlaybackAllowsInline.
     10
     11        * Shared/WebPreferencesStore.h:
     12        * UIProcess/API/C/WKPreferences.cpp:
     13        (WKPreferencesSetMediaPlaybackRequiresUserGesture):
     14        (WKPreferencesGetMediaPlaybackRequiresUserGesture):
     15        (WKPreferencesSetMediaPlaybackAllowsInline):
     16        (WKPreferencesGetMediaPlaybackAllowsInline):
     17        * UIProcess/API/C/WKPreferencesPrivate.h:
     18        * WebProcess/WebPage/WebPage.cpp:
     19        (WebKit::WebPage::updatePreferences):
     20
    1212011-07-18  James Robinson  <jamesr@chromium.org>
    222
  • trunk/Source/WebKit2/Shared/WebPreferencesStore.h

    r89894 r91232  
    7777    macro(AVFoundationEnabled, isAVFoundationEnabled, Bool, bool, true) \
    7878    macro(Hixie76WebSocketProtocolEnabled, hixie76WebSocketProtocolEnabled, Bool, bool, true) \
     79    macro(MediaPlaybackRequiresUserGesture, mediaPlaybackRequiresUserGesture, Bool, bool, false) \
     80    macro(MediaPlaybackAllowsInline, mediaPlaybackAllowsInline, Bool, bool, true) \
    7981    \
    8082
  • trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp

    r89894 r91232  
    572572    return toImpl(preferencesRef)->hixie76WebSocketProtocolEnabled();
    573573}
     574
     575void WKPreferencesSetMediaPlaybackRequiresUserGesture(WKPreferencesRef preferencesRef, bool flag)
     576{
     577    toImpl(preferencesRef)->setMediaPlaybackRequiresUserGesture(flag);
     578}
     579
     580bool WKPreferencesGetMediaPlaybackRequiresUserGesture(WKPreferencesRef preferencesRef)
     581{
     582    return toImpl(preferencesRef)->mediaPlaybackRequiresUserGesture();
     583}
     584
     585void WKPreferencesSetMediaPlaybackAllowsInline(WKPreferencesRef preferencesRef, bool flag)
     586{
     587    toImpl(preferencesRef)->setMediaPlaybackAllowsInline(flag);
     588}
     589
     590bool WKPreferencesGetMediaPlaybackAllowsInline(WKPreferencesRef preferencesRef)
     591{
     592    return toImpl(preferencesRef)->mediaPlaybackAllowsInline();
     593}
  • trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h

    r89894 r91232  
    133133WK_EXPORT bool WKPreferencesGetHixie76WebSocketProtocolEnabled(WKPreferencesRef preferencesRef);
    134134
     135// Defaults to false.
     136WK_EXPORT void WKPreferencesSetMediaPlaybackRequiresUserGesture(WKPreferencesRef preferencesRef, bool flag);
     137WK_EXPORT bool WKPreferencesGetMediaPlaybackRequiresUserGesture(WKPreferencesRef preferencesRef);
     138
     139// Defaults to true.
     140WK_EXPORT void WKPreferencesSetMediaPlaybackAllowsInline(WKPreferencesRef preferencesRef, bool flag);
     141WK_EXPORT bool WKPreferencesGetMediaPlaybackAllowsInline(WKPreferencesRef preferencesRef);
     142
    135143#ifdef __cplusplus
    136144}
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r91108 r91232  
    16031603    settings->setShowRepaintCounter(store.getBoolValueForKey(WebPreferencesKey::compositingRepaintCountersVisibleKey()));
    16041604    settings->setWebGLEnabled(store.getBoolValueForKey(WebPreferencesKey::webGLEnabledKey()));
     1605    settings->setMediaPlaybackRequiresUserGesture(store.getBoolValueForKey(WebPreferencesKey::mediaPlaybackRequiresUserGestureKey()));
     1606    settings->setMediaPlaybackAllowsInline(store.getBoolValueForKey(WebPreferencesKey::mediaPlaybackAllowsInlineKey()));
    16051607
    16061608#if ENABLE(DATABASE)
Note: See TracChangeset for help on using the changeset viewer.