Changeset 177622 in webkit


Ignore:
Timestamp:
Dec 20, 2014, 10:28:37 AM (11 years ago)
Author:
eric.carlson@apple.com
Message:

[iOS] add optimized fullscreen API
https://bugs.webkit.org/show_bug.cgi?id=139833
<rdar://problem/18844486>

Reviewed by Simon Fraser.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig: Add ENABLE_VIDEO_PRESENTATION_MODE.

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig: Add ENABLE_VIDEO_PRESENTATION_MODE.
  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::optimizedFullscreenSupported): Deleted.
(WebCore::MediaControlsHost::fullscreenMode): Deleted.

  • Modules/mediacontrols/MediaControlsHost.h:
  • Modules/mediacontrols/MediaControlsHost.idl:
  • Modules/mediacontrols/mediaControlsiOS.js:

(ControllerIOS.prototype.addVideoListeners): Listen for 'webkitpresentationmodechanged'.
(ControllerIOS.prototype.removeVideoListeners): Stop listening for 'webkitpresentationmodechanged'.
(ControllerIOS.prototype.configureInlineControls): Call video element instead of using the now

removed host property.

(ControllerIOS.prototype.updateControls): Ditto.
(ControllerIOS.prototype.presentationMode): New, return webkitPresentationMode when possible.
(ControllerIOS.prototype.handleFullscreenButtonClicked): Use webkitSetPresentationMode when possible.
(ControllerIOS.prototype.handleOptimizedFullscreenButtonClicked): Use video element instead of

using the now removed host method.

(ControllerIOS.prototype.handlePresentationModeChange): New, react to presentation mode changes.
(ControllerIOS.prototype.handleFullscreenChange): Call handlePresentationModeChange.

  • dom/EventNames.h: Add webkitpresentationmodechanged.
  • html/HTMLAttributeNames.in: Add onwebkitpresentationmodechanged.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::enterFullscreen): Early return when asked to change to the current

mode. Call fullscreenModeChanged() instead of whacking the instance variable directly.

(WebCore::HTMLMediaElement::exitFullscreen): Ditto.

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::fullscreenModeChanged): Make virtual.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::parseAttribute): Deal with onwebkitpresentationmodechange.
(WebCore::presentationModeFullscreen): New.
(WebCore::presentationModeOptimized): Ditto.
(WebCore::presentationModeInline): Ditto.
(WebCore::HTMLVideoElement::webkitSupportsPresentationMode): Ditto.
(WebCore::HTMLVideoElement::webkitSetPresentationMode): Ditto.
(WebCore::HTMLVideoElement::webkitPresentationMode): Ditto.
(WebCore::HTMLVideoElement::fullscreenModeChanged): Ditto.

  • html/HTMLVideoElement.h:
  • html/HTMLVideoElement.idl:
  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(WebVideoFullscreenInterfaceAVKit::setIsOptimized): Simplify the logic a bit. Don't report

a mode change when

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig: Add ENABLE_VIDEO_PRESENTATION_MODE.

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig: Add ENABLE_VIDEO_PRESENTATION_MODE.

Source/WTF:

  • wtf/Platform.h: Define ENABLE_VIDEO_PRESENTATION_MODE.
Location:
trunk/Source
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r177621 r177622  
     12014-12-20  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [iOS] add optimized fullscreen API
     4        https://bugs.webkit.org/show_bug.cgi?id=139833
     5        <rdar://problem/18844486>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * Configurations/FeatureDefines.xcconfig: Add ENABLE_VIDEO_PRESENTATION_MODE.
     10
    1112014-12-20  David Kilzer  <ddkilzer@apple.com>
    212
  • trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig

    r176846 r177622  
    194194ENABLE_USERSELECT_ALL = ENABLE_USERSELECT_ALL;
    195195ENABLE_VIDEO = ENABLE_VIDEO;
     196ENABLE_VIDEO_PRESENTATION_MODE[sdk=iphone*] = ENABLE_VIDEO_PRESENTATION_MODE;
    196197ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
    197198ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
     
    227228ENABLE_SATURATED_LAYOUT_ARITHMETIC = ENABLE_SATURATED_LAYOUT_ARITHMETIC;
    228229
    229 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RUBBER_BANDING) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(ENABLE_SATURATED_LAYOUT_ARITHMETIC);
     230FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RUBBER_BANDING) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(ENABLE_SATURATED_LAYOUT_ARITHMETIC) $(ENABLE_VIDEO_PRESENTATION_MODE);
  • trunk/Source/WTF/ChangeLog

    r177568 r177622  
     12014-12-20  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [iOS] add optimized fullscreen API
     4        https://bugs.webkit.org/show_bug.cgi?id=139833
     5        <rdar://problem/18844486>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * wtf/Platform.h: Define ENABLE_VIDEO_PRESENTATION_MODE.
     10
    1112014-12-18  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
    212
  • trunk/Source/WTF/wtf/Platform.h

    r177319 r177622  
    10981098#endif
    10991099
     1100#if PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000
     1101#define ENABLE_VIDEO_PRESENTATION_MODE 1
     1102#endif
     1103
    11001104#endif /* WTF_Platform_h */
  • trunk/Source/WebCore/ChangeLog

    r177621 r177622  
     12014-12-20  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [iOS] add optimized fullscreen API
     4        https://bugs.webkit.org/show_bug.cgi?id=139833
     5        <rdar://problem/18844486>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * Configurations/FeatureDefines.xcconfig: Add ENABLE_VIDEO_PRESENTATION_MODE.
     10
     11        * Modules/mediacontrols/MediaControlsHost.cpp:
     12        (WebCore::MediaControlsHost::optimizedFullscreenSupported): Deleted.
     13        (WebCore::MediaControlsHost::fullscreenMode): Deleted.
     14        * Modules/mediacontrols/MediaControlsHost.h:
     15        * Modules/mediacontrols/MediaControlsHost.idl:
     16
     17        * Modules/mediacontrols/mediaControlsiOS.js:
     18        (ControllerIOS.prototype.addVideoListeners): Listen for 'webkitpresentationmodechanged'.
     19        (ControllerIOS.prototype.removeVideoListeners): Stop listening for 'webkitpresentationmodechanged'.
     20        (ControllerIOS.prototype.configureInlineControls): Call video element instead of using the now
     21            removed host property.
     22        (ControllerIOS.prototype.updateControls): Ditto.
     23        (ControllerIOS.prototype.presentationMode): New, return webkitPresentationMode when possible.
     24        (ControllerIOS.prototype.handleFullscreenButtonClicked): Use webkitSetPresentationMode when possible.
     25        (ControllerIOS.prototype.handleOptimizedFullscreenButtonClicked): Use video element instead of
     26            using the now removed host method.
     27        (ControllerIOS.prototype.handlePresentationModeChange): New, react to presentation mode changes.
     28        (ControllerIOS.prototype.handleFullscreenChange): Call handlePresentationModeChange.
     29
     30        * dom/EventNames.h: Add webkitpresentationmodechanged.
     31
     32        * html/HTMLAttributeNames.in: Add onwebkitpresentationmodechanged.
     33
     34        * html/HTMLMediaElement.cpp:
     35        (WebCore::HTMLMediaElement::enterFullscreen): Early return when asked to change to the current
     36            mode. Call fullscreenModeChanged() instead of whacking the instance variable directly.
     37        (WebCore::HTMLMediaElement::exitFullscreen): Ditto.
     38        * html/HTMLMediaElement.h:
     39        (WebCore::HTMLMediaElement::fullscreenModeChanged): Make virtual.
     40
     41        * html/HTMLVideoElement.cpp:
     42        (WebCore::HTMLVideoElement::parseAttribute): Deal with onwebkitpresentationmodechange.
     43        (WebCore::presentationModeFullscreen): New.
     44        (WebCore::presentationModeOptimized): Ditto.
     45        (WebCore::presentationModeInline): Ditto.
     46        (WebCore::HTMLVideoElement::webkitSupportsPresentationMode): Ditto.
     47        (WebCore::HTMLVideoElement::webkitSetPresentationMode): Ditto.
     48        (WebCore::HTMLVideoElement::webkitPresentationMode): Ditto.
     49        (WebCore::HTMLVideoElement::fullscreenModeChanged): Ditto.
     50        * html/HTMLVideoElement.h:
     51        * html/HTMLVideoElement.idl:
     52
     53        * platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
     54        (WebVideoFullscreenInterfaceAVKit::setIsOptimized): Simplify the logic a bit. Don't report
     55            a mode change when
     56
    1572014-12-20  David Kilzer  <ddkilzer@apple.com>
    258
  • trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig

    r176846 r177622  
    194194ENABLE_USERSELECT_ALL = ENABLE_USERSELECT_ALL;
    195195ENABLE_VIDEO = ENABLE_VIDEO;
     196ENABLE_VIDEO_PRESENTATION_MODE[sdk=iphone*] = ENABLE_VIDEO_PRESENTATION_MODE;
    196197ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
    197198ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
     
    227228ENABLE_SATURATED_LAYOUT_ARITHMETIC = ENABLE_SATURATED_LAYOUT_ARITHMETIC;
    228229
    229 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RUBBER_BANDING) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(ENABLE_SATURATED_LAYOUT_ARITHMETIC);
     230FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RUBBER_BANDING) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(ENABLE_SATURATED_LAYOUT_ARITHMETIC) $(ENABLE_VIDEO_PRESENTATION_MODE);
  • trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp

    r177012 r177622  
    196196}
    197197   
    198 bool MediaControlsHost::optimizedFullscreenSupported()
    199 {
    200 #if PLATFORM(IOS)
    201     if (!wkIsOptimizedFullscreenSupported())
    202         return false;
    203 #endif
    204 
    205     return m_mediaElement->mediaSession().allowsAlternateFullscreen(*m_mediaElement);
    206 }
    207 
    208198void MediaControlsHost::updateCaptionDisplaySizes()
    209199{
     
    288278}
    289279
    290 String MediaControlsHost::fullscreenMode() const
    291 {
    292     DEPRECATED_DEFINE_STATIC_LOCAL(String, none, (ASCIILiteral("none")));
    293     DEPRECATED_DEFINE_STATIC_LOCAL(String, standard, (ASCIILiteral("standard")));
    294     DEPRECATED_DEFINE_STATIC_LOCAL(String, optimized, (ASCIILiteral("optimized")));
    295     String mode = none;
    296 
    297     if (m_mediaElement->fullscreenMode() == HTMLMediaElement::VideoFullscreenModeNone)
    298         mode = none;
    299     else if (m_mediaElement->fullscreenMode() == HTMLMediaElement::VideoFullscreenModeStandard)
    300         mode = standard;
    301     else if (m_mediaElement->fullscreenMode() & HTMLMediaElement::VideoFullscreenModeOptimized)
    302         mode = optimized;
    303    
    304     LOG(Media, "MediaControlsHost::fullscreenMode - returning \"%s\"", mode.utf8().data());
    305 
    306     return mode;
    307 }
    308 
    309280String MediaControlsHost::mediaUIImageData(const String& partID) const
    310281{
  • trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.h

    r175750 r177622  
    7373    void enterFullscreenOptimized();
    7474    bool optimizedFullscreenSupported();
    75     String fullscreenMode() const;
    7675    String mediaUIImageData(const String&) const;
    7776
  • trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.idl

    r176090 r177622  
    2828    "airplay",
    2929    "tvout"
    30 };
    31 
    32 enum FullscreenMode {
    33     "none",
    34     "standard",
    35     "optimized"
    3630};
    3731
     
    6862    void exitedFullscreen();
    6963    void enterFullscreenOptimized();
    70     readonly attribute boolean optimizedFullscreenSupported;
    71     readonly attribute FullscreenMode fullscreenMode;
    7264    DOMString mediaUIImageData(MediaUIPartID partID);
    7365};
  • trunk/Source/WebCore/Modules/mediacontrols/mediaControlsiOS.js

    r176857 r177622  
    3434        this.listenFor(this.video, 'webkitendfullscreen', this.handleFullscreenChange);
    3535        this.listenFor(this.video, 'webkitcurrentplaybacktargetiswirelesschanged', this.handleWirelessPlaybackChange);
     36        this.listenFor(this.video, 'webkitpresentationmodechanged', this.handlePresentationModeChange);
    3637    },
    3738
     
    4243        this.stopListeningFor(this.video, 'webkitendfullscreen', this.handleFullscreenChange);
    4344        this.stopListeningFor(this.video, 'webkitcurrentplaybacktargetiswirelesschanged', this.handleWirelessPlaybackChange);
     45        this.stopListeningFor(this.video, 'webkitpresentationmodechanged', this.handlePresentationModeChange);
    4446
    4547        this.setShouldListenForPlaybackTargetAvailabilityEvent(false);
     
    215217        if (!this.isAudio()) {
    216218            this.controls.panel.appendChild(this.controls.fullscreenButton);
    217             if (this.host.optimizedFullscreenSupported)
     219            if ('webkitSupportsPresentationMode' in this.video && this.video.webkitSupportsPresentationMode('optimized'))
    218220                this.controls.panel.appendChild(this.controls.optimizedFullscreenButton);
    219221        }
     
    244246        if (this.shouldHaveStartPlaybackButton())
    245247            this.setControlsType(ControllerIOS.StartPlaybackControls);
    246         else if (this.isFullScreen() && this.host.fullscreenMode !== "optimized")
     248        else if (this.presentationMode() === "fullscreen")
    247249            this.setControlsType(Controller.FullScreenControls);
    248250        else
     
    392394    },
    393395
     396    presentationMode: function() {
     397        if ('webkitPresentationMode' in this.video)
     398            return this.video.webkitPresentationMode;
     399
     400        if (this.isFullScreen())
     401            return 'fullscreen';
     402
     403        return 'inline';
     404    },
     405
    394406    isFullScreen: function()
    395407    {
     
    398410
    399411    handleFullscreenButtonClicked: function(event) {
     412        if ('webkitSetPresentationMode' in this.video) {
     413            if (this.presentationMode() === 'fullscreen')
     414                this.video.webkitSetPresentationMode('inline');
     415            else
     416                this.video.webkitSetPresentationMode('fullscreen');
     417
     418            return;
     419        }
     420
    400421        if (this.isFullScreen())
    401422            this.video.webkitExitFullscreen();
     
    422443
    423444    handleOptimizedFullscreenButtonClicked: function(event) {
    424         if (this.isFullScreen())
    425             this.video.webkitExitFullscreen();
     445        if (!('webkitSetPresentationMode' in this.video))
     446            return;
     447
     448        if (this.presentationMode() === 'optimized')
     449            this.video.webkitSetPresentationMode('inline');
    426450        else
    427             this.host.enterFullscreenOptimized();
     451            this.video.webkitSetPresentationMode('optimized');
    428452    },
    429453       
     
    572596    },
    573597
     598    handlePresentationModeChange: function(event)
     599    {
     600        var presentationMode = this.presentationMode();
     601
     602        switch (presentationMode) {
     603            case 'inline':
     604                this.controls.inlinePlaybackPlaceholder.classList.add(this.ClassNames.hidden);
     605                break;
     606            case 'optimized':
     607                var backgroundImageSVG = "url('" + this.host.mediaUIImageData("optimized-fullscreen-placeholder") + "')";
     608                this.controls.inlinePlaybackPlaceholder.style.backgroundImage = backgroundImageSVG;
     609                this.controls.inlinePlaybackPlaceholder.setAttribute('aria-label', "video playback placeholder");
     610                this.controls.inlinePlaybackPlaceholder.classList.remove(this.ClassNames.hidden);
     611                break;
     612        }
     613
     614        this.updateControls();
     615        this.updateCaptionContainer();
     616        if (presentationMode != 'fullscreen' && this.video.paused && this.controlsAreHidden())
     617            this.showControls();
     618    },
     619
    574620    handleFullscreenChange: function(event)
    575621    {
    576622        Controller.prototype.handleFullscreenChange.call(this, event);
    577 
    578         if (!this.isFullScreen()) {
    579             this.controls.inlinePlaybackPlaceholder.classList.add(this.ClassNames.hidden);
    580         } else if (this.host.fullscreenMode === "optimized") {
    581             var backgroundImageSVG = "url('" + this.host.mediaUIImageData("optimized-fullscreen-placeholder") + "')";
    582             this.controls.inlinePlaybackPlaceholder.style.backgroundImage = backgroundImageSVG;
    583             this.controls.inlinePlaybackPlaceholder.setAttribute('aria-label', "video playback placeholder");
    584 
    585             this.controls.inlinePlaybackPlaceholder.classList.remove(this.ClassNames.hidden);
    586         }
    587 
    588         this.updateCaptionContainer();
     623        this.handlePresentationModeChange(event);
    589624    },
    590625
  • trunk/Source/WebCore/dom/EventNames.h

    r176423 r177622  
    295295    macro(autocompleteerror) \
    296296    /* End of ENABLE(REQUEST_AUTOCOMPLETE) */ \
     297    \
     298    /* PLATFORM(IOS) */ \
     299    macro(webkitpresentationmodechanged) \
     300    /* End of ENABLE(IOS_AIRPLAY) */ \
    297301
    298302// end of DOM_EVENT_NAMES_FOR_EACH
  • trunk/Source/WebCore/html/HTMLAttributeNames.in

    r176423 r177622  
    358358onwebkitcurrentplaybacktargetiswirelesschanged
    359359onwebkitplaybacktargetavailabilitychanged
     360onwebkitpresentationmodechanged
    360361x-webkit-imagemenu
    361362webkit-playsinline
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r177591 r177622  
    49204920    LOG(Media, "HTMLMediaElement::enterFullscreen(%p)", this);
    49214921    ASSERT(mode != VideoFullscreenModeNone);
    4922     if (m_videoFullscreenMode != VideoFullscreenModeNone)
     4922
     4923    if (m_videoFullscreenMode == mode)
    49234924        return;
    49244925
     
    49304931#endif
    49314932
    4932     m_videoFullscreenMode = mode;
     4933    fullscreenModeChanged(mode);
    49334934    if (hasMediaControls())
    49344935        mediaControls()->enteredFullscreen();
     
    49594960#endif
    49604961    ASSERT(m_videoFullscreenMode != VideoFullscreenModeNone);
    4961     m_videoFullscreenMode = VideoFullscreenModeNone;
     4962    fullscreenModeChanged(VideoFullscreenModeNone);
    49624963    if (hasMediaControls())
    49634964        mediaControls()->exitedFullscreen();
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r177591 r177622  
    402402
    403403    VideoFullscreenMode fullscreenMode() const { return m_videoFullscreenMode; }
    404     void fullscreenModeChanged(VideoFullscreenMode mode) { m_videoFullscreenMode = mode; }
     404    virtual void fullscreenModeChanged(VideoFullscreenMode mode) { m_videoFullscreenMode = mode; }
    405405
    406406    void enterFullscreen(VideoFullscreenMode);
     
    496496    void setMediaControlsDependOnPageScaleFactor(bool);
    497497#endif
     498
     499    void scheduleEvent(const AtomicString& eventName);
    498500
    499501private:
     
    621623   
    622624    void scheduleTimeupdateEvent(bool periodicEvent);
    623     void scheduleEvent(const AtomicString& eventName);
    624    
     625
    625626    // loading
    626627    void selectMediaResource();
  • trunk/Source/WebCore/html/HTMLVideoElement.cpp

    r177259 r177622  
    3737#include "HTMLNames.h"
    3838#include "HTMLParserIdioms.h"
     39#include "Logging.h"
    3940#include "Page.h"
    4041#include "RenderImage.h"
     
    4243#include "ScriptController.h"
    4344#include "Settings.h"
     45#include <wtf/NeverDestroyed.h>
    4446
    4547namespace WebCore {
     
    123125    else if (name == webkitwirelessvideoplaybackdisabledAttr)
    124126        mediaSession().setWirelessVideoPlaybackDisabled(*this, webkitWirelessVideoPlaybackDisabled());
     127#endif
     128#if ENABLE(VIDEO_PRESENTATION_MODE)
     129    else if (name == onwebkitpresentationmodechangedAttr)
     130        setAttributeEventListener(eventNames().webkitpresentationmodechangedEvent, name, value);
    125131#endif
    126132    else {
     
    339345}
    340346
    341 }
    342 
    343 #endif
     347#if ENABLE(VIDEO_PRESENTATION_MODE)
     348
     349static const AtomicString& presentationModeFullscreen()
     350{
     351    static NeverDestroyed<AtomicString> fullscreen("fullscreen", AtomicString::ConstructFromLiteral);
     352    return fullscreen;
     353}
     354
     355static const AtomicString& presentationModeOptimized()
     356{
     357    static NeverDestroyed<AtomicString> optimized("optimized", AtomicString::ConstructFromLiteral);
     358    return optimized;
     359}
     360
     361static const AtomicString& presentationModeInline()
     362{
     363    static NeverDestroyed<AtomicString> inlineMode("inline", AtomicString::ConstructFromLiteral);
     364    return inlineMode;
     365}
     366
     367bool HTMLVideoElement::webkitSupportsPresentationMode(const String& mode) const
     368{
     369    if (mode == presentationModeFullscreen())
     370        return mediaSession().fullscreenPermitted(*this) && supportsFullscreen();
     371
     372    if (mode == presentationModeOptimized())
     373        return wkIsOptimizedFullscreenSupported() && mediaSession().allowsAlternateFullscreen(*this) && supportsFullscreen();
     374
     375    if (mode == presentationModeInline())
     376        return !mediaSession().requiresFullscreenForVideoPlayback(*this);
     377
     378    return false;
     379}
     380
     381void HTMLVideoElement::webkitSetPresentationMode(const String& mode)
     382{
     383    if (mode == presentationModeInline() && isFullscreen()) {
     384        exitFullscreen();
     385        return;
     386    }
     387
     388    if (!mediaSession().fullscreenPermitted(*this) || !supportsFullscreen())
     389        return;
     390
     391    LOG(Media, "HTMLVideoElement::webkitSetPresentationMode(%p) - setting to \"%s\"", this, mode.utf8().data());
     392
     393    if (mode == presentationModeFullscreen())
     394        enterFullscreen(VideoFullscreenModeStandard);
     395    else if (mode == presentationModeOptimized())
     396        enterFullscreen(VideoFullscreenModeOptimized);
     397}
     398
     399String HTMLVideoElement::webkitPresentationMode() const
     400{
     401    HTMLMediaElement::VideoFullscreenMode mode = fullscreenMode();
     402
     403    if (mode == VideoFullscreenModeStandard)
     404        return presentationModeFullscreen();
     405
     406    if (mode & VideoFullscreenModeOptimized)
     407        return presentationModeOptimized();
     408
     409    if (mode == VideoFullscreenModeNone)
     410        return presentationModeInline();
     411
     412    ASSERT_NOT_REACHED();
     413    return presentationModeInline();
     414}
     415
     416void HTMLVideoElement::fullscreenModeChanged(VideoFullscreenMode mode)
     417{
     418    if (mode != fullscreenMode()) {
     419        LOG(Media, "HTMLVideoElement::fullscreenModeChanged(%p) - mode changed from %i to %i", this, fullscreenMode(), mode);
     420        scheduleEvent(eventNames().webkitpresentationmodechangedEvent);
     421    }
     422
     423    HTMLMediaElement::fullscreenModeChanged(mode);
     424}
     425
     426#endif
     427
     428}
     429
     430#endif
  • trunk/Source/WebCore/html/HTMLVideoElement.h

    r177259 r177622  
    7979    virtual RenderPtr<RenderElement> createElementRenderer(Ref<RenderStyle>&&) override;
    8080
     81#if ENABLE(VIDEO_PRESENTATION_MODE)
     82    bool webkitSupportsPresentationMode(const String&) const;
     83    void webkitSetPresentationMode(const String&);
     84    String webkitPresentationMode() const;
     85    virtual void fullscreenModeChanged(VideoFullscreenMode) override;
     86
     87    DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitpresentationmodechanged);
     88#endif
     89
    8190private:
    8291    HTMLVideoElement(const QualifiedName&, Document&, bool);
  • trunk/Source/WebCore/html/HTMLVideoElement.idl

    r165676 r177622  
    2323 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2424 */
     25
     26#if defined(ENABLE_VIDEO_PRESENTATION_MODE) && ENABLE_VIDEO_PRESENTATION_MODE
     27enum VideoPresentationMode {
     28    "fullscreen",
     29    "optimized",
     30    "inline"
     31};
     32#endif
    2533
    2634[
     
    5361    // for performance reasons during playback.
    5462    [Conditional=MEDIA_STATISTICS] readonly attribute unsigned long webkitDroppedFrameCount;
     63
     64#if defined(ENABLE_VIDEO_PRESENTATION_MODE) && ENABLE_VIDEO_PRESENTATION_MODE
     65    boolean webkitSupportsPresentationMode(VideoPresentationMode mode);
     66
     67    readonly attribute VideoPresentationMode webkitPresentationMode;
     68    void webkitSetPresentationMode(VideoPresentationMode mode);
     69
     70    attribute EventListener onwebkitpresentationmodechanged;
     71#endif
    5572};
  • trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm

    r177566 r177622  
    10871087{
    10881088    if (m_mode & HTMLMediaElement::VideoFullscreenModeStandard) {
    1089         if (!active && m_mode & HTMLMediaElement::VideoFullscreenModeOptimized)
     1089        if (!active)
    10901090            m_mode &= ~HTMLMediaElement::VideoFullscreenModeOptimized;
    1091         else if (active && ~m_mode & HTMLMediaElement::VideoFullscreenModeOptimized)
     1091        else
    10921092            m_mode |= HTMLMediaElement::VideoFullscreenModeOptimized;
    10931093    }
    1094    
     1094
    10951095    if (m_videoFullscreenModel)
    1096         m_videoFullscreenModel->fullscreenModeChanged(m_mode);
     1096        m_videoFullscreenModel->fullscreenModeChanged(m_exitRequested ? HTMLMediaElement::VideoFullscreenModeNone : m_mode);
     1097
    10971098
    10981099    if (m_mode == HTMLMediaElement::VideoFullscreenModeOptimized)
    10991100        return;
    1100    
     1101
    11011102    [m_window setHidden:m_mode & HTMLMediaElement::VideoFullscreenModeOptimized];
    11021103   
  • trunk/Source/WebKit/mac/ChangeLog

    r177621 r177622  
     12014-12-20  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [iOS] add optimized fullscreen API
     4        https://bugs.webkit.org/show_bug.cgi?id=139833
     5        <rdar://problem/18844486>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * Configurations/FeatureDefines.xcconfig:  Add ENABLE_VIDEO_PRESENTATION_MODE.
     10
    1112014-12-20  David Kilzer  <ddkilzer@apple.com>
    212
  • trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig

    r176846 r177622  
    194194ENABLE_USERSELECT_ALL = ENABLE_USERSELECT_ALL;
    195195ENABLE_VIDEO = ENABLE_VIDEO;
     196ENABLE_VIDEO_PRESENTATION_MODE[sdk=iphone*] = ENABLE_VIDEO_PRESENTATION_MODE;
    196197ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
    197198ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
     
    227228ENABLE_SATURATED_LAYOUT_ARITHMETIC = ENABLE_SATURATED_LAYOUT_ARITHMETIC;
    228229
    229 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RUBBER_BANDING) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(ENABLE_SATURATED_LAYOUT_ARITHMETIC);
     230FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RUBBER_BANDING) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(ENABLE_SATURATED_LAYOUT_ARITHMETIC) $(ENABLE_VIDEO_PRESENTATION_MODE);
  • trunk/Source/WebKit2/ChangeLog

    r177621 r177622  
     12014-12-20  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [iOS] add optimized fullscreen API
     4        https://bugs.webkit.org/show_bug.cgi?id=139833
     5        <rdar://problem/18844486>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * Configurations/FeatureDefines.xcconfig: Add ENABLE_VIDEO_PRESENTATION_MODE.
     10
    1112014-12-20  David Kilzer  <ddkilzer@apple.com>
    212
  • trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig

    r176846 r177622  
    194194ENABLE_USERSELECT_ALL = ENABLE_USERSELECT_ALL;
    195195ENABLE_VIDEO = ENABLE_VIDEO;
     196ENABLE_VIDEO_PRESENTATION_MODE[sdk=iphone*] = ENABLE_VIDEO_PRESENTATION_MODE;
    196197ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
    197198ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
     
    227228ENABLE_SATURATED_LAYOUT_ARITHMETIC = ENABLE_SATURATED_LAYOUT_ARITHMETIC;
    228229
    229 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RUBBER_BANDING) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(ENABLE_SATURATED_LAYOUT_ARITHMETIC);
     230FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CONTENT_FILTERING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SELECTORS_LEVEL4) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS3_TEXT) $(ENABLE_CSS3_TEXT_LINE_BREAK) $(ENABLE_CURSOR_VISIBILITY) $(ENABLE_CUSTOM_SCHEME_HANDLER) $(ENABLE_DASHBOARD_SUPPORT) $(ENABLE_DATALIST_ELEMENT) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS_ELEMENT) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DOM4_EVENTS_CONSTRUCTOR) $(ENABLE_ENCRYPTED_MEDIA) $(ENABLE_ENCRYPTED_MEDIA_V2) $(ENABLE_FILTERS_LEVEL_2) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GAMEPAD_DEPRECATED) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_ICONDATABASE) $(ENABLE_SERVICE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_TYPE_COLOR) $(ENABLE_INPUT_TYPE_COLOR_POPOVER) $(ENABLE_INPUT_TYPE_DATE) $(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE) $(ENABLE_INPUT_TYPE_DATETIMELOCAL) $(ENABLE_INPUT_TYPE_MONTH) $(ENABLE_INPUT_TYPE_TIME) $(ENABLE_INPUT_TYPE_WEEK) $(ENABLE_INSPECTOR) $(ENABLE_IOS_AIRPLAY) $(ENABLE_IOS_GESTURE_EVENTS) $(ENABLE_IOS_TEXT_AUTOSIZING) $(ENABLE_IOS_TOUCH_EVENTS) $(ENABLE_LEGACY_CSS_VENDOR_PREFIXES) $(ENABLE_LEGACY_NOTIFICATIONS) $(ENABLE_LEGACY_VENDOR_PREFIXES) $(ENABLE_LEGACY_WEB_AUDIO) $(ENABLE_LETTERPRESS) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_CONTROLS_SCRIPT) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_ELEMENT) $(ENABLE_MHTML) $(ENABLE_MOUSE_CURSOR_SCALE) $(ENABLE_NAVIGATOR_CONTENT_UTILS) $(ENABLE_NAVIGATOR_HWCONCURRENCY) $(ENABLE_NOTIFICATIONS) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_POINTER_LOCK) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REQUEST_AUTOCOMPLETE) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_RUBBER_BANDING) $(ENABLE_SHARED_WORKERS) $(ENABLE_CSS_SCROLL_SNAP) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBTLE_CRYPTO) $(ENABLE_SVG_FONTS) $(ENABLE_TELEPHONE_NUMBER_DETECTION) $(ENABLE_TEMPLATE_ELEMENT) $(ENABLE_TEXT_AUTOSIZING) $(ENABLE_TOUCH_EVENTS) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_USERSELECT_ALL) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_DATACUE_VALUE) $(ENABLE_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_PICTURE_SIZES) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(ENABLE_SATURATED_LAYOUT_ARITHMETIC) $(ENABLE_VIDEO_PRESENTATION_MODE);
Note: See TracChangeset for help on using the changeset viewer.