Changeset 167527 in webkit


Ignore:
Timestamp:
Apr 18, 2014 8:46:44 PM (10 years ago)
Author:
eric.carlson@apple.com
Message:

[Mac] implement WebKitDataCue
https://bugs.webkit.org/show_bug.cgi?id=131799

Reviewed by Dean Jackson.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig: Define ENABLE_DATACUE_VALUE.

Source/WebCore:
Tests: http/tests/media/track-in-band-hls-metadata.html

media/track/track-datacue-value.html

  • Configurations/FeatureDefines.xcconfig: Define ENABLE_DATACUE_VALUE.
  • DerivedSources.make: Add ENABLE_DATACUE_VALUE to HTML_FLAGS when appropriate.
  • CMakeLists.txt: Add JSDataCueCustom.cpp.
  • bindings/js/JSBindingsAllInOne.cpp:
  • WebCore.xcodeproj/project.pbxproj: Add new files.
  • bindings/js/JSDataCueCustom.cpp: Added.

(WebCore::JSDataCue::value):
(WebCore::JSDataCue::setValue):
(WebCore::JSDataCueConstructor::constructJSDataCue): Custom constructor.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::updateActiveTextTrackCues): Drive-by fixes: don't schedule timeupdate

events when paused, don't call sort on an Vector that can't be sorted.

  • html/track/DataCue.cpp:

(WebCore::DataCue::DataCue): Initialize m_type.
(WebCore::DataCue::~DataCue): Unprotect the JSValue if necessary.
(WebCore::DataCue::data): Ask the platform value for data if non-null.
(WebCore::DataCue::setData): Clear m_platformValue and m_value.
(WebCore::DataCue::isEqual): New.
(WebCore::DataCue::value): Return a JSValue from the platform value, or the value passed

to the constructor/set by script.

(WebCore::DataCue::setValue): Set m_value.

  • html/track/DataCue.h:
  • html/track/DataCue.idl:
  • html/track/InbandDataTextTrack.cpp:

(WebCore::InbandDataTextTrack::addDataCue): Don't add the same cue more than once.
(WebCore::InbandDataTextTrack::updateDataCue): Update a cue's duration.
(WebCore::InbandDataTextTrack::removeDataCue): Remove an incomplete cue.
(WebCore::InbandDataTextTrack::removeCue): Remove a cue from the incomplete cue map if necessary.

  • html/track/InbandDataTextTrack.h:
  • html/track/InbandGenericTextTrack.cpp:

(WebCore::InbandGenericTextTrack::addGenericCue): CueMatchRules is now in TextTrackCue instead

of VTTCue.

  • html/track/InbandTextTrack.h:
  • html/track/InbandWebVTTTextTrack.cpp:

(WebCore::InbandWebVTTTextTrack::newCuesParsed): Ditto.

  • html/track/TextTrack.cpp:

(WebCore::TextTrack::hasCue): Ditto.

  • html/track/TextTrack.h:
  • html/track/TextTrackCue.cpp:

(WebCore::TextTrackCue::isEqual): New, test base class equality.

  • html/track/TextTrackCue.h:
  • html/track/TextTrackCueGeneric.cpp:

(WebCore::TextTrackCueGeneric::isEqual): Call TextTrackCue::isEqual first.

  • html/track/TextTrackCueGeneric.h:
  • html/track/VTTCue.cpp:

(WebCore::VTTCue::isEqual): Call TextTrackCue::isEqual first.

  • html/track/VTTCue.h:
  • platform/SerializedPlatformRepresentation.h: Added.

(WebCore::SerializedPlatformRepresentation::~SerializedPlatformRepresentation):
(WebCore::SerializedPlatformRepresentation::SerializedPlatformRepresentation):

  • platform/graphics/InbandTextTrackPrivateClient.h: Add methods for DataCue with SerializedPlatformRepresentation.
  • platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp: Added.

(WebCore::InbandMetadataTextTrackPrivateAVF::create):
(WebCore::InbandMetadataTextTrackPrivateAVF::InbandMetadataTextTrackPrivateAVF):
(WebCore::InbandMetadataTextTrackPrivateAVF::~InbandMetadataTextTrackPrivateAVF):
(WebCore::InbandMetadataTextTrackPrivateAVF::addDataCue):
(WebCore::InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes):
(WebCore::InbandMetadataTextTrackPrivateAVF::flushPartialCues):

  • platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.h: Added.
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::seekWithTolerance): currentTrack -> currentTextTrack.
(WebCore::MediaPlayerPrivateAVFoundation::seekCompleted): Ditto.
(WebCore::MediaPlayerPrivateAVFoundation::configureInbandTracks): Ditto.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:

(WebCore::MediaPlayerPrivateAVFoundation::setCurrentTextTrack):
(WebCore::MediaPlayerPrivateAVFoundation::setCurrentTrack): Deleted.

Renamed currentTrack and setCurrentTrack to currentTextTrack and setCurrentTextTrack.

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::AVFWrapper::currentTextTrack):
(WebCore::MediaPlayerPrivateAVFoundationCF::setCurrentTextTrack):
(WebCore::MediaPlayerPrivateAVFoundationCF::currentTextTrack):
(WebCore::AVFWrapper::setCurrentTextTrack):
(WebCore::AVFWrapper::AVFWrapper):
(WebCore::AVFWrapper::processCue):
(WebCore::AVFWrapper::currentTrack): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationCF::setCurrentTrack): Deleted.
(WebCore::MediaPlayerPrivateAVFoundationCF::currentTrack): Deleted.
(WebCore::AVFWrapper::setCurrentTrack): Deleted.

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
(WebCore::MediaPlayerPrivateAVFoundationObjC::seekToTime): currentTrack -> currentTextTrack
(WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): currentTrack -> currentTextTrack.
(WebCore::MediaPlayerPrivateAVFoundationObjC::processMetadataTrack): New.
(WebCore::MediaPlayerPrivateAVFoundationObjC::processCue): m_currentTrack -> m_currentTextTrack.
(WebCore::MediaPlayerPrivateAVFoundationObjC::flushCues): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack): Renamed from setCurrentTextTrack.
(WebCore::metadataType): Map an AVFoundation metadata key space to a metadata cue type.
(WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive): Process new metadata.
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTrack): Deleted.

Create a JSValue representation from an AVMetadataItem.

  • platform/mac/SerializedPlatformRepresentationMac.h: Added.

(WebCore::SerializedPlatformRepresentationMac::platformType):
(WebCore::SerializedPlatformRepresentationMac::nativeValue):

  • platform/mac/SerializedPlatformRepresentationMac.mm: Added.

(WebCore::SerializedPlatformRepresentationMac::SerializedPlatformRepresentationMac):
(WebCore::SerializedPlatformRepresentationMac::~SerializedPlatformRepresentationMac):
(WebCore::SerializedPlatformRepresentationMac::create):
(WebCore::SerializedPlatformRepresentationMac::data):
(WebCore::SerializedPlatformRepresentationMac::deserialize):
(WebCore::SerializedPlatformRepresentationMac::isEqual):
(WebCore::toSerializedPlatformRepresentationMac):
(WebCore::jsValueWithValueInContext):
(WebCore::jsValueWithDataInContext):
(WebCore::jsValueWithArrayInContext):
(WebCore::jsValueWithDictionaryInContext):
(WebCore::jsValueWithAVMetadataItemInContext):

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig: Define ENABLE_DATACUE_VALUE.

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig: Define ENABLE_DATACUE_VALUE.

Source/WTF:

  • wtf/FeatureDefines.h: Define ENABLE_DATACUE_VALUE.

LayoutTests:

  • http/tests/media/resources/hls: Added.
  • http/tests/media/resources/hls/metadata: Added.
  • http/tests/media/resources/hls/metadata/fileSequence0.ts: Added.
  • http/tests/media/resources/hls/metadata/fileSequence1.ts: Added.
  • http/tests/media/resources/hls/metadata/fileSequence2.ts: Added.
  • http/tests/media/resources/hls/metadata/fileSequence3.ts: Added.
  • http/tests/media/resources/hls/metadata/prog_index.m3u8: Added.
  • http/tests/media/track-in-band-hls-metadata-expected.txt: Added.
  • http/tests/media/track-in-band-hls-metadata.html: Added.
  • media/track/track-datacue-value-expected.txt: Added.
  • media/track/track-datacue-value.html: Added.
  • platform/efl/TestExpectations: Skip the new tests.
  • platform/gtk/TestExpectations: Ditto.
  • platform/mac/js/dom/global-constructors-attributes-expected.txt: Update.
  • platform/mac-mountainlion/js/dom/global-constructors-attributes-expected.txt: Update.
  • platform/mac/TestExpectations: Skip DataCue test on all Mac versions. Skip HLS test on

Mountain Lion.

  • platform/win/TestExpectations: Skip the new tests.
Location:
trunk
Files:
17 added
45 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r167518 r167527  
     12014-04-18  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] implement WebKitDataCue
     4        https://bugs.webkit.org/show_bug.cgi?id=131799
     5
     6        Reviewed by Dean Jackson.
     7
     8        * http/tests/media/resources/hls: Added.
     9        * http/tests/media/resources/hls/metadata: Added.
     10        * http/tests/media/resources/hls/metadata/fileSequence0.ts: Added.
     11        * http/tests/media/resources/hls/metadata/fileSequence1.ts: Added.
     12        * http/tests/media/resources/hls/metadata/fileSequence2.ts: Added.
     13        * http/tests/media/resources/hls/metadata/fileSequence3.ts: Added.
     14        * http/tests/media/resources/hls/metadata/prog_index.m3u8: Added.
     15        * http/tests/media/track-in-band-hls-metadata-expected.txt: Added.
     16        * http/tests/media/track-in-band-hls-metadata.html: Added.
     17        * media/track/track-datacue-value-expected.txt: Added.
     18        * media/track/track-datacue-value.html: Added.
     19        * platform/efl/TestExpectations: Skip the new tests.
     20        * platform/gtk/TestExpectations: Ditto.
     21        * platform/mac/js/dom/global-constructors-attributes-expected.txt: Update.
     22        * platform/mac-mountainlion/js/dom/global-constructors-attributes-expected.txt: Update.
     23        * platform/mac/TestExpectations: Skip DataCue test on all Mac versions. Skip HLS test on
     24            Mountain Lion.
     25        * platform/win/TestExpectations: Skip the new tests.
     26
    1272014-04-18  Hans Muller  <hmuller@adobe.com>
    228
  • trunk/LayoutTests/platform/efl/TestExpectations

    r167488 r167527  
    14021402Bug(EFL) media/track/in-band [ Skip ]
    14031403
     1404# DataCue.value not enabled
     1405Bug(EFL) http/tests/media/track-in-band-hls-metadata.html [ Skip ]
     1406Bug(EFL) media/track/track-datacue-value.html [ Skip ]
     1407
    14041408# Rendering failure, also missing expected results:
    14051409webkit.org/b/105093 compositing/webgl/webgl-nonpremultiplied-blend.html [ Skip ]
  • trunk/LayoutTests/platform/gtk/TestExpectations

    r167488 r167527  
    339339webkit.org/b/131546 media/track/track-in-band-legacy-api.html [ Failure ]
    340340webkit.org/b/131546 media/track/track-in-band-mode.html [ Skip ]
     341
     342# DataCue.value not enabled
     343Bug(GTK) http/tests/media/track-in-band-hls-metadata.html [ Skip ]
     344Bug(GTK) media/track/track-datacue-value.html [ Skip ]
    341345
    342346# Require ENABLE(CUSTOM_ELEMENTS) support
  • trunk/LayoutTests/platform/mac-mountainlion/js/dom/global-constructors-attributes-expected.txt

    r166965 r167527  
    254254PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').enumerable is false
    255255PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').configurable is true
    256 PASS Object.getOwnPropertyDescriptor(global, 'DataCue').value is DataCue
    257 PASS Object.getOwnPropertyDescriptor(global, 'DataCue').hasOwnProperty('get') is false
    258 PASS Object.getOwnPropertyDescriptor(global, 'DataCue').hasOwnProperty('set') is false
    259 PASS Object.getOwnPropertyDescriptor(global, 'DataCue').enumerable is false
    260 PASS Object.getOwnPropertyDescriptor(global, 'DataCue').configurable is true
    261256PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').value is DataTransfer
    262257PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').hasOwnProperty('get') is false
     
    19391934PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').enumerable is false
    19401935PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').configurable is true
     1936PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').value is WebKitDataCue
     1937PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('get') is false
     1938PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('set') is false
     1939PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').enumerable is false
     1940PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').configurable is true
    19411941PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').value is WebKitMutationObserver
    19421942PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').hasOwnProperty('get') is false
  • trunk/LayoutTests/platform/mac/TestExpectations

    r167506 r167527  
    13391339webkit.org/b/130693 mathml/presentation/tokenElements-background-color.html [ ImageOnlyFailure ]
    13401340
     1341# WebKitDataCue is supported, not DataCue
     1342media/track/track-datacue.html [ Skip ]
     1343
     1344# Mountain Lion and prior do not support HLS timed metadata
     1345Bug(ericcarlson) [ MountainLion ] http/tests/media/track-in-band-hls-metadata.html [ Skip ]
     1346
    13411347# Frequently times out on EWS, which is then misreported as crash.
    13421348webkit.org/b/130720 [ MountainLion Release ] media/W3C/audio/canPlayType/canPlayType_application_octet_stream.html [ Pass Failure Crash Timeout ]
  • trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt

    r166965 r167527  
    254254PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').enumerable is false
    255255PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').configurable is true
    256 PASS Object.getOwnPropertyDescriptor(global, 'DataCue').value is DataCue
    257 PASS Object.getOwnPropertyDescriptor(global, 'DataCue').hasOwnProperty('get') is false
    258 PASS Object.getOwnPropertyDescriptor(global, 'DataCue').hasOwnProperty('set') is false
    259 PASS Object.getOwnPropertyDescriptor(global, 'DataCue').enumerable is false
    260 PASS Object.getOwnPropertyDescriptor(global, 'DataCue').configurable is true
    261256PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').value is DataTransfer
    262257PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').hasOwnProperty('get') is false
     
    19491944PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').enumerable is false
    19501945PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').configurable is true
     1946PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').value is WebKitDataCue
     1947PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('get') is false
     1948PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('set') is false
     1949PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').enumerable is false
     1950PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').configurable is true
    19511951PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyError').value is WebKitMediaKeyError
    19521952PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyError').hasOwnProperty('get') is false
  • trunk/LayoutTests/platform/win/TestExpectations

    r167488 r167527  
    27352735platform/win/plugins/iframe-inside-overflow.html [ Failure ]
    27362736
     2737# DataCue.value not enabled
     2738http/tests/media/track-in-band-hls-metadata.html [ Skip ]
     2739media/track/track-datacue-value.html [ Skip ]
     2740
    27372741# CRASHES
    27382742ietestcenter/Javascript/15.2.3.3-4-18.html [ Crash ]
  • trunk/Source/JavaScriptCore/ChangeLog

    r167516 r167527  
     12014-04-18  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] implement WebKitDataCue
     4        https://bugs.webkit.org/show_bug.cgi?id=131799
     5
     6        Reviewed by Dean Jackson.
     7
     8        * Configurations/FeatureDefines.xcconfig: Define ENABLE_DATACUE_VALUE.
     9
    1102014-04-18  Filip Pizlo  <fpizlo@apple.com>
    211
  • trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig

    r167427 r167527  
    210210ENABLE_VIDEO = ENABLE_VIDEO;
    211211ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
     212ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
    212213ENABLE_VIEW_MODE_CSS_MEDIA = ;
    213214ENABLE_WEBGL = ENABLE_WEBGL;
     
    244245ENABLE_LLINT_C_LOOP = ;
    245246
    246 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_BLOB) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_STICKY_POSITION) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(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) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_IMAGE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(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_TEXT_AUTOSIZING) $(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_NOTIFICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_PLUGIN_PROXY_FOR_VIDEO) $(ENABLE_PROGRESS_ELEMENT) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(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_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
     247FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_BLOB) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_STICKY_POSITION) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(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) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_IMAGE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(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_TEXT_AUTOSIZING) $(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_NOTIFICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_PLUGIN_PROXY_FOR_VIDEO) $(ENABLE_PROGRESS_ELEMENT) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(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_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
  • trunk/Source/WTF/ChangeLog

    r167508 r167527  
     12014-04-18  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] implement WebKitDataCue
     4        https://bugs.webkit.org/show_bug.cgi?id=131799
     5
     6        Reviewed by Dean Jackson.
     7
     8        * wtf/FeatureDefines.h: Define ENABLE_DATACUE_VALUE.
     9
    1102014-04-18  Martin Robinson  <mrobinson@igalia.com>
    211
  • trunk/Source/WTF/wtf/FeatureDefines.h

    r167488 r167527  
    761761#endif
    762762
     763#if !defined(ENABLE_DATACUE_VALUE)
     764#define ENABLE_DATACUE_VALUE 0
     765#endif
     766
    763767#if !defined(ENABLE_VIEWPORT)
    764768#define ENABLE_VIEWPORT 0
  • trunk/Source/WebCore/CMakeLists.txt

    r167488 r167527  
    10271027    bindings/js/JSCanvasRenderingContext2DCustom.cpp
    10281028    bindings/js/JSCanvasRenderingContextCustom.cpp
     1029    bindings/js/JSDataCueCustom.cpp
    10291030    bindings/js/JSDataTransferCustom.cpp
    10301031    bindings/js/JSCommandLineAPIHostCustom.cpp
  • trunk/Source/WebCore/ChangeLog

    r167524 r167527  
     12014-04-18  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] implement WebKitDataCue
     4        https://bugs.webkit.org/show_bug.cgi?id=131799
     5
     6        Reviewed by Dean Jackson.
     7
     8        Tests: http/tests/media/track-in-band-hls-metadata.html
     9               media/track/track-datacue-value.html
     10
     11        * Configurations/FeatureDefines.xcconfig: Define ENABLE_DATACUE_VALUE.
     12        * DerivedSources.make: Add ENABLE_DATACUE_VALUE to HTML_FLAGS when appropriate.
     13
     14        * CMakeLists.txt: Add JSDataCueCustom.cpp.
     15        * bindings/js/JSBindingsAllInOne.cpp:
     16        * WebCore.xcodeproj/project.pbxproj: Add new files.
     17
     18        * bindings/js/JSDataCueCustom.cpp: Added.
     19        (WebCore::JSDataCue::value):
     20        (WebCore::JSDataCue::setValue):
     21        (WebCore::JSDataCueConstructor::constructJSDataCue): Custom constructor.
     22
     23        * html/HTMLMediaElement.cpp:
     24        (WebCore::HTMLMediaElement::updateActiveTextTrackCues): Drive-by fixes: don't schedule timeupdate
     25            events when paused, don't call sort on an Vector that can't be sorted.
     26
     27        * html/track/DataCue.cpp:
     28        (WebCore::DataCue::DataCue): Initialize m_type.
     29        (WebCore::DataCue::~DataCue): Unprotect the JSValue if necessary.
     30        (WebCore::DataCue::data): Ask the platform value for data if non-null.
     31        (WebCore::DataCue::setData): Clear m_platformValue and m_value.
     32        (WebCore::DataCue::isEqual): New.
     33        (WebCore::DataCue::value): Return a JSValue from the platform value, or the value passed
     34            to the constructor/set by script.
     35        (WebCore::DataCue::setValue): Set m_value.
     36        * html/track/DataCue.h:
     37        * html/track/DataCue.idl:
     38
     39        * html/track/InbandDataTextTrack.cpp:
     40        (WebCore::InbandDataTextTrack::addDataCue): Don't add the same cue more than once.
     41        (WebCore::InbandDataTextTrack::updateDataCue): Update a cue's duration.
     42        (WebCore::InbandDataTextTrack::removeDataCue): Remove an incomplete cue.
     43        (WebCore::InbandDataTextTrack::removeCue): Remove a cue from the incomplete cue map if necessary.
     44        * html/track/InbandDataTextTrack.h:
     45
     46        * html/track/InbandGenericTextTrack.cpp:
     47        (WebCore::InbandGenericTextTrack::addGenericCue): CueMatchRules is now in TextTrackCue instead
     48            of VTTCue.
     49        * html/track/InbandTextTrack.h:
     50
     51        * html/track/InbandWebVTTTextTrack.cpp:
     52        (WebCore::InbandWebVTTTextTrack::newCuesParsed): Ditto.
     53
     54        * html/track/TextTrack.cpp:
     55        (WebCore::TextTrack::hasCue): Ditto.
     56        * html/track/TextTrack.h:
     57
     58        * html/track/TextTrackCue.cpp:
     59        (WebCore::TextTrackCue::isEqual): New, test base class equality.
     60        * html/track/TextTrackCue.h:
     61
     62        * html/track/TextTrackCueGeneric.cpp:
     63        (WebCore::TextTrackCueGeneric::isEqual): Call TextTrackCue::isEqual first.
     64        * html/track/TextTrackCueGeneric.h:
     65
     66        * html/track/VTTCue.cpp:
     67        (WebCore::VTTCue::isEqual): Call TextTrackCue::isEqual first.
     68        * html/track/VTTCue.h:
     69
     70        * platform/SerializedPlatformRepresentation.h: Added.
     71        (WebCore::SerializedPlatformRepresentation::~SerializedPlatformRepresentation):
     72        (WebCore::SerializedPlatformRepresentation::SerializedPlatformRepresentation):
     73
     74        * platform/graphics/InbandTextTrackPrivateClient.h: Add methods for DataCue with SerializedPlatformRepresentation.
     75
     76        * platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp: Added.
     77        (WebCore::InbandMetadataTextTrackPrivateAVF::create):
     78        (WebCore::InbandMetadataTextTrackPrivateAVF::InbandMetadataTextTrackPrivateAVF):
     79        (WebCore::InbandMetadataTextTrackPrivateAVF::~InbandMetadataTextTrackPrivateAVF):
     80        (WebCore::InbandMetadataTextTrackPrivateAVF::addDataCue):
     81        (WebCore::InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes):
     82        (WebCore::InbandMetadataTextTrackPrivateAVF::flushPartialCues):
     83        * platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.h: Added.
     84
     85        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
     86        (WebCore::MediaPlayerPrivateAVFoundation::seekWithTolerance): currentTrack -> currentTextTrack.
     87        (WebCore::MediaPlayerPrivateAVFoundation::seekCompleted): Ditto.
     88        (WebCore::MediaPlayerPrivateAVFoundation::configureInbandTracks): Ditto.
     89        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
     90        (WebCore::MediaPlayerPrivateAVFoundation::setCurrentTextTrack):
     91        (WebCore::MediaPlayerPrivateAVFoundation::setCurrentTrack): Deleted.
     92
     93        Renamed currentTrack and setCurrentTrack to currentTextTrack and setCurrentTextTrack.
     94        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
     95        (WebCore::AVFWrapper::currentTextTrack):
     96        (WebCore::MediaPlayerPrivateAVFoundationCF::setCurrentTextTrack):
     97        (WebCore::MediaPlayerPrivateAVFoundationCF::currentTextTrack):
     98        (WebCore::AVFWrapper::setCurrentTextTrack):
     99        (WebCore::AVFWrapper::AVFWrapper):
     100        (WebCore::AVFWrapper::processCue):
     101        (WebCore::AVFWrapper::currentTrack): Deleted.
     102        (WebCore::MediaPlayerPrivateAVFoundationCF::setCurrentTrack): Deleted.
     103        (WebCore::MediaPlayerPrivateAVFoundationCF::currentTrack): Deleted.
     104        (WebCore::AVFWrapper::setCurrentTrack): Deleted.
     105        * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h:
     106
     107        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
     108        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
     109        (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC):
     110        (WebCore::MediaPlayerPrivateAVFoundationObjC::seekToTime): currentTrack -> currentTextTrack
     111        (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): currentTrack -> currentTextTrack.
     112        (WebCore::MediaPlayerPrivateAVFoundationObjC::processMetadataTrack): New.
     113        (WebCore::MediaPlayerPrivateAVFoundationObjC::processCue): m_currentTrack -> m_currentTextTrack.
     114        (WebCore::MediaPlayerPrivateAVFoundationObjC::flushCues): Ditto.
     115        (WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack): Renamed from setCurrentTextTrack.
     116        (WebCore::metadataType): Map an AVFoundation metadata key space to a metadata cue type.
     117        (WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive): Process new metadata.
     118        (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
     119        (WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTrack): Deleted.
     120
     121        Create a JSValue representation from an AVMetadataItem.
     122        * platform/mac/SerializedPlatformRepresentationMac.h: Added.
     123        (WebCore::SerializedPlatformRepresentationMac::platformType):
     124        (WebCore::SerializedPlatformRepresentationMac::nativeValue):
     125        * platform/mac/SerializedPlatformRepresentationMac.mm: Added.
     126        (WebCore::SerializedPlatformRepresentationMac::SerializedPlatformRepresentationMac):
     127        (WebCore::SerializedPlatformRepresentationMac::~SerializedPlatformRepresentationMac):
     128        (WebCore::SerializedPlatformRepresentationMac::create):
     129        (WebCore::SerializedPlatformRepresentationMac::data):
     130        (WebCore::SerializedPlatformRepresentationMac::deserialize):
     131        (WebCore::SerializedPlatformRepresentationMac::isEqual):
     132        (WebCore::toSerializedPlatformRepresentationMac):
     133        (WebCore::jsValueWithValueInContext):
     134        (WebCore::jsValueWithDataInContext):
     135        (WebCore::jsValueWithArrayInContext):
     136        (WebCore::jsValueWithDictionaryInContext):
     137        (WebCore::jsValueWithAVMetadataItemInContext):
     138
    11392014-04-18  Jon Honeycutt  <jhoneycutt@apple.com>
    2140
  • trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig

    r167427 r167527  
    210210ENABLE_VIDEO = ENABLE_VIDEO;
    211211ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
     212ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
    212213ENABLE_VIEW_MODE_CSS_MEDIA = ;
    213214ENABLE_WEBGL = ENABLE_WEBGL;
     
    244245ENABLE_LLINT_C_LOOP = ;
    245246
    246 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_BLOB) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_STICKY_POSITION) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(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) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_IMAGE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(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_TEXT_AUTOSIZING) $(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_NOTIFICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_PLUGIN_PROXY_FOR_VIDEO) $(ENABLE_PROGRESS_ELEMENT) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(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_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
     247FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_BLOB) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_STICKY_POSITION) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(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) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_IMAGE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(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_TEXT_AUTOSIZING) $(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_NOTIFICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_PLUGIN_PROXY_FOR_VIDEO) $(ENABLE_PROGRESS_ELEMENT) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(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_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
  • trunk/Source/WebCore/DerivedSources.make

    r166965 r167527  
    955955endif
    956956
     957ifeq ($(findstring ENABLE_DATACUE_VALUE,$(FEATURE_DEFINES)), ENABLE_DATACUE_VALUE)
     958        HTML_FLAGS := $(HTML_FLAGS) ENABLE_DATACUE_VALUE=0
     959endif
     960
    957961ifeq ($(findstring ENABLE_ENCRYPTED_MEDIA,$(FEATURE_DEFINES)), ENABLE_ENCRYPTED_MEDIA)
    958962    HTML_FLAGS := $(HTML_FLAGS) ENABLE_ENCRYPTED_MEDIA=1
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r167335 r167527  
    196196                0779BF0D18453168000B6AE7 /* HTMLMediaElementMediaStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0779BF0A18453168000B6AE7 /* HTMLMediaElementMediaStream.cpp */; };
    197197                0779BF0E18453168000B6AE7 /* HTMLMediaElementMediaStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 0779BF0B18453168000B6AE7 /* HTMLMediaElementMediaStream.h */; };
     198                077AF14018F4AE400001ED61 /* SerializedPlatformRepresentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 077AF13E18F4AE400001ED61 /* SerializedPlatformRepresentation.h */; settings = {ATTRIBUTES = (Private, ); }; };
     199                077AF14318F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 077AF14118F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.h */; };
     200                077AF14418F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 077AF14218F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.mm */; };
    198201                0783228418013ED800999E0C /* MediaStreamAudioSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0783228218013ED700999E0C /* MediaStreamAudioSource.cpp */; };
    199202                0783228518013ED800999E0C /* MediaStreamAudioSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 0783228318013ED800999E0C /* MediaStreamAudioSource.h */; };
     
    343346                07E116B11489C9A100EC5ACE /* JSTextTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */; };
    344347                07E117071489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */; };
     348                07E9E12E18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h in Headers */ = {isa = PBXBuildFile; fileRef = 07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */; };
     349                07E9E13018F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E9E12F18F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp */; };
    345350                07ED35A216D6DCC9002248F3 /* InbandTextTrackPrivateAVFIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 07357C7716D2DF0D00ED99E7 /* InbandTextTrackPrivateAVFIOS.mm */; };
    346351                07ED35A316D6DCE2002248F3 /* InbandTextTrackPrivateAVFIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 07357C7616D2DF0D00ED99E7 /* InbandTextTrackPrivateAVFIOS.h */; };
    347352                07F944161864D046005D31CB /* MediaSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CDAE8C081746B95700532D78 /* MediaSessionManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
     353                07FBDE2C18FED178001A7CFF /* JSDataCueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */; };
    348354                07FE99DC18807A7D00256648 /* HTMLMediaSession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07FE99DA18807A7D00256648 /* HTMLMediaSession.cpp */; };
    349355                07FE99DD18807A7D00256648 /* HTMLMediaSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 07FE99DB18807A7D00256648 /* HTMLMediaSession.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    70807086                0779BF0B18453168000B6AE7 /* HTMLMediaElementMediaStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLMediaElementMediaStream.h; sourceTree = "<group>"; };
    70817087                0779BF0C18453168000B6AE7 /* HTMLMediaElementMediaStream.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLMediaElementMediaStream.idl; sourceTree = "<group>"; };
     7088                077AF13E18F4AE400001ED61 /* SerializedPlatformRepresentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SerializedPlatformRepresentation.h; sourceTree = "<group>"; };
     7089                077AF14118F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SerializedPlatformRepresentationMac.h; sourceTree = "<group>"; };
     7090                077AF14218F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SerializedPlatformRepresentationMac.mm; sourceTree = "<group>"; };
    70827091                0783228218013ED700999E0C /* MediaStreamAudioSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamAudioSource.cpp; sourceTree = "<group>"; };
    70837092                0783228318013ED800999E0C /* MediaStreamAudioSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamAudioSource.h; sourceTree = "<group>"; };
     
    71667175                07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCustom.cpp; sourceTree = "<group>"; };
    71677176                07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCueCustom.cpp; sourceTree = "<group>"; };
     7177                07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandMetadataTextTrackPrivateAVF.h; sourceTree = "<group>"; };
     7178                07E9E12F18F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InbandMetadataTextTrackPrivateAVF.cpp; sourceTree = "<group>"; };
     7179                07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDataCueCustom.cpp; sourceTree = "<group>"; };
    71687180                07FE99DA18807A7D00256648 /* HTMLMediaSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMediaSession.cpp; sourceTree = "<group>"; };
    71697181                07FE99DB18807A7D00256648 /* HTMLMediaSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLMediaSession.h; sourceTree = "<group>"; };
     
    1431014322                                DF9AFD6F13FC31B00015FEB7 /* objc */,
    1431114323                                CDE3A85217F5FCE600C5BE20 /* AudioTrackPrivateAVF.h */,
     14324                                07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */,
     14325                                07E9E12F18F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp */,
    1431214326                                07B442D4166C70B000556CAD /* InbandTextTrackPrivateAVF.cpp */,
    1431314327                                07B442D5166C70B000556CAD /* InbandTextTrackPrivateAVF.h */,
     
    1616716181                                1AA84F02143BA7BD0051D153 /* ScrollElasticityController.mm */,
    1616816182                                9353676A09AED88B00D35CD6 /* ScrollViewMac.mm */,
     16183                                077AF14118F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.h */,
     16184                                077AF14218F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.mm */,
    1616916185                                1A4A95510B4EDCFF002D8C3C /* SharedBufferMac.mm */,
    1617016186                                93309E9F099EB78C0056E581 /* SharedTimerMac.mm */,
     
    2052920545                        isa = PBXGroup;
    2053020546                        children = (
     20547                                07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */,
    2053120548                                BC2ED6BB0C6BD2F000920BFF /* JSAttrCustom.cpp */,
    2053220549                                FDEAAAEF12B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp */,
     
    2107421091                                BC6D6E2509AF943500F59759 /* ScrollView.h */,
    2107521092                                AB7170880B3118080017123E /* SearchPopupMenu.h */,
     21093                                077AF13E18F4AE400001ED61 /* SerializedPlatformRepresentation.h */,
    2107621094                                1A4A954B0B4EDCCB002D8C3C /* SharedBuffer.cpp */,
    2107721095                                1A4A954C0B4EDCCB002D8C3C /* SharedBuffer.h */,
     
    2295522973                                31A795C71888BCB200382F90 /* ANGLEInstancedArrays.h in Headers */,
    2295622974                                490707E71219C04300D90E51 /* ANGLEWebKitBridge.h in Headers */,
     22975                                077AF14018F4AE400001ED61 /* SerializedPlatformRepresentation.h in Headers */,
    2295722976                                49E912AB0EFAC906009D0CAF /* Animation.h in Headers */,
    2295822977                                316FE1120E6E1DA700BF6088 /* AnimationBase.h in Headers */,
     
    2303923058                                51741D0F0B07259A00ED442C /* BackForwardClient.h in Headers */,
    2304023059                                BCA8C81E11E3D36900812FB7 /* BackForwardController.h in Headers */,
     23060                                077AF14318F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.h in Headers */,
    2304123061                                BCA8CA6011E4E6D100812FB7 /* BackForwardList.h in Headers */,
    2304223062                                BC124EE80C2641CD009E2349 /* BarProp.h in Headers */,
     
    2395023970                                C5D4AA7A116BAFB60069CA93 /* GlyphMetricsMap.h in Headers */,
    2395123971                                0873B86B136064EA00A522C2 /* GlyphPage.h in Headers */,
     23972                                07E9E12E18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h in Headers */,
    2395223973                                B2C3DA6E0D006CD600EF6F26 /* GlyphPageTreeNode.h in Headers */,
    2395323974                                BC53C5F50DA56B920021EB5D /* Gradient.h in Headers */,
     
    2752727548                                E44613AA0CD6331000FADA75 /* HTMLVideoElement.cpp in Sources */,
    2752827549                                0B8C56D40F28627F000502E1 /* HTTPHeaderMap.cpp in Sources */,
     27550                                077AF14418F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.mm in Sources */,
    2752927551                                514C76720CE923A1007EF3CD /* HTTPParsers.cpp in Sources */,
    2753027552                                371A67CB11C6C7DB00047B8B /* HyphenationCF.cpp in Sources */,
     
    2795527977                                CDA98E0616039E1F00FEA3B1 /* JSMediaKeySession.cpp in Sources */,
    2795627978                                BC3C39B60C0D3D8D005F4D7A /* JSMediaList.cpp in Sources */,
     27979                                07E9E13018F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp in Sources */,
    2795727980                                D3A94A46122DC40F00A37BBC /* JSMediaQueryList.cpp in Sources */,
    2795827981                                7C5343FC17B74B63004232F0 /* JSMediaQueryListListener.cpp in Sources */,
     
    2896728990                                97BC6A541505F081001B74AC /* SQLTransactionClient.cpp in Sources */,
    2896828991                                97BC6A561505F081001B74AC /* SQLTransactionCoordinator.cpp in Sources */,
     28992                                07FBDE2C18FED178001A7CFF /* JSDataCueCustom.cpp in Sources */,
    2896928993                                FE36FD1616C7826500F887C1 /* SQLTransactionStateMachine.cpp in Sources */,
    2897028994                                97BC6A5A1505F081001B74AC /* SQLTransactionSync.cpp in Sources */,
  • trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp

    r167133 r167527  
    6262#include "JSDOMWindowShell.cpp"
    6363#include "JSDOMWrapper.cpp"
     64#include "JSDataCueCustom.cpp"
    6465#include "JSDataTransferCustom.cpp"
    6566#include "JSDedicatedWorkerGlobalScopeCustom.cpp"
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r167523 r167527  
    13811381    if (m_readyState != HAVE_NOTHING && m_player) {
    13821382        currentCues = m_cueTree.allOverlaps(m_cueTree.createInterval(movieTime, movieTime));
    1383         std::sort(currentCues.begin(), currentCues.end(), &compareCueInterval);
     1383        if (currentCues.size() > 1)
     1384            std::sort(currentCues.begin(), currentCues.end(), &compareCueInterval);
    13841385    }
    13851386
     
    14271428    // fired as part of the overall process of changing the current playback
    14281429    // position.)
    1429     if (m_lastSeekTime <= lastTime)
     1430    if (!m_paused && m_lastSeekTime <= lastTime)
    14301431        scheduleTimeupdateEvent(false);
    14311432
  • trunk/Source/WebCore/html/track/DataCue.cpp

    r167025 r167527  
    11/*
    22 * Copyright (C) 2014 Cable Television Labs Inc. All rights reserved.
     3 * Copyright (C) 2014 Apple Inc. All rights reserved.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    3233#include "TextTrack.h"
    3334#include "TextTrackCueList.h"
     35#include <runtime/Protect.h>
    3436
    3537namespace WebCore {
    3638
    37 DataCue::DataCue(ScriptExecutionContext& context, double start, double end, ArrayBuffer* data, ExceptionCode& ec)
     39DataCue::DataCue(ScriptExecutionContext& context, double start, double end, ArrayBuffer* data, const String& type, ExceptionCode& ec)
    3840    : TextTrackCue(context, start, end)
     41    , m_type(type)
    3942{
    4043    setData(data, ec);
     
    4750}
    4851
    49 DataCue::~DataCue()
     52#if ENABLE(DATACUE_VALUE)
     53DataCue::DataCue(ScriptExecutionContext& context, double start, double end, PassRefPtr<SerializedPlatformRepresentation> platformValue, const String& type)
     54    : TextTrackCue(context, start, end)
     55    , m_type(type)
     56    , m_platformValue(platformValue)
    5057{
    5158}
    5259
    53 RefPtr<ArrayBuffer> DataCue::data() const
     60DataCue::DataCue(ScriptExecutionContext& context, double start, double end, JSC::JSValue value, const String& type)
     61    : TextTrackCue(context, start, end)
     62    , m_type(type)
     63    , m_value(value)
    5464{
    55     ASSERT_WITH_SECURITY_IMPLICATION(m_data);
     65}
     66#endif
     67
     68DataCue::~DataCue()
     69{
     70#if ENABLE(DATACUE_VALUE)
     71    if (m_value)
     72        JSC::gcUnprotect(m_value);
     73#endif
     74}
     75
     76PassRefPtr<ArrayBuffer> DataCue::data() const
     77{
     78#if ENABLE(DATACUE_VALUE)
     79    if (m_platformValue)
     80        return m_platformValue->data();
     81#endif
     82
     83    if (!m_data)
     84        return nullptr;
     85
    5686    return ArrayBuffer::create(m_data.get());
    5787}
     
    5989void DataCue::setData(ArrayBuffer* data, ExceptionCode& ec)
    6090{
    61     if (!data)
     91    if (!data) {
    6292        ec = TypeError;
    63     else
    64         m_data = ArrayBuffer::create(data);
     93        return;
     94    }
     95
     96#if ENABLE(DATACUE_VALUE)
     97    m_platformValue = nullptr;
     98    m_value = JSC::JSValue();
     99#endif
     100
     101    m_data = ArrayBuffer::create(data);
    65102}
    66103
     104#if !ENABLE(DATACUE_VALUE)
    67105String DataCue::text(bool& isNull) const
    68106{
     
    70108    return String();
    71109}
     110#endif
    72111
    73112DataCue* toDataCue(TextTrackCue* cue)
     
    83122}
    84123
     124bool DataCue::isEqual(const TextTrackCue& cue, TextTrackCue::CueMatchRules match) const
     125{
     126    if (!TextTrackCue::isEqual(cue, match))
     127        return false;
     128
     129    if (cue.cueType() != TextTrackCue::Data)
     130        return false;
     131
     132    const DataCue* dataCue = toDataCue(&cue);
     133    RefPtr<ArrayBuffer> otherData = dataCue->data();
     134    if ((otherData && !m_data) || (!otherData && m_data))
     135        return false;
     136    if (m_data && m_data->byteLength() != otherData->byteLength())
     137        return false;
     138    if (m_data && m_data->data() && memcmp(m_data->data(), otherData->data(), m_data->byteLength()))
     139        return false;
     140
     141#if ENABLE(DATACUE_VALUE)
     142    RefPtr<SerializedPlatformRepresentation> otherPlatformValue = dataCue->platformValue();
     143    if ((otherPlatformValue && !m_platformValue) || (!otherPlatformValue && m_platformValue))
     144        return false;
     145    if (m_platformValue && !m_platformValue->isEqual(*otherPlatformValue.get()))
     146        return false;
     147
     148    JSC::JSValue otherValue = dataCue->value(nullptr);
     149    if ((otherValue && !m_value) || (!otherValue && m_value))
     150        return false;
     151    if (!JSC::JSValue::strictEqual(nullptr, m_value ? m_value : JSC::JSValue(), otherValue))
     152        return false;
     153#endif
     154
     155    return true;
     156}
     157
     158#if ENABLE(DATACUE_VALUE)
     159JSC::JSValue DataCue::value(JSC::ExecState* exec) const
     160{
     161    if (exec && m_platformValue)
     162        return m_platformValue->deserialize(exec);
     163
     164    if (m_value)
     165        return m_value;
     166
     167    return JSC::jsNull();
     168}
     169
     170void DataCue::setValue(JSC::ExecState*, JSC::JSValue value)
     171{
     172    // FIXME: this should use a SerializedScriptValue.
     173    if (m_value)
     174        JSC::gcUnprotect(m_value);
     175    m_value = value;
     176    if (m_value)
     177        JSC::gcProtect(m_value);
     178
     179    m_platformValue = nullptr;
     180    m_data = nullptr;
     181}
     182#endif
     183
    85184} // namespace WebCore
    86185
  • trunk/Source/WebCore/html/track/DataCue.h

    r167025 r167527  
    11/*
    22 * Copyright (C) 2014 Cable Television Labs Inc. All rights reserved.
     3 * Copyright (C) 2014 Apple Inc. All rights reserved.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    3132#include "TextTrackCue.h"
    3233#include <runtime/ArrayBuffer.h>
     34#include <runtime/JSCInlines.h>
    3335#include <wtf/RefCounted.h>
     36
     37#if ENABLE(DATACUE_VALUE)
     38#include "SerializedPlatformRepresentation.h"
     39#endif
    3440
    3541namespace WebCore {
     
    4147    static PassRefPtr<DataCue> create(ScriptExecutionContext& context, double start, double end, ArrayBuffer* data, ExceptionCode& ec)
    4248    {
    43         return adoptRef(new DataCue(context, start, end, data, ec));
     49        return adoptRef(new DataCue(context, start, end, data, emptyString(), ec));
    4450    }
    4551
     
    4955    }
    5056
     57    static PassRefPtr<DataCue> create(ScriptExecutionContext& context, double start, double end, ArrayBuffer* data, const String& type, ExceptionCode& ec)
     58    {
     59        return adoptRef(new DataCue(context, start, end, data, type, ec));
     60    }
     61
     62#if ENABLE(DATACUE_VALUE)
     63    static PassRefPtr<DataCue> create(ScriptExecutionContext& context, double start, double end, PassRefPtr<SerializedPlatformRepresentation> platformValue, const String& type)
     64    {
     65        return adoptRef(new DataCue(context, start, end, platformValue, type));
     66    }
     67
     68    static PassRefPtr<DataCue> create(ScriptExecutionContext& context, double start, double end, JSC::JSValue value, const String& type)
     69    {
     70        return adoptRef(new DataCue(context, start, end, value, type));
     71    }
     72#endif
     73
    5174    virtual ~DataCue();
    5275    virtual CueType cueType() const { return Data; }
    5376
    54     RefPtr<ArrayBuffer> data() const;
     77    PassRefPtr<ArrayBuffer> data() const;
    5578    void setData(ArrayBuffer*, ExceptionCode&);
    56     String text(bool& isNull) const;
     79
     80#if ENABLE(DATACUE_VALUE)
     81    const PassRefPtr<SerializedPlatformRepresentation> platformValue() const { return m_platformValue; }
     82
     83    JSC::JSValue value(JSC::ExecState*) const;
     84    void setValue(JSC::ExecState*, JSC::JSValue);
     85
     86    String type() const { return m_type; }
     87    void setType(const String& type) { m_type = type; }
     88#else
     89    String text(bool&) const;
     90#endif
     91
     92    virtual bool isEqual(const TextTrackCue&, CueMatchRules) const override;
    5793
    5894protected:
    59     DataCue(ScriptExecutionContext&, double start, double end, ArrayBuffer*, ExceptionCode&);
    60     DataCue(ScriptExecutionContext&, double start, double end, const void* data, unsigned length);
     95    DataCue(ScriptExecutionContext&, double start, double end, ArrayBuffer*, const String&, ExceptionCode&);
     96    DataCue(ScriptExecutionContext&, double start, double end, const void*, unsigned);
     97#if ENABLE(DATACUE_VALUE)
     98    DataCue(ScriptExecutionContext&, double start, double end, PassRefPtr<SerializedPlatformRepresentation>, const String&);
     99    DataCue(ScriptExecutionContext&, double start, double end, JSC::JSValue, const String&);
     100#endif
    61101
    62102private:
    63103    RefPtr<ArrayBuffer> m_data;
     104    String m_type;
     105#if ENABLE(DATACUE_VALUE)
     106    RefPtr<SerializedPlatformRepresentation> m_platformValue;
     107    JSC::JSValue m_value;
     108#endif
    64109};
    65110
  • trunk/Source/WebCore/html/track/DataCue.idl

    r165676 r167527  
    11/*
    22 * Copyright (C) 2014 Cable Television Labs Inc.  All rights reserved.
     3 * Copyright (C) 2014 Apple Inc. All rights reserved.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    2526[
    2627    Conditional=VIDEO_TRACK,
    27     Constructor(double startTime, double endTime, [StrictTypeChecking] ArrayBuffer data),
    28     ConstructorCallWith=ScriptExecutionContext,
     28    CustomConstructor,
     29#if defined(ENABLE_DATACUE_VALUE) && ENABLE_DATACUE_VALUE
     30    CustomConstructor(double startTime, double endTime, any value, optional DOMString type),
     31    InterfaceName=WebKitDataCue,
     32#else
     33    CustomConstructor(double startTime, double endTime, ArrayBuffer data),
     34#endif
    2935    ConstructorRaisesException,
    3036] interface DataCue : TextTrackCue {
    3137    [SetterRaisesException] attribute ArrayBuffer data;
     38
     39#if defined(ENABLE_DATACUE_VALUE) && ENABLE_DATACUE_VALUE
     40    [CustomGetter, CustomSetter] attribute any value;
     41    readonly attribute DOMString type;
     42#else
    3243    readonly attribute DOMString? text;
     44#endif
    3345};
  • trunk/Source/WebCore/html/track/InbandDataTextTrack.cpp

    r167025 r167527  
    11/*
    22 * Copyright (C) 2014 Cable Television Labs Inc.  All rights reserved.
     3 * Copyright (C) 2014 Apple Inc. All rights reserved.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    3132#include "DataCue.h"
    3233#include "ExceptionCodePlaceholder.h"
     34#include "HTMLMediaElement.h"
    3335#include "InbandTextTrackPrivate.h"
     36#include "Logging.h"
    3437#include <runtime/ArrayBuffer.h>
    3538
     
    5659}
    5760
     61#if ENABLE(DATACUE_VALUE)
     62void InbandDataTextTrack::addDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr<SerializedPlatformRepresentation> prpPlatformValue, const String& type)
     63{
     64    RefPtr<SerializedPlatformRepresentation> platformValue = prpPlatformValue;
     65    if (m_incompleteCueMap.find(platformValue.get()) != m_incompleteCueMap.end())
     66        return;
     67
     68    RefPtr<DataCue> cue = DataCue::create(*scriptExecutionContext(), start, end, platformValue, type);
     69    if (hasCue(cue.get(), TextTrackCue::IgnoreDuration)) {
     70        LOG(Media, "InbandDataTextTrack::addDataCue ignoring already added cue: start=%.2f, end=%.2f\n", cue->startTime(), cue->endTime());
     71        return;
     72    }
     73
     74    if (std::isinf(end) && mediaElement()) {
     75        cue->setEndTime(mediaElement()->duration(), IGNORE_EXCEPTION);
     76        m_incompleteCueMap.add(platformValue, cue);
     77    }
     78
     79    addCue(cue.release(), ASSERT_NO_EXCEPTION);
     80}
     81
     82void InbandDataTextTrack::updateDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr<SerializedPlatformRepresentation> prpPlatformValue)
     83{
     84    RefPtr<SerializedPlatformRepresentation> platformValue = prpPlatformValue;
     85    auto iter = m_incompleteCueMap.find(platformValue.get());
     86    if (iter == m_incompleteCueMap.end())
     87        return;
     88
     89    RefPtr<DataCue> cue = iter->value;
     90    if (!cue)
     91        return;
     92
     93    cue->willChange();
     94
     95    if (std::isinf(end) && mediaElement())
     96        end = mediaElement()->duration();
     97    else
     98        m_incompleteCueMap.remove(platformValue.get());
     99
     100    LOG(Media, "InbandDataTextTrack::updateDataCue: was start=%.2f, end=%.2f, will be start=%.2f, end=%.2f\n", cue->startTime(), cue->endTime(), start, end);
     101
     102    cue->setStartTime(start, IGNORE_EXCEPTION);
     103    cue->setEndTime(end, IGNORE_EXCEPTION);
     104
     105    cue->didChange();
     106}
     107
     108void InbandDataTextTrack::removeDataCue(InbandTextTrackPrivate*, double, double, PassRefPtr<SerializedPlatformRepresentation> prpPlatformValue)
     109{
     110    RefPtr<SerializedPlatformRepresentation> platformValue = prpPlatformValue;
     111    auto iter = m_incompleteCueMap.find(platformValue.get());
     112    if (iter == m_incompleteCueMap.end())
     113        return;
     114
     115    RefPtr<DataCue> cue = iter->value;
     116    if (cue) {
     117        LOG(Media, "InbandDataTextTrack::removeDataCue removing cue: start=%.2f, end=%.2f\n", cue->startTime(), cue->endTime());
     118        removeCue(cue.get(), IGNORE_EXCEPTION);
     119    }
     120}
     121
     122void InbandDataTextTrack::removeCue(TextTrackCue* cue, ExceptionCode& ec)
     123{
     124    ASSERT(cue->cueType() == TextTrackCue::Data);
     125
     126    RefPtr<SerializedPlatformRepresentation> platformValue = toDataCue(cue)->platformValue().get();
     127    auto iter = m_incompleteCueMap.find(platformValue.get());
     128    if (iter != m_incompleteCueMap.end())
     129        m_incompleteCueMap.remove(platformValue.get());
     130
     131    InbandTextTrack::removeCue(cue, ec);
     132}
     133
     134#endif
     135
    58136} // namespace WebCore
    59137
  • trunk/Source/WebCore/html/track/InbandDataTextTrack.h

    r167025 r167527  
    11/*
    22 * Copyright (C) 2014 Cable Television Labs Inc. All rights reserved.
     3 * Copyright (C) 2014 Apple Inc. All rights reserved.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    3435namespace WebCore {
    3536
     37class DataCue;
    3638class Document;
    3739class InbandTextTrackPrivate;
    38 class TextTrackCue;
     40
     41#if ENABLE(DATACUE_VALUE)
     42class SerializedPlatformRepresentation;
     43#endif
    3944
    4045class InbandDataTextTrack : public InbandTextTrack {
     
    4752
    4853    virtual void addDataCue(InbandTextTrackPrivate*, double start, double end, const void*, unsigned) override;
     54
     55#if ENABLE(DATACUE_VALUE)
     56    virtual void addDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr<SerializedPlatformRepresentation>, const String&) override;
     57    virtual void updateDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr<SerializedPlatformRepresentation>) override;
     58    virtual void removeDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr<SerializedPlatformRepresentation>) override;
     59    virtual void removeCue(TextTrackCue*, ExceptionCode&) override;
     60
     61    HashMap<RefPtr<SerializedPlatformRepresentation>, RefPtr<DataCue>> m_incompleteCueMap;
     62#endif
    4963};
    5064
  • trunk/Source/WebCore/html/track/InbandGenericTextTrack.cpp

    r165676 r167527  
    152152    RefPtr<TextTrackCueGeneric> cue = TextTrackCueGeneric::create(*scriptExecutionContext(), cueData->startTime(), cueData->endTime(), cueData->content());
    153153    updateCueFromCueData(cue.get(), cueData.get());
    154     if (hasCue(cue.get(), VTTCue::IgnoreDuration)) {
     154    if (hasCue(cue.get(), TextTrackCue::IgnoreDuration)) {
    155155        LOG(Media, "InbandGenericTextTrack::addGenericCue ignoring already added cue: start=%.2f, end=%.2f, content=\"%s\"\n", cueData->startTime(), cueData->endTime(), cueData->content().utf8().data());
    156156        return;
  • trunk/Source/WebCore/html/track/InbandTextTrack.h

    r167440 r167527  
    7272    virtual void addDataCue(InbandTextTrackPrivate*, double, double, const void*, unsigned) override { ASSERT_NOT_REACHED(); }
    7373
     74#if ENABLE(DATACUE_VALUE)
     75    virtual void addDataCue(InbandTextTrackPrivate*, double, double, PassRefPtr<SerializedPlatformRepresentation>, const String&) override { ASSERT_NOT_REACHED(); }
     76    virtual void updateDataCue(InbandTextTrackPrivate*, double, double, PassRefPtr<SerializedPlatformRepresentation>) override  { ASSERT_NOT_REACHED(); }
     77    virtual void removeDataCue(InbandTextTrackPrivate*, double, double, PassRefPtr<SerializedPlatformRepresentation>) override  { ASSERT_NOT_REACHED(); }
     78#endif
     79
    7480    virtual void addGenericCue(InbandTextTrackPrivate*, PassRefPtr<GenericCueData>) override { ASSERT_NOT_REACHED(); }
    7581    virtual void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) override { ASSERT_NOT_REACHED(); }
  • trunk/Source/WebCore/html/track/InbandWebVTTTextTrack.cpp

    r165676 r167527  
    6969        cue->setCueSettings(cueData->settings());
    7070
    71         if (hasCue(cue.get(), VTTCue::IgnoreDuration)) {
     71        if (hasCue(cue.get(), TextTrackCue::IgnoreDuration)) {
    7272            LOG(Media, "InbandWebVTTTextTrack::newCuesParsed ignoring already added cue: start=%.2f, end=%.2f, content=\"%s\"\n", cueData->startTime(), cueData->endTime(), cueData->content().utf8().data());
    7373            return;
  • trunk/Source/WebCore/html/track/TextTrack.cpp

    r166180 r167527  
    484484}
    485485
    486 bool TextTrack::hasCue(VTTCue* cue, VTTCue::CueMatchRules match)
     486bool TextTrack::hasCue(TextTrackCue* cue, TextTrackCue::CueMatchRules match)
    487487{
    488488    if (cue->startTime() < 0 || cue->endTime() < 0)
     
    520520
    521521                existingCue = m_cues->item(searchStart - 1);
    522                 if (!cue->isRenderable())
    523                     continue;
    524 
    525522                if (!existingCue || cue->startTime() > existingCue->startTime())
    526523                    return false;
    527524
    528                 if (!toVTTCue(existingCue)->isEqual(*cue, match))
     525                if (!existingCue->isEqual(*cue, match))
    529526                    continue;
    530527               
     
    535532        size_t index = (searchStart + searchEnd) / 2;
    536533        existingCue = m_cues->item(index);
    537         if (cue->startTime() < existingCue->startTime() || (match != VTTCue::IgnoreDuration && cue->startTime() == existingCue->startTime() && cue->endTime() > existingCue->endTime()))
     534        if (cue->startTime() < existingCue->startTime() || (match != TextTrackCue::IgnoreDuration && cue->startTime() == existingCue->startTime() && cue->endTime() > existingCue->endTime()))
    538535            searchEnd = index;
    539536        else
  • trunk/Source/WebCore/html/track/TextTrack.h

    r167440 r167527  
    113113    virtual void removeCue(TextTrackCue*, ExceptionCode&);
    114114
    115     bool hasCue(VTTCue*, VTTCue::CueMatchRules = VTTCue::MatchAllFields);
     115    bool hasCue(TextTrackCue*, TextTrackCue::CueMatchRules = TextTrackCue::MatchAllFields);
    116116
    117117#if ENABLE(VIDEO_TRACK) && ENABLE(WEBVTT_REGIONS)
  • trunk/Source/WebCore/html/track/TextTrackCue.cpp

    r166022 r167527  
    203203}
    204204
     205bool TextTrackCue::isEqual(const TextTrackCue& cue, TextTrackCue::CueMatchRules match) const
     206{
     207    if (cueType() != cue.cueType())
     208        return false;
     209
     210    if (match != IgnoreDuration && endTime() != cue.endTime())
     211        return false;
     212    if (startTime() != cue.startTime())
     213        return false;
     214    if (id() != cue.id())
     215        return false;
     216
     217    return true;
     218}
     219
    205220} // namespace WebCore
    206221
  • trunk/Source/WebCore/html/track/TextTrackCue.h

    r166180 r167527  
    9292    virtual bool isRenderable() const { return false; }
    9393
     94    enum CueMatchRules {
     95        MatchAllFields,
     96        IgnoreDuration,
     97    };
     98    virtual bool isEqual(const TextTrackCue&, CueMatchRules) const;
     99
    94100    void willChange();
    95101    virtual void didChange();
  • trunk/Source/WebCore/html/track/TextTrackCueGeneric.cpp

    r165676 r167527  
    152152}
    153153   
    154 bool TextTrackCueGeneric::isEqual(const VTTCue& cue, VTTCue::CueMatchRules match) const
     154bool TextTrackCueGeneric::isEqual(const TextTrackCue& cue, TextTrackCue::CueMatchRules match) const
    155155{
     156    if (!TextTrackCue::isEqual(cue, match))
     157        return false;
     158
    156159    if (cue.cueType() != TextTrackCue::Generic)
    157160        return false;
  • trunk/Source/WebCore/html/track/TextTrackCueGeneric.h

    r165676 r167527  
    7373    virtual void setFontSize(int, const IntSize&, bool important) override;
    7474
    75     virtual bool isEqual(const VTTCue&, CueMatchRules) const override;
     75    virtual bool isEqual(const TextTrackCue&, CueMatchRules) const override;
    7676
    7777    virtual TextTrackCue::CueType cueType() const override { return TextTrackCue::Generic; }
  • trunk/Source/WebCore/html/track/VTTCue.cpp

    r166180 r167527  
    10631063}
    10641064
    1065 bool VTTCue::isEqual(const VTTCue& cue, CueMatchRules match) const
    1066 {
    1067     if (cueType() != cue.cueType())
     1065bool VTTCue::isEqual(const TextTrackCue& cue, TextTrackCue::CueMatchRules match) const
     1066{
     1067    if (!TextTrackCue::isEqual(cue, match))
    10681068        return false;
    1069    
    1070     if (match != IgnoreDuration && endTime() != cue.endTime())
     1069
     1070    if (cue.cueType() != WebVTT)
    10711071        return false;
    1072     if (startTime() != cue.startTime())
     1072
     1073    const VTTCue* vttCue = toVTTCue(&cue);
     1074    if (text() != vttCue->text())
    10731075        return false;
    1074     if (text() != cue.text())
     1076    if (cueSettings() != vttCue->cueSettings())
    10751077        return false;
    1076     if (cueSettings() != cue.cueSettings())
     1078    if (position() != vttCue->position())
    10771079        return false;
    1078     if (id() != cue.id())
     1080    if (line() != vttCue->line())
    10791081        return false;
    1080     if (position() != cue.position())
     1082    if (size() != vttCue->size())
    10811083        return false;
    1082     if (line() != cue.line())
    1083         return false;
    1084     if (size() != cue.size())
    1085         return false;
    1086     if (align() != cue.align())
     1084    if (align() != vttCue->align())
    10871085        return false;
    10881086   
  • trunk/Source/WebCore/html/track/VTTCue.h

    r166180 r167527  
    154154    virtual void setFontSize(int, const IntSize&, bool important);
    155155
    156     enum CueMatchRules {
    157         MatchAllFields,
    158         IgnoreDuration,
    159     };
    160     virtual bool isEqual(const VTTCue&, CueMatchRules) const;
     156    virtual bool isEqual(const TextTrackCue&, CueMatchRules) const override;
    161157
    162158    virtual CueType cueType() const { return WebVTT; }
  • trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h

    r167025 r167527  
    2929#include "Color.h"
    3030#include "TrackPrivateBase.h"
     31
     32#if ENABLE(DATACUE_VALUE)
     33#include "SerializedPlatformRepresentation.h"
     34#endif
    3135
    3236#if ENABLE(VIDEO_TRACK)
     
    129133};
    130134
    131 class WebVTTCueData;
    132 
    133135class InbandTextTrackPrivateClient : public TrackPrivateBaseClient {
    134136public:
     
    136138
    137139    virtual void addDataCue(InbandTextTrackPrivate*, double start, double end, const void*, unsigned) = 0;
     140
     141#if ENABLE(DATACUE_VALUE)
     142    virtual void addDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr<SerializedPlatformRepresentation>, const String&) = 0;
     143    virtual void updateDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr<SerializedPlatformRepresentation>) = 0;
     144    virtual void removeDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr<SerializedPlatformRepresentation>) = 0;
     145#endif
    138146
    139147    virtual void addGenericCue(InbandTextTrackPrivate*, PassRefPtr<GenericCueData>) = 0;
  • trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp

    r165928 r167527  
    282282        return;
    283283
    284     if (currentTrack())
    285         currentTrack()->beginSeeking();
    286    
     284    if (currentTextTrack())
     285        currentTextTrack()->beginSeeking();
     286
    287287    LOG(Media, "MediaPlayerPrivateAVFoundation::seek(%p) - seeking to %f", this, time);
    288288
     
    660660    }
    661661
    662     if (currentTrack())
    663         currentTrack()->endSeeking();
     662    if (currentTextTrack())
     663        currentTextTrack()->endSeeking();
    664664
    665665    updateStates();
     
    930930    }
    931931
    932     setCurrentTrack(trackToEnable.get());
     932    setCurrentTextTrack(trackToEnable.get());
    933933}
    934934
  • trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h

    r165676 r167527  
    4040namespace WebCore {
    4141
     42class InbandMetadataTextTrackPrivateAVF;
    4243class InbandTextTrackPrivateAVF;
    4344class GenericCueData;
     
    5859    virtual void contentsNeedsDisplay() { }
    5960    virtual void configureInbandTracks();
    60     virtual void setCurrentTrack(InbandTextTrackPrivateAVF*) { }
    61     virtual InbandTextTrackPrivateAVF* currentTrack() const = 0;
     61    virtual void setCurrentTextTrack(InbandTextTrackPrivateAVF*) { }
     62    virtual InbandTextTrackPrivateAVF* currentTextTrack() const = 0;
    6263#if ENABLE(IOS_AIRPLAY)
    6364    void playbackTargetIsWirelessChanged();
     
    302303    void clearTextTracks();
    303304    Vector<RefPtr<InbandTextTrackPrivateAVF>> m_textTracks;
    304    
     305
    305306private:
    306307    MediaPlayer* m_player;
  • trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp

    r166783 r167527  
    111111    void updateVideoLayerGravity();
    112112
    113     void setCurrentTrack(InbandTextTrackPrivateAVF*);
    114     InbandTextTrackPrivateAVF* currentTrack() const { return m_currentTrack; }
     113    void setCurrentTextTrack(InbandTextTrackPrivateAVF*);
     114    InbandTextTrackPrivateAVF* currentTextTrack() const { return m_currentTextTrack; }
    115115
    116116#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
     
    171171    COMPtr<IDirect3DDevice9Ex> m_d3dDevice;
    172172
    173     InbandTextTrackPrivateAVF* m_currentTrack;
     173    InbandTextTrackPrivateAVF* m_currentTextTrack;
    174174};
    175175
     
    393393}
    394394
    395 void MediaPlayerPrivateAVFoundationCF::setCurrentTrack(InbandTextTrackPrivateAVF* track)
     395void MediaPlayerPrivateAVFoundationCF::setCurrentTextTrack(InbandTextTrackPrivateAVF* track)
    396396{
    397397    if (m_avfWrapper)
    398         m_avfWrapper->setCurrentTrack(track);
    399 }
    400 
    401 InbandTextTrackPrivateAVF* MediaPlayerPrivateAVFoundationCF::currentTrack() const
     398        m_avfWrapper->setCurrentTextTrack(track);
     399}
     400
     401InbandTextTrackPrivateAVF* MediaPlayerPrivateAVFoundationCF::currentTextTrack() const
    402402{
    403403    if (m_avfWrapper)
    404         return m_avfWrapper->currentTrack();
     404        return m_avfWrapper->currentTextTrack();
    405405
    406406    return 0;
     
    11031103#endif // HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    11041104
    1105 void AVFWrapper::setCurrentTrack(InbandTextTrackPrivateAVF* track)
    1106 {
    1107     if (m_currentTrack == track)
    1108         return;
    1109 
    1110     LOG(Media, "MediaPlayerPrivateAVFoundationCF::setCurrentTrack(%p) - selecting track %p, language = %s", this, track, track ? track->language().string().utf8().data() : "");
     1105void AVFWrapper::setCurrentTextTrack(InbandTextTrackPrivateAVF* track)
     1106{
     1107    if (m_currentTextTrack == track)
     1108        return;
     1109
     1110    LOG(Media, "MediaPlayerPrivateAVFoundationCF::setCurrentTextTrack(%p) - selecting track %p, language = %s", this, track, track ? track->language().string().utf8().data() : "");
    11111111       
    1112     m_currentTrack = track;
     1112    m_currentTextTrack = track;
    11131113
    11141114    if (track) {
     
    11881188    : m_owner(owner)
    11891189    , m_objectID(s_nextAVFWrapperObjectID++)
    1190     , m_currentTrack(0)
     1190    , m_currentTextTrack(0)
    11911191{
    11921192    ASSERT(isMainThread());
     
    16221622    }
    16231623
    1624     if (!self->m_currentTrack)
    1625         return;
    1626 
    1627     self->m_currentTrack->processCue(legibleOutputData->m_attributedStrings.get(), legibleOutputData->m_time);
     1624    if (!self->m_currentTextTrack)
     1625        return;
     1626
     1627    self->m_currentTextTrack->processCue(legibleOutputData->m_attributedStrings.get(), legibleOutputData->m_time);
    16281628}
    16291629
  • trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h

    r165676 r167527  
    109109#endif
    110110
    111     virtual void setCurrentTrack(InbandTextTrackPrivateAVF*) override;
    112     virtual InbandTextTrackPrivateAVF* currentTrack() const override;
     111    virtual void setCurrentTextTrack(InbandTextTrackPrivateAVF*) override;
     112    virtual InbandTextTrackPrivateAVF* currentTextTrack() const override;
    113113
    114114#if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h

    r166719 r167527  
    6161
    6262class WebCoreAVFResourceLoader;
     63class InbandMetadataTextTrackPrivateAVF;
    6364class InbandTextTrackPrivateAVFObjC;
    6465class AudioTrackPrivateAVFObjC;
     
    109110    void durationDidChange(double);
    110111    void rateDidChange(double);
    111     void metadataDidArrive(RetainPtr<NSArray>);
     112    void metadataDidArrive(RetainPtr<NSArray>, double);
    112113
    113114#if HAVE(AVFOUNDATION_VIDEO_OUTPUT)
     
    236237#endif
    237238
    238     virtual void setCurrentTrack(InbandTextTrackPrivateAVF*) override;
    239     virtual InbandTextTrackPrivateAVF* currentTrack() const override { return m_currentTrack; }
     239#if ENABLE(DATACUE_VALUE)
     240    void processMetadataTrack();
     241#endif
     242
     243    virtual void setCurrentTextTrack(InbandTextTrackPrivateAVF*) override;
     244    virtual InbandTextTrackPrivateAVF* currentTextTrack() const override { return m_currentTextTrack; }
    240245
    241246#if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
     
    303308#endif
    304309
    305     InbandTextTrackPrivateAVF* m_currentTrack;
     310    InbandTextTrackPrivateAVF* m_currentTextTrack;
     311
     312#if ENABLE(DATACUE_VALUE)
     313    RefPtr<InbandMetadataTextTrackPrivateAVF> m_metadataTrack;
     314#endif
    306315
    307316    mutable RetainPtr<NSArray> m_cachedSeekableRanges;
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm

    r167264 r167527  
    2727
    2828#if ENABLE(VIDEO) && USE(AVFOUNDATION)
    29 
    3029#import "MediaPlayerPrivateAVFoundationObjC.h"
    3130
     
    4140#import "GraphicsContext.h"
    4241#import "GraphicsContextCG.h"
     42#import "InbandMetadataTextTrackPrivateAVF.h"
    4343#import "InbandTextTrackPrivateAVFObjC.h"
    4444#import "InbandTextTrackPrivateLegacyAVFObjC.h"
     
    4848#import "PlatformTimeRanges.h"
    4949#import "SecurityOrigin.h"
     50#import "SerializedPlatformRepresentationMac.h"
    5051#import "SoftLinking.h"
    5152#import "TextTrackRepresentation.h"
     
    6364#import <wtf/CurrentTime.h>
    6465#import <wtf/Functional.h>
     66#import <wtf/NeverDestroyed.h>
    6567#import <wtf/text/CString.h>
    6668#import <wtf/text/StringBuilder.h>
     
    99101#endif
    100102
     103typedef AVPlayerItem AVPlayerItemType;
    101104typedef AVMetadataItem AVMetadataItemType;
    102105
     
    145148SOFT_LINK_POINTER(AVFoundation, AVMediaTypeVideo, NSString *)
    146149SOFT_LINK_POINTER(AVFoundation, AVMediaTypeAudio, NSString *)
     150SOFT_LINK_POINTER(AVFoundation, AVMediaTypeMetadata, NSString *)
    147151SOFT_LINK_POINTER(AVFoundation, AVPlayerItemDidPlayToEndTimeNotification, NSString *)
    148152SOFT_LINK_POINTER(AVFoundation, AVURLAssetInheritURIQueryComponentFromReferencingURIKey, NSString *)
     
    168172#define AVMediaTypeVideo getAVMediaTypeVideo()
    169173#define AVMediaTypeAudio getAVMediaTypeAudio()
     174#define AVMediaTypeMetadata getAVMediaTypeMetadata()
    170175#define AVPlayerItemDidPlayToEndTimeNotification getAVPlayerItemDidPlayToEndTimeNotification()
    171176#define AVURLAssetInheritURIQueryComponentFromReferencingURIKey getAVURLAssetInheritURIQueryComponentFromReferencingURIKey()
     
    221226#endif
    222227
     228#if ENABLE(DATACUE_VALUE)
     229SOFT_LINK_POINTER(AVFoundation, AVMetadataKeySpaceQuickTimeUserData, NSString*)
     230SOFT_LINK_POINTER(AVFoundation, AVMetadataKeySpaceISOUserData, NSString*)
     231SOFT_LINK_POINTER(AVFoundation, AVMetadataKeySpaceQuickTimeMetadata, NSString*)
     232SOFT_LINK_POINTER(AVFoundation, AVMetadataKeySpaceiTunes, NSString*)
     233SOFT_LINK_POINTER(AVFoundation, AVMetadataKeySpaceID3, NSString*)
     234
     235#define AVMetadataKeySpaceQuickTimeUserData getAVMetadataKeySpaceQuickTimeUserData()
     236#define AVMetadataKeySpaceISOUserData getAVMetadataKeySpaceISOUserData()
     237#define AVMetadataKeySpaceQuickTimeMetadata getAVMetadataKeySpaceQuickTimeMetadata()
     238#define AVMetadataKeySpaceiTunes getAVMetadataKeySpaceiTunes()
     239#define AVMetadataKeySpaceID3 getAVMetadataKeySpaceID3()
     240#endif
     241
    223242#define kCMTimeZero getkCMTimeZero()
    224243
     
    344363    , m_loaderDelegate(adoptNS([[WebCoreAVFLoaderDelegate alloc] initWithCallback:this]))
    345364#endif
    346     , m_currentTrack(0)
     365    , m_currentTextTrack(0)
    347366    , m_cachedDuration(MediaPlayer::invalidTime())
    348367    , m_cachedRate(0)
     
    968987    setDelayCallbacks(true);
    969988
     989    if (m_metadataTrack)
     990        m_metadataTrack->flushPartialCues();
     991
    970992    CMTime cmTime = CMTimeMakeWithSeconds(time, 600);
    971993    CMTime cmBefore = CMTimeMakeWithSeconds(negativeTolerance, 600);
     
    14181440        bool hasVideo = false;
    14191441        bool hasAudio = false;
     1442        bool hasMetaData = false;
    14201443        for (AVPlayerItemTrack *track in m_cachedTracks.get()) {
    14211444            if ([track isEnabled]) {
    14221445                AVAssetTrack *assetTrack = [track assetTrack];
    1423                 if ([[assetTrack mediaType] isEqualToString:AVMediaTypeVideo])
     1446                NSString *mediaType = [assetTrack mediaType];
     1447                if ([mediaType isEqualToString:AVMediaTypeVideo])
    14241448                    hasVideo = true;
    1425                 else if ([[assetTrack mediaType] isEqualToString:AVMediaTypeAudio])
     1449                else if ([mediaType isEqualToString:AVMediaTypeAudio])
    14261450                    hasAudio = true;
    1427                 else if ([[assetTrack mediaType] isEqualToString:AVMediaTypeClosedCaption]) {
     1451                else if ([mediaType isEqualToString:AVMediaTypeClosedCaption]) {
    14281452#if !HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    14291453                    hasCaptions = true;
    14301454#endif
    14311455                    haveCCTrack = true;
     1456                } else if ([mediaType isEqualToString:AVMediaTypeMetadata]) {
     1457                    hasMetaData = true;
    14321458                }
    14331459            }
    14341460        }
     1461
    14351462        setHasVideo(hasVideo);
    14361463        setHasAudio(hasAudio);
    1437 
     1464#if ENABLE(DATACUE_VALUE)
     1465        if (hasMetaData)
     1466            processMetadataTrack();
     1467#endif
    14381468
    14391469#if ENABLE(VIDEO_TRACK)
     
    20182048}
    20192049
     2050void MediaPlayerPrivateAVFoundationObjC::processMetadataTrack()
     2051{
     2052    if (m_metadataTrack)
     2053        return;
     2054
     2055    m_metadataTrack = InbandMetadataTextTrackPrivateAVF::create(InbandTextTrackPrivate::Metadata, InbandTextTrackPrivate::Data);
     2056    m_metadataTrack->setInBandMetadataTrackDispatchType("com.apple.streaming");
     2057    player()->addTextTrack(m_metadataTrack);
     2058}
     2059
    20202060void MediaPlayerPrivateAVFoundationObjC::processCue(NSArray *attributedStrings, double time)
    20212061{
    2022     if (!m_currentTrack)
    2023         return;
    2024 
    2025     m_currentTrack->processCue(reinterpret_cast<CFArrayRef>(attributedStrings), time);
     2062    if (!m_currentTextTrack)
     2063        return;
     2064
     2065    m_currentTextTrack->processCue(reinterpret_cast<CFArrayRef>(attributedStrings), time);
    20262066}
    20272067
     
    20302070    LOG(Media, "MediaPlayerPrivateAVFoundationObjC::flushCues(%p)", this);
    20312071
    2032     if (!m_currentTrack)
     2072    if (!m_currentTextTrack)
    20332073        return;
    20342074   
    2035     m_currentTrack->resetCueValues();
     2075    m_currentTextTrack->resetCueValues();
    20362076}
    20372077#endif // HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    20382078
    2039 void MediaPlayerPrivateAVFoundationObjC::setCurrentTrack(InbandTextTrackPrivateAVF *track)
    2040 {
    2041     if (m_currentTrack == track)
    2042         return;
    2043 
    2044     LOG(Media, "MediaPlayerPrivateAVFoundationObjC::setCurrentTrack(%p) - selecting track %p, language = %s", this, track, track ? track->language().string().utf8().data() : "");
     2079void MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack(InbandTextTrackPrivateAVF *track)
     2080{
     2081    if (m_currentTextTrack == track)
     2082        return;
     2083
     2084    LOG(Media, "MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack(%p) - selecting track %p, language = %s", this, track, track ? track->language().string().utf8().data() : "");
    20452085       
    2046     m_currentTrack = track;
     2086    m_currentTextTrack = track;
    20472087
    20482088    if (track) {
     
    22352275}
    22362276
    2237 void MediaPlayerPrivateAVFoundationObjC::metadataDidArrive(RetainPtr<NSArray> metadata)
    2238 {
    2239     if (!metadata || [metadata isKindOfClass:[NSNull class]])
    2240         return;
    2241 
    2242     m_currentMetaData = metadata;
     2277#if ENABLE(DATACUE_VALUE)
     2278static const AtomicString& metadataType(NSString *avMetadataKeySpace)
     2279{
     2280    static NeverDestroyed<const AtomicString> quickTimeUserData("com.apple.quicktime.udta", AtomicString::ConstructFromLiteral);
     2281    static NeverDestroyed<const AtomicString> isoUserData("org.mp4ra", AtomicString::ConstructFromLiteral);
     2282    static NeverDestroyed<const AtomicString> quickTimeMetadata("com.apple.quicktime.mdta", AtomicString::ConstructFromLiteral);
     2283    static NeverDestroyed<const AtomicString> iTunesMetadata("com.apple.itunes", AtomicString::ConstructFromLiteral);
     2284    static NeverDestroyed<const AtomicString> id3Metadata("org.id3", AtomicString::ConstructFromLiteral);
     2285
     2286    if ([avMetadataKeySpace isEqualToString:AVMetadataKeySpaceQuickTimeUserData])
     2287        return quickTimeUserData;
     2288    if ([avMetadataKeySpace isEqualToString:AVMetadataKeySpaceISOUserData])
     2289        return isoUserData;
     2290    if ([avMetadataKeySpace isEqualToString:AVMetadataKeySpaceQuickTimeMetadata])
     2291        return quickTimeMetadata;
     2292    if ([avMetadataKeySpace isEqualToString:AVMetadataKeySpaceiTunes])
     2293        return iTunesMetadata;
     2294    if ([avMetadataKeySpace isEqualToString:AVMetadataKeySpaceID3])
     2295        return id3Metadata;
     2296
     2297    return emptyAtom;
     2298}
     2299#endif
     2300
     2301void MediaPlayerPrivateAVFoundationObjC::metadataDidArrive(RetainPtr<NSArray> metadata, double mediaTime)
     2302{
     2303    m_currentMetaData = metadata && ![metadata isKindOfClass:[NSNull class]] ? metadata : nil;
     2304
     2305    LOG(Media, "MediaPlayerPrivateAVFoundationObjC::metadataDidArrive(%p) - adding %i cues at time %.2f", this, m_currentMetaData ? [m_currentMetaData.get() count] : 0, mediaTime);
     2306
     2307#if ENABLE(DATACUE_VALUE)
     2308    if (seeking())
     2309        return;
     2310
     2311    if (!metadata || [metadata isKindOfClass:[NSNull class]]) {
     2312        m_metadataTrack->updatePendingCueEndTimes(mediaTime);
     2313        return;
     2314    }
     2315
     2316    if (!m_metadataTrack)
     2317        processMetadataTrack();
     2318
     2319    // Set the duration of all incomplete cues before adding new ones.
     2320    double earliesStartTime = std::numeric_limits<double>::infinity();
     2321    for (AVMetadataItemType *item in m_currentMetaData.get()) {
     2322        double start = CMTimeGetSeconds(item.time);
     2323        if (start < earliesStartTime)
     2324            earliesStartTime = start;
     2325    }
     2326    m_metadataTrack->updatePendingCueEndTimes(earliesStartTime);
     2327
     2328    for (AVMetadataItemType *item in m_currentMetaData.get()) {
     2329        double start = CMTimeGetSeconds(item.time);
     2330        double end = std::numeric_limits<double>::infinity();
     2331        if (CMTIME_IS_VALID(item.duration))
     2332            end = start + CMTimeGetSeconds(item.duration);
     2333
     2334        AtomicString type = nullAtom;
     2335        if (item.keySpace)
     2336            type = metadataType(item.keySpace);
     2337
     2338        m_metadataTrack->addDataCue(start, end, SerializedPlatformRepresentationMac::create(item), type);
     2339    }
     2340#endif
    22432341}
    22442342
     
    24092507        else if ([keyPath isEqualToString:@"duration"])
    24102508            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::durationDidChange, m_callback, CMTimeGetSeconds([newValue CMTimeValue]));
    2411         else if ([keyPath isEqualToString:@"timedMetadata"] && newValue)
    2412             function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::metadataDidArrive, m_callback, RetainPtr<NSArray>(newValue));
     2509        else if ([keyPath isEqualToString:@"timedMetadata"] && newValue) {
     2510            double now = 0;
     2511            CMTime itemTime = [(AVPlayerItemType *)object currentTime];
     2512            if (CMTIME_IS_NUMERIC(itemTime))
     2513                now = std::max(narrowPrecisionToFloat(CMTimeGetSeconds(itemTime)), 0.0f);
     2514            function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::metadataDidArrive, m_callback, RetainPtr<NSArray>(newValue), now);
     2515        }
    24132516    }
    24142517
  • trunk/Source/WebKit/mac/ChangeLog

    r167481 r167527  
     12014-04-18  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] implement WebKitDataCue
     4        https://bugs.webkit.org/show_bug.cgi?id=131799
     5
     6        Reviewed by Dean Jackson.
     7
     8        * Configurations/FeatureDefines.xcconfig: Define ENABLE_DATACUE_VALUE.
     9
    1102014-04-17  Daniel Bates  <dabates@apple.com>
    211
  • trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig

    r167427 r167527  
    210210ENABLE_VIDEO = ENABLE_VIDEO;
    211211ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
     212ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
    212213ENABLE_VIEW_MODE_CSS_MEDIA = ;
    213214ENABLE_WEBGL = ENABLE_WEBGL;
     
    244245ENABLE_LLINT_C_LOOP = ;
    245246
    246 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_BLOB) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_STICKY_POSITION) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(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) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_IMAGE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(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_TEXT_AUTOSIZING) $(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_NOTIFICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_PLUGIN_PROXY_FOR_VIDEO) $(ENABLE_PROGRESS_ELEMENT) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(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_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
     247FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_BLOB) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_STICKY_POSITION) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(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) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_IMAGE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(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_TEXT_AUTOSIZING) $(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_NOTIFICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_PLUGIN_PROXY_FOR_VIDEO) $(ENABLE_PROGRESS_ELEMENT) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(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_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
  • trunk/Source/WebKit2/ChangeLog

    r167525 r167527  
     12014-04-18  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Mac] implement WebKitDataCue
     4        https://bugs.webkit.org/show_bug.cgi?id=131799
     5
     6        Reviewed by Dean Jackson.
     7
     8        * Configurations/FeatureDefines.xcconfig: Define ENABLE_DATACUE_VALUE.
     9
    1102014-04-18  Anders Carlsson  <andersca@apple.com>
    211
  • trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig

    r167427 r167527  
    210210ENABLE_VIDEO = ENABLE_VIDEO;
    211211ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
     212ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
    212213ENABLE_VIEW_MODE_CSS_MEDIA = ;
    213214ENABLE_WEBGL = ENABLE_WEBGL;
     
    244245ENABLE_LLINT_C_LOOP = ;
    245246
    246 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_BLOB) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_STICKY_POSITION) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(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) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_IMAGE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(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_TEXT_AUTOSIZING) $(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_NOTIFICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_PLUGIN_PROXY_FOR_VIDEO) $(ENABLE_PROGRESS_ELEMENT) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(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_VIEW_MODE_CSS_MEDIA) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_REPLAY) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
     247FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) $(ENABLE_AVF_CAPTIONS) $(ENABLE_BLOB) $(ENABLE_CACHE_PARTITIONING) $(ENABLE_CANVAS_PATH) $(ENABLE_CANVAS_PROXY) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CSP_NEXT) $(ENABLE_CSS_BOX_DECORATION_BREAK) $(ENABLE_CSS_COMPOSITING) $(ENABLE_CSS_DEVICE_ADAPTATION) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_FILTERS) $(ENABLE_CSS_GRID_LAYOUT) $(ENABLE_CSS_IMAGE_ORIENTATION) $(ENABLE_CSS_IMAGE_RESOLUTION) $(ENABLE_CSS_REGIONS) $(ENABLE_CSS_SHAPES) $(ENABLE_CSS_STICKY_POSITION) $(ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED) $(ENABLE_CSS3_CONDITIONAL_RULES) $(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) $(ENABLE_FONT_LOAD_EVENTS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GAMEPAD) $(ENABLE_GEOLOCATION) $(ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING) $(ENABLE_HIGH_DPI_CANVAS) $(ENABLE_ICONDATABASE) $(ENABLE_IMAGE_CONTROLS) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INDEXED_DATABASE_IN_WORKERS) $(ENABLE_INDIE_UI) $(ENABLE_INPUT_SPEECH) $(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_TEXT_AUTOSIZING) $(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_NOTIFICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PDFKIT_PLUGIN) $(ENABLE_PLUGIN_PROXY_FOR_VIDEO) $(ENABLE_PROGRESS_ELEMENT) $(ENABLE_PROMISES) $(ENABLE_PROXIMITY_EVENTS) $(ENABLE_PUBLIC_SUFFIX_LIST) $(ENABLE_QUOTA) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_REMOTE_INSPECTOR) $(ENABLE_RESOLUTION_MEDIA_QUERY) $(ENABLE_SCRIPTED_SPEECH) $(ENABLE_SHARED_WORKERS) $(ENABLE_SPEECH_SYNTHESIS) $(ENABLE_SQL_DATABASE) $(ENABLE_SUBPIXEL_LAYOUT) $(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_WEB_TIMING) $(ENABLE_WEBVTT_REGIONS) $(ENABLE_XHR_TIMEOUT) $(ENABLE_XSLT) $(ENABLE_FTL_JIT) $(ENABLE_LLINT_C_LOOP) $(FEATURE_DEFINES_$(PLATFORM_NAME));
Note: See TracChangeset for help on using the changeset viewer.