Changeset 176199 in webkit


Ignore:
Timestamp:
Nov 17, 2014, 6:07:04 AM (10 years ago)
Author:
eric.carlson@apple.com
Message:

[iOS] allow host application to opt-out of alternate fullscreen
https://bugs.webkit.org/show_bug.cgi?id=138787

Reviewed by Darin Adler.

Source/WebCore:

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::optimizedFullscreenSupported): Check mediaSession().allowsAlternateFullscreen.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::enterFullscreenOptimized): Do nothing if

mediaSession().allowsAlternateFullscreen says it isn't allowed.

  • html/HTMLMediaSession.cpp:

(WebCore::HTMLMediaSession::allowsAlternateFullscreen): New, check settings.

  • html/HTMLMediaSession.h:
  • page/Settings.cpp: Add allowsAlternateFullscreen.
  • page/Settings.in: Ditto.

Source/WebKit/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences allowsAlternateFullscreen]):
(-[WebPreferences setAllowsAlternateFullscreen:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetAllowsAlternateFullscreen):
(WKPreferencesGetAllowsAlternateFullscreen):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView initWithFrame:configuration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.h:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Location:
trunk/Source
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r176180 r176199  
     12014-11-17  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [iOS] allow host application to opt-out of alternate fullscreen
     4        https://bugs.webkit.org/show_bug.cgi?id=138787
     5
     6        Reviewed by Darin Adler.
     7
     8        * Modules/mediacontrols/MediaControlsHost.cpp:
     9        (WebCore::MediaControlsHost::optimizedFullscreenSupported): Check mediaSession().allowsAlternateFullscreen.
     10
     11        * html/HTMLMediaElement.cpp:
     12        (WebCore::HTMLMediaElement::enterFullscreenOptimized): Do nothing if
     13            mediaSession().allowsAlternateFullscreen says it isn't allowed.
     14
     15        * html/HTMLMediaSession.cpp:
     16        (WebCore::HTMLMediaSession::allowsAlternateFullscreen): New, check settings.
     17        * html/HTMLMediaSession.h:
     18
     19        * page/Settings.cpp: Add allowsAlternateFullscreen.
     20        * page/Settings.in: Ditto.
     21
    1222014-11-16  Zan Dobersek  <zdobersek@igalia.com>
    223
  • trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp

    r176090 r176199  
    199199{
    200200#if PLATFORM(IOS)
    201     return wkIsOptimizedFullscreenSupported();
    202 #else
    203     return false;
    204 #endif
     201    if (!wkIsOptimizedFullscreenSupported())
     202        return false;
     203#endif
     204
     205    return m_mediaElement->mediaSession().allowsAlternateFullscreen(*m_mediaElement);
    205206}
    206207
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r176108 r176199  
    49614961void HTMLMediaElement::enterFullscreenOptimized()
    49624962{
    4963     enterFullscreen(VideoFullscreenModeOptimized);
     4963    if (m_mediaSession->allowsAlternateFullscreen(*this))
     4964        enterFullscreen(VideoFullscreenModeOptimized);
    49644965}
    49654966
  • trunk/Source/WebCore/html/HTMLMediaSession.cpp

    r174666 r176199  
    302302}
    303303
     304bool HTMLMediaSession::allowsAlternateFullscreen(const HTMLMediaElement& element) const
     305{
     306    Settings* settings = element.document().settings();
     307    return settings && settings->allowsAlternateFullscreen();
     308}
     309
    304310#if ENABLE(MEDIA_SOURCE)
    305311const unsigned fiveMinutesOf1080PVideo = 290 * 1024 * 1024; // 290 MB is approximately 5 minutes of 8Mbps (1080p) content.
  • trunk/Source/WebCore/html/HTMLMediaSession.h

    r175328 r176199  
    6262#endif
    6363    bool requiresFullscreenForVideoPlayback(const HTMLMediaElement&) const;
     64    bool allowsAlternateFullscreen(const HTMLMediaElement&) const;
    6465    MediaPlayer::Preload effectivePreloadForElement(const HTMLMediaElement&) const;
    6566
  • trunk/Source/WebCore/page/Settings.cpp

    r175719 r176199  
    146146#endif
    147147
     148static const bool defaultAllowsAlternateFullscreen = true;
     149
    148150static const double defaultIncrementalRenderingSuppressionTimeoutInSeconds = 5;
    149151#if USE(UNIFIED_TEXT_CHECKING)
  • trunk/Source/WebCore/page/Settings.in

    r175494 r176199  
    126126mediaPlaybackRequiresUserGesture initial=defaultMediaPlaybackRequiresUserGesture
    127127mediaPlaybackAllowsInline initial=defaultMediaPlaybackAllowsInline
     128allowsAlternateFullscreen initial=defaultAllowsAlternateFullscreen
    128129passwordEchoEnabled initial=false
    129130suppressesIncrementalRendering initial=false
  • trunk/Source/WebKit/mac/ChangeLog

    r176164 r176199  
     12014-11-17  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [iOS] allow host application to opt-out of alternate fullscreen
     4        https://bugs.webkit.org/show_bug.cgi?id=138787
     5
     6        Reviewed by Darin Adler.
     7
     8        * WebView/WebPreferenceKeysPrivate.h:
     9        * WebView/WebPreferences.mm:
     10        (+[WebPreferences initialize]):
     11        (-[WebPreferences allowsAlternateFullscreen]):
     12        (-[WebPreferences setAllowsAlternateFullscreen:]):
     13        * WebView/WebPreferencesPrivate.h:
     14        * WebView/WebView.mm:
     15        (-[WebView _preferencesChanged:]):
     16
    1172014-11-16  Tim Horton  <timothy_horton@apple.com>
    218
  • trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h

    r175400 r176199  
    120120#define WebKitMediaPlaybackRequiresUserGesturePreferenceKey @"WebKitMediaPlaybackRequiresUserGesture"
    121121#define WebKitMediaPlaybackAllowsInlinePreferenceKey @"WebKitMediaPlaybackAllowsInline"
     122#define WebKitAllowsAlternateFullscreenPreferenceKey @"WebKitAllowsAlternateFullscreen"
    122123#define WebKitMockScrollbarsEnabledPreferenceKey @"WebKitMockScrollbarsEnabled"
    123124#define WebKitShouldDisplaySubtitlesPreferenceKey @"WebKitShouldDisplaySubtitles"
  • trunk/Source/WebKit/mac/WebView/WebPreferences.mm

    r175783 r176199  
    539539        [NSNumber numberWithBool:YES],   WebKitShouldRespectImageOrientationKey,
    540540#endif // PLATFORM(IOS)
     541        [NSNumber numberWithBool:YES],  WebKitAllowsAlternateFullscreenPreferenceKey,
    541542        [NSNumber numberWithBool:YES],  WebKitRequestAnimationFrameEnabledPreferenceKey,
    542543        [NSNumber numberWithBool:NO],   WebKitWantsBalancedSetDefersLoadingBehaviorKey,
     
    21632164}
    21642165
     2166- (BOOL)allowsAlternateFullscreen
     2167{
     2168    return [self _boolValueForKey:WebKitAllowsAlternateFullscreenPreferenceKey];
     2169}
     2170
     2171- (void)setAllowsAlternateFullscreen:(BOOL)flag
     2172{
     2173    [self _setBoolValue:flag forKey:WebKitAllowsAlternateFullscreenPreferenceKey];
     2174}
     2175
    21652176- (BOOL)mockScrollbarsEnabled
    21662177{
  • trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h

    r175783 r176199  
    239239- (BOOL)mediaPlaybackAllowsInline;
    240240
     241- (void)setAllowsAlternateFullscreen:(BOOL)flag;
     242- (BOOL)allowsAlternateFullscreen;
     243
    241244- (NSString *)pictographFontFamily;
    242245- (void)setPictographFontFamily:(NSString *)family;
  • trunk/Source/WebKit/mac/WebView/WebView.mm

    r175831 r176199  
    22582258    settings.setMediaPlaybackRequiresUserGesture([preferences mediaPlaybackRequiresUserGesture]);
    22592259    settings.setMediaPlaybackAllowsInline([preferences mediaPlaybackAllowsInline]);
     2260    settings.setAllowsAlternateFullscreen([preferences allowsAlternateFullscreen]);
    22602261    settings.setSuppressesIncrementalRendering([preferences suppressesIncrementalRendering]);
    22612262    settings.setBackspaceKeyNavigationEnabled([preferences backspaceKeyNavigationEnabled]);
  • trunk/Source/WebKit2/ChangeLog

    r176175 r176199  
     12014-11-17  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [iOS] allow host application to opt-out of alternate fullscreen
     4        https://bugs.webkit.org/show_bug.cgi?id=138787
     5
     6        Reviewed by Darin Adler.
     7
     8        * Shared/WebPreferencesDefinitions.h:
     9        * UIProcess/API/C/WKPreferences.cpp:
     10        (WKPreferencesSetAllowsAlternateFullscreen):
     11        (WKPreferencesGetAllowsAlternateFullscreen):
     12        * UIProcess/API/C/WKPreferencesRefPrivate.h:
     13        * UIProcess/API/Cocoa/WKWebView.mm:
     14        (-[WKWebView initWithFrame:configuration:]):
     15        * UIProcess/API/Cocoa/WKWebViewConfiguration.h:
     16        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
     17        (-[WKWebViewConfiguration init]):
     18        (-[WKWebViewConfiguration copyWithZone:]):
     19        * WebProcess/WebPage/WebPage.cpp:
     20        (WebKit::WebPage::updatePreferences):
     21
    1222014-11-16  Benjamin Poulain  <bpoulain@apple.com>
    223
  • trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h

    r175494 r176199  
    138138    macro(MediaPlaybackRequiresUserGesture, mediaPlaybackRequiresUserGesture, Bool, bool, DEFAULT_MEDIA_PLAYBACK_REQUIRES_USER_GESTURE) \
    139139    macro(MediaPlaybackAllowsInline, mediaPlaybackAllowsInline, Bool, bool, DEFAULT_MEDIA_PLAYBACK_ALLOWS_INLINE) \
     140    macro(AllowsAlternateFullscreen, allowsAlternateFullscreen, Bool, bool, true) \
    140141    macro(MediaPlaybackAllowsAirPlay, mediaPlaybackAllowsAirPlay, Bool, bool, true) \
    141142    macro(InspectorStartsAttached, inspectorStartsAttached, Bool, bool, true) \
  • trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp

    r175503 r176199  
    739739}
    740740
     741void WKPreferencesSetAllowsAlternateFullscreen(WKPreferencesRef preferencesRef, bool flag)
     742{
     743    toImpl(preferencesRef)->setAllowsAlternateFullscreen(flag);
     744}
     745
     746bool WKPreferencesGetAllowsAlternateFullscreen(WKPreferencesRef preferencesRef)
     747{
     748    return toImpl(preferencesRef)->allowsAlternateFullscreen();
     749}
     750
    741751void WKPreferencesSetShowsToolTipOverTruncatedText(WKPreferencesRef preferencesRef, bool flag)
    742752{
  • trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h

    r175061 r176199  
    165165WK_EXPORT bool WKPreferencesGetMediaPlaybackAllowsInline(WKPreferencesRef preferencesRef);
    166166
     167// Defaults to true.
     168WK_EXPORT void WKPreferencesSetAllowsAlternateFullscreen(WKPreferencesRef preferencesRef, bool flag);
     169WK_EXPORT bool WKPreferencesGetAllowsAlternateFullscreen(WKPreferencesRef preferencesRef);
     170
    167171// Defaults to false.
    168172WK_EXPORT void WKPreferencesSetShowsToolTipOverTruncatedText(WKPreferencesRef preferencesRef, bool flag);
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r176175 r176199  
    290290#if PLATFORM(IOS)
    291291    webPageConfiguration.preferenceValues.set(WebKit::WebPreferencesKey::mediaPlaybackAllowsInlineKey(), WebKit::WebPreferencesStore::Value(!![_configuration allowsInlineMediaPlayback]));
     292    webPageConfiguration.preferenceValues.set(WebKit::WebPreferencesKey::allowsAlternateFullscreenKey(), WebKit::WebPreferencesStore::Value(!![_configuration allowsAlternateFullscreen]));
    292293    webPageConfiguration.preferenceValues.set(WebKit::WebPreferencesKey::mediaPlaybackRequiresUserGestureKey(), WebKit::WebPreferencesStore::Value(!![_configuration mediaPlaybackRequiresUserAction]));
    293294    webPageConfiguration.preferenceValues.set(WebKit::WebPreferencesKey::mediaPlaybackAllowsAirPlayKey(), WebKit::WebPreferencesStore::Value(!![_configuration mediaPlaybackAllowsAirPlay]));
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.h

    r170495 r176199  
    103103@property (nonatomic) WKSelectionGranularity selectionGranularity;
    104104
     105/*! @abstract A Boolean value indicating whether alternate fullscreen mode is allowed.
     106 @discussion The default value is YES.
     107 */
     108@property (nonatomic) BOOL allowsAlternateFullscreen;
     109
    105110#endif
    106111
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm

    r171219 r176199  
    8989    _mediaPlaybackRequiresUserAction = YES;
    9090    _mediaPlaybackAllowsAirPlay = YES;
     91    _allowsAlternateFullscreen = YES;
    9192#endif
    9293   
     
    117118#if PLATFORM(IOS)
    118119    configuration->_allowsInlineMediaPlayback = self->_allowsInlineMediaPlayback;
     120    configuration->_allowsAlternateFullscreen = self->_allowsAlternateFullscreen;
    119121    configuration->_mediaPlaybackRequiresUserAction = self->_mediaPlaybackRequiresUserAction;
    120122    configuration->_mediaPlaybackAllowsAirPlay = self->_mediaPlaybackAllowsAirPlay;
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r176136 r176199  
    27102710    settings.setMediaPlaybackRequiresUserGesture(store.getBoolValueForKey(WebPreferencesKey::mediaPlaybackRequiresUserGestureKey()));
    27112711    settings.setMediaPlaybackAllowsInline(store.getBoolValueForKey(WebPreferencesKey::mediaPlaybackAllowsInlineKey()));
     2712    settings.setAllowsAlternateFullscreen(store.getBoolValueForKey(WebPreferencesKey::allowsAlternateFullscreenKey()));
    27122713    settings.setMockScrollbarsEnabled(store.getBoolValueForKey(WebPreferencesKey::mockScrollbarsEnabledKey()));
    27132714    settings.setHyperlinkAuditingEnabled(store.getBoolValueForKey(WebPreferencesKey::hyperlinkAuditingEnabledKey()));
Note: See TracChangeset for help on using the changeset viewer.