<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[167632] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/167632">167632</a></dd>
<dt>Author</dt> <dd>eric.carlson@apple.com</dd>
<dt>Date</dt> <dd>2014-04-21 16:18:23 -0700 (Mon, 21 Apr 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[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 -&gt; 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 -&gt; currentTextTrack
(WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): currentTrack -&gt; currentTextTrack.
(WebCore::MediaPlayerPrivateAVFoundationObjC::processMetadataTrack): New.
(WebCore::MediaPlayerPrivateAVFoundationObjC::processCue): m_currentTrack -&gt; 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.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformeflTestExpectations">trunk/LayoutTests/platform/efl/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformgtkTestExpectations">trunk/LayoutTests/platform/gtk/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformmacTestExpectations">trunk/LayoutTests/platform/mac/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformmacjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmountainlionjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac-mountainlion/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformwinTestExpectations">trunk/LayoutTests/platform/win/TestExpectations</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreConfigurationsFeatureDefinesxcconfig">trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFwtfFeatureDefinesh">trunk/Source/WTF/wtf/FeatureDefines.h</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreConfigurationsFeatureDefinesxcconfig">trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSBindingsAllInOnecpp">trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackDataCuecpp">trunk/Source/WebCore/html/track/DataCue.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackDataCueh">trunk/Source/WebCore/html/track/DataCue.h</a></li>
<li><a href="#trunkSourceWebCorehtmltrackDataCueidl">trunk/Source/WebCore/html/track/DataCue.idl</a></li>
<li><a href="#trunkSourceWebCorehtmltrackInbandDataTextTrackcpp">trunk/Source/WebCore/html/track/InbandDataTextTrack.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackInbandDataTextTrackh">trunk/Source/WebCore/html/track/InbandDataTextTrack.h</a></li>
<li><a href="#trunkSourceWebCorehtmltrackInbandGenericTextTrackcpp">trunk/Source/WebCore/html/track/InbandGenericTextTrack.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackInbandTextTrackh">trunk/Source/WebCore/html/track/InbandTextTrack.h</a></li>
<li><a href="#trunkSourceWebCorehtmltrackInbandWebVTTTextTrackcpp">trunk/Source/WebCore/html/track/InbandWebVTTTextTrack.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackTextTrackcpp">trunk/Source/WebCore/html/track/TextTrack.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackTextTrackh">trunk/Source/WebCore/html/track/TextTrack.h</a></li>
<li><a href="#trunkSourceWebCorehtmltrackTextTrackCuecpp">trunk/Source/WebCore/html/track/TextTrackCue.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackTextTrackCueh">trunk/Source/WebCore/html/track/TextTrackCue.h</a></li>
<li><a href="#trunkSourceWebCorehtmltrackTextTrackCueGenericcpp">trunk/Source/WebCore/html/track/TextTrackCueGeneric.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackTextTrackCueGenerich">trunk/Source/WebCore/html/track/TextTrackCueGeneric.h</a></li>
<li><a href="#trunkSourceWebCorehtmltrackVTTCuecpp">trunk/Source/WebCore/html/track/VTTCue.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackVTTCueh">trunk/Source/WebCore/html/track/VTTCue.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsInbandTextTrackPrivateClienth">trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationMediaPlayerPrivateAVFoundationcpp">trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationMediaPlayerPrivateAVFoundationh">trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationcfMediaPlayerPrivateAVFoundationCFcpp">trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationcfMediaPlayerPrivateAVFoundationCFh">trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCh">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm">trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacConfigurationsFeatureDefinesxcconfig">trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2ConfigurationsFeatureDefinesxcconfig">trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/LayoutTests/http/tests/media/resources/hls/</li>
<li>trunk/LayoutTests/http/tests/media/resources/hls/metadata/</li>
<li><a href="#trunkLayoutTestshttptestsmediaresourceshlsmetadatafileSequence0ts">trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence0.ts</a></li>
<li><a href="#trunkLayoutTestshttptestsmediaresourceshlsmetadatafileSequence1ts">trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence1.ts</a></li>
<li><a href="#trunkLayoutTestshttptestsmediaresourceshlsmetadatafileSequence2ts">trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence2.ts</a></li>
<li><a href="#trunkLayoutTestshttptestsmediaresourceshlsmetadatafileSequence3ts">trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence3.ts</a></li>
<li><a href="#trunkLayoutTestshttptestsmediaresourceshlsmetadataprog_indexm3u8">trunk/LayoutTests/http/tests/media/resources/hls/metadata/prog_index.m3u8</a></li>
<li><a href="#trunkLayoutTestshttptestsmediatrackinbandhlsmetadataexpectedtxt">trunk/LayoutTests/http/tests/media/track-in-band-hls-metadata-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestsmediatrackinbandhlsmetadatahtml">trunk/LayoutTests/http/tests/media/track-in-band-hls-metadata.html</a></li>
<li><a href="#trunkLayoutTestsmediatracktrackdatacuevalueexpectedtxt">trunk/LayoutTests/media/track/track-datacue-value-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediatracktrackdatacuevaluehtml">trunk/LayoutTests/media/track/track-datacue-value.html</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDataCueCustomcpp">trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformSerializedPlatformRepresentationh">trunk/Source/WebCore/platform/SerializedPlatformRepresentation.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationInbandMetadataTextTrackPrivateAVFcpp">trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationInbandMetadataTextTrackPrivateAVFh">trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacSerializedPlatformRepresentationMach">trunk/Source/WebCore/platform/mac/SerializedPlatformRepresentationMac.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacSerializedPlatformRepresentationMacmm">trunk/Source/WebCore/platform/mac/SerializedPlatformRepresentationMac.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/LayoutTests/ChangeLog        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1,3 +1,29 @@
</span><ins>+2014-04-21  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [Mac] implement WebKitDataCue
+        https://bugs.webkit.org/show_bug.cgi?id=131799
+
+        Reviewed by Dean Jackson.
+
+        * 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.
+
</ins><span class="cx"> 2014-04-21  Benjamin Poulain  &lt;benjamin@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Add Element.matches, the standard name for webkitMatchesSelector
</span></span></pre></div>
<a id="trunkLayoutTestshttptestsmediaresourceshlsmetadatafileSequence0ts"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence0.ts</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence0.ts
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestshttptestsmediaresourceshlsmetadatafileSequence1ts"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence1.ts</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence1.ts
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestshttptestsmediaresourceshlsmetadatafileSequence2ts"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence2.ts</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence2.ts
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestshttptestsmediaresourceshlsmetadatafileSequence3ts"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence3.ts</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/http/tests/media/resources/hls/metadata/fileSequence3.ts
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestshttptestsmediaresourceshlsmetadataprog_indexm3u8"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/media/resources/hls/metadata/prog_index.m3u8 (0 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/media/resources/hls/metadata/prog_index.m3u8                                (rev 0)
+++ trunk/LayoutTests/http/tests/media/resources/hls/metadata/prog_index.m3u8        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+#EXTM3U
+#EXT-X-TARGETDURATION:5
+#EXT-X-VERSION:3
+#EXT-X-MEDIA-SEQUENCE:0
+#EXT-X-PLAYLIST-TYPE:VOD
+#EXTINF:5.00000,        
+fileSequence2.ts
+#EXTINF:4.80000,        
+fileSequence3.ts
+#EXT-X-ENDLIST
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestsmediatrackinbandhlsmetadataexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/media/track-in-band-hls-metadata-expected.txt (0 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/media/track-in-band-hls-metadata-expected.txt                                (rev 0)
+++ trunk/LayoutTests/http/tests/media/track-in-band-hls-metadata-expected.txt        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+  
+Test for metadata tracks from Apple HLS stream.
+
+
+** Set video.src, wait for media data to load
+EVENT(addtrack)
+EXPECTED (tracks.length == '1') OK
+RUN(track = video.textTracks[0])
+EXPECTED (track.kind == 'metadata') OK
+EXPECTED (track.mode == 'disabled') OK
+RUN(track.mode = 'hidden')
+EVENT(canplaythrough)
+
+** Start playback, wait for all cues to load
+EVENT(cuechange)
+EVENT(cuechange)
+EVENT(cuechange)
+EVENT(cuechange)
+EVENT(cuechange)
+EVENT(cuechange)
+
+** Validate cue data
+EXPECTED (cue.type == 'org.id3') OK
+EXPECTED (cue.data == 'null') OK
+EXPECTED ('{&quot;value&quot;:{&quot;key&quot;:&quot;TIT2&quot;,&quot;data&quot;:&quot;Stream Counting&quot;}}' == '{&quot;value&quot;:{&quot;key&quot;:&quot;TIT2&quot;,&quot;data&quot;:&quot;Stream Counting&quot;}}') OK
+
+EXPECTED (cue.type == 'org.id3') OK
+EXPECTED (cue.data == 'null') OK
+EXPECTED ('{&quot;value&quot;:{&quot;key&quot;:&quot;TPE1&quot;,&quot;data&quot;:&quot;Andy&quot;}}' == '{&quot;value&quot;:{&quot;key&quot;:&quot;TPE1&quot;,&quot;data&quot;:&quot;Andy&quot;}}') OK
+
+EXPECTED (cue.type == 'org.id3') OK
+EXPECTED (cue.data == 'null') OK
+EXPECTED ('{&quot;value&quot;:{&quot;key&quot;:&quot;TALB&quot;,&quot;data&quot;:&quot;Greatest Hits&quot;}}' == '{&quot;value&quot;:{&quot;key&quot;:&quot;TALB&quot;,&quot;data&quot;:&quot;Greatest Hits&quot;}}') OK
+
+EXPECTED (cue.type == 'org.id3') OK
+EXPECTED (cue.data == 'null') OK
+EXPECTED ('{&quot;value&quot;:{&quot;data&quot;:{},&quot;info&quot;:&quot;Our Hero&quot;,&quot;key&quot;:&quot;GEOB&quot;,&quot;name&quot;:&quot;abe.png&quot;,&quot;type&quot;:&quot;image/png&quot;}}' == '{&quot;value&quot;:{&quot;data&quot;:{},&quot;info&quot;:&quot;Our Hero&quot;,&quot;key&quot;:&quot;GEOB&quot;,&quot;name&quot;:&quot;abe.png&quot;,&quot;type&quot;:&quot;image/png&quot;}}') OK
+
+EXPECTED (cue.type == 'org.id3') OK
+EXPECTED (cue.data == 'null') OK
+EXPECTED ('{&quot;value&quot;:{&quot;data&quot;:{},&quot;key&quot;:&quot;APIC&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;dataType&quot;:&quot;Movie/video screen capture&quot;}}' == '{&quot;value&quot;:{&quot;data&quot;:{},&quot;key&quot;:&quot;APIC&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;dataType&quot;:&quot;Movie/video screen capture&quot;}}') OK
+
+EXPECTED (cue.type == 'org.id3') OK
+EXPECTED (cue.data == 'null') OK
+EXPECTED ('{&quot;value&quot;:{&quot;key&quot;:&quot;TXXX&quot;,&quot;data&quot;:&quot;Text Blob&quot;}}' == '{&quot;value&quot;:{&quot;key&quot;:&quot;TXXX&quot;,&quot;data&quot;:&quot;Text Blob&quot;}}') OK
+
+** Extract images from cue data, validate by setting img.src
+RUN(cueImageData = track.cues[3].value.data)
+EXPECTED (cueImageData instanceof ArrayBuffer == 'true') OK
+RUN(blobUrl = URL.createObjectURL(new Blob([cueImageData], { type: 'image/png' } )))
+RUN(imageElement.src = blobUrl)
+EVENT(load)
+EXPECTED (imageElement.width == '76') OK
+EXPECTED (imageElement.height == '103') OK
+
+RUN(cueImageData = track.cues[4].value.data)
+EXPECTED (cueImageData instanceof ArrayBuffer == 'true') OK
+RUN(blobUrl = URL.createObjectURL(new Blob([cueImageData], { type: 'image/png' } )))
+RUN(imageElement.src = blobUrl)
+EVENT(load)
+EXPECTED (imageElement.width == '100') OK
+EXPECTED (imageElement.height == '100') OK
+
+END OF TEST
+
</ins></span></pre></div>
<a id="trunkLayoutTestshttptestsmediatrackinbandhlsmetadatahtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/http/tests/media/track-in-band-hls-metadata.html (0 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/media/track-in-band-hls-metadata.html                                (rev 0)
+++ trunk/LayoutTests/http/tests/media/track-in-band-hls-metadata.html        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -0,0 +1,103 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
+
+        &lt;script src=../../media-resources/video-test.js&gt;&lt;/script&gt;
+        &lt;script src=../../media-resources/media-file.js&gt;&lt;/script&gt;
+
+        &lt;script&gt;
+            var track;
+            var cuechangeCount = 0;
+            var loadCount = 0;
+            var cueJSON = [
+                 '{&quot;value&quot;:{&quot;key&quot;:&quot;TIT2&quot;,&quot;data&quot;:&quot;Stream Counting&quot;}}',
+                 '{&quot;value&quot;:{&quot;key&quot;:&quot;TPE1&quot;,&quot;data&quot;:&quot;Andy&quot;}}',
+                 '{&quot;value&quot;:{&quot;key&quot;:&quot;TALB&quot;,&quot;data&quot;:&quot;Greatest Hits&quot;}}',
+                 '{&quot;value&quot;:{&quot;data&quot;:{},&quot;info&quot;:&quot;Our Hero&quot;,&quot;key&quot;:&quot;GEOB&quot;,&quot;name&quot;:&quot;abe.png&quot;,&quot;type&quot;:&quot;image/png&quot;}}',
+                 '{&quot;value&quot;:{&quot;data&quot;:{},&quot;key&quot;:&quot;APIC&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;dataType&quot;:&quot;Movie/video screen capture&quot;}}',
+                 '{&quot;value&quot;:{&quot;key&quot;:&quot;TXXX&quot;,&quot;data&quot;:&quot;Text Blob&quot;}}'
+            ];
+            var imageSizes = [ [76, 103], [100, 100] ];
+        
+            function addtrack(event)
+            {
+                tracks = event.target;
+                testExpected(&quot;tracks.length&quot;, &quot;1&quot;);
+                run(&quot;track = video.textTracks[0]&quot;);
+                testExpected(&quot;track.kind&quot;, &quot;metadata&quot;);
+                testExpected(&quot;track.mode&quot;, &quot;disabled&quot;);
+                run(&quot;track.mode = 'hidden'&quot;);
+                track.addEventListener('cuechange', cuechange, true);
+            }
+            
+            function imageLoad()
+            {
+                testExpected(&quot;imageElement.width&quot;, imageSizes[loadCount][0]);
+                testExpected(&quot;imageElement.height&quot;, imageSizes[loadCount][1]);
+                consoleWrite(&quot;&quot;);
+
+                if (++loadCount == 2) {
+                    endTest();
+                    return;
+                }
+
+                testImage(4);
+            }
+
+            function testImage(cueIndex)
+            {
+                run(&quot;cueImageData = track.cues[&quot; + cueIndex + &quot;].value.data&quot;);
+                testExpected(&quot;cueImageData instanceof ArrayBuffer&quot;, true);
+                run(&quot;blobUrl = URL.createObjectURL(new Blob([cueImageData], { type: 'image/png' } ))&quot;);
+                imageElement = document.querySelector(&quot;#photo&quot;);
+                run(&quot;imageElement.src = blobUrl&quot;);
+            }
+            
+            function cuechange(event)
+            {
+                consoleWrite(&quot;EVENT(cuechange)&quot;);
+                if (++cuechangeCount != 6)
+                    return;
+
+                consoleWrite(&quot;&lt;br&gt;&lt;i&gt;** Validate cue data&lt;/i&gt;&quot;);
+                track.removeEventListener(&quot;cuechange&quot;, cuechange, true);
+                video.pause();
+                
+                for (var i = 0; i &lt; 6; i++) {
+                    cue = track.cues[i];
+                    testExpected(&quot;cue.type&quot;, &quot;org.id3&quot;);
+                    testExpected(&quot;cue.data&quot;, null);
+                    testExpected(&quot;'&quot; + JSON.stringify(cue) + &quot;'&quot;, cueJSON[i]);
+                    consoleWrite(&quot;&quot;);
+                }
+
+                consoleWrite(&quot;&lt;i&gt;** Extract images from cue data, validate by setting img.src&lt;/i&gt;&quot;);
+                imageElement = document.querySelector(&quot;#photo&quot;);
+                waitForEvent('load', imageLoad, false, false, imageElement)
+                testImage(3);
+            }
+
+            function canplaythrough()
+            {
+                consoleWrite(&quot;&lt;br&gt;&lt;i&gt;** Start playback, wait for all cues to load&lt;/i&gt;&quot;);
+                video.play(); 
+            }
+
+            function start()
+            {
+                consoleWrite(&quot;&lt;br&gt;&lt;i&gt;** Set video.src, wait for media data to load&lt;/i&gt;&quot;);
+                findMediaElement();
+                video.src = &quot;http://127.0.0.1:8000/media/resources/hls/metadata/prog_index.m3u8&quot;;
+
+                waitForEvent(&quot;canplaythrough&quot;, canplaythrough);
+                waitForEvent('addtrack', addtrack, false, false, video.textTracks);
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;start()&quot;&gt;
+        &lt;video controls&gt;&lt;/video&gt;
+        &lt;img id=photo&gt;
+        &lt;p&gt;Test for metadata tracks from Apple HLS stream.&lt;/p&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsmediatracktrackdatacuevalueexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/media/track/track-datacue-value-expected.txt (0 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/track-datacue-value-expected.txt                                (rev 0)
+++ trunk/LayoutTests/media/track/track-datacue-value-expected.txt        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+Tests WebKitDataCue.value
+
+
+*** Initialize with string.
+RUN(cue = new WebKitDataCue(2, 6, 'test'))
+EXPECTED (cue.id == '') OK
+EXPECTED (cue.startTime == '2') OK
+EXPECTED (cue.endTime == '6') OK
+EXPECTED (cue.pauseOnExit == 'false') OK
+EXPECTED (typeof cue.value == 'string') OK
+EXPECTED (cue.value == 'test') OK
+EXPECTED (cue.data == 'null') OK
+EXPECTED (cue.type == '') OK
+
+*** Initialize with an object.
+RUN(cue = new WebKitDataCue(9, 16, { data: [1, 2, 3] }, 'org.test'))
+EXPECTED (cue.id == '') OK
+EXPECTED (cue.startTime == '9') OK
+EXPECTED (cue.endTime == '16') OK
+EXPECTED (cue.pauseOnExit == 'false') OK
+EXPECTED (typeof cue.value == 'object') OK
+EXPECTED (JSON.stringify(cue.value) == '{&quot;data&quot;:[1,2,3]}') OK
+EXPECTED (cue.data == 'null') OK
+EXPECTED (cue.type == 'org.test') OK
+
+*** Set .value to an array.
+RUN(cue.value = [1,2,3])
+EXPECTED (JSON.stringify(cue.value) == '[1,2,3]') OK
+EXPECTED (cue.value.length == '3') OK
+EXPECTED (cue.value[0] == '1') OK
+EXPECTED (cue.value[1] == '2') OK
+EXPECTED (cue.value[2] == '3') OK
+
+*** Set .data to an ArrayBuffer, .value should return null.
+RUN(cue.data = new Uint8Array([1, 2, 3, 4, 5, 6]).buffer)
+EXPECTED (cue.value == 'null') OK
+
+END OF TEST
+
</ins></span></pre></div>
<a id="trunkLayoutTestsmediatracktrackdatacuevaluehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/media/track/track-datacue-value.html (0 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/track-datacue-value.html                                (rev 0)
+++ trunk/LayoutTests/media/track/track-datacue-value.html        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
+
+        &lt;script src=../media-file.js&gt;&lt;/script&gt;
+        &lt;script src=../video-test.js&gt;&lt;/script&gt;
+        &lt;script&gt;
+            function loaded()
+            {
+                consoleWrite(&quot;&lt;br&gt;*** Initialize with string.&quot;);
+                run(&quot;cue = new WebKitDataCue(2, 6, 'test')&quot;);
+                testExpected(&quot;cue.id&quot;, &quot;&quot;);
+                testExpected(&quot;cue.startTime&quot;, 2);
+                testExpected(&quot;cue.endTime&quot;, 6);
+                testExpected(&quot;cue.pauseOnExit&quot;, false);
+                testExpected(&quot;typeof cue.value&quot;, &quot;string&quot;);
+                testExpected(&quot;cue.value&quot;, 'test');
+                testExpected(&quot;cue.data&quot;, null);
+                testExpected(&quot;cue.type&quot;, '');
+
+                consoleWrite(&quot;&lt;br&gt;*** Initialize with an object.&quot;);
+                run(&quot;cue = new WebKitDataCue(9, 16, { data: [1, 2, 3] }, 'org.test')&quot;);
+                testExpected(&quot;cue.id&quot;, &quot;&quot;);
+                testExpected(&quot;cue.startTime&quot;, 9);
+                testExpected(&quot;cue.endTime&quot;, 16);
+                testExpected(&quot;cue.pauseOnExit&quot;, false);
+                testExpected(&quot;typeof cue.value&quot;, &quot;object&quot;);
+                testExpected(&quot;JSON.stringify(cue.value)&quot;, '{&quot;data&quot;:[1,2,3]}');
+                testExpected(&quot;cue.data&quot;, null);
+                testExpected(&quot;cue.type&quot;, 'org.test');
+
+                consoleWrite(&quot;&lt;br&gt;*** Set .value to an array.&quot;);
+                run(&quot;cue.value = [1,2,3]&quot;);
+                testExpected(&quot;JSON.stringify(cue.value)&quot;, JSON.stringify([1,2,3]));
+                testArraysEqual(&quot;cue.value&quot;, [1,2,3]);
+
+                consoleWrite(&quot;&lt;br&gt;*** Set .data to an ArrayBuffer, .value should return null.&quot;);
+                run(&quot;cue.data = new Uint8Array([1, 2, 3, 4, 5, 6]).buffer&quot;);
+                testExpected(&quot;cue.value&quot;, null);
+
+                consoleWrite(&quot;&quot;);
+                endTest();
+            }
+        &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;loaded()&quot;&gt;
+        &lt;p&gt;Tests WebKitDataCue.value&lt;/p&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformeflTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/efl/TestExpectations (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/efl/TestExpectations        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/LayoutTests/platform/efl/TestExpectations        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1398,6 +1398,10 @@
</span><span class="cx"> Bug(EFL) media/track/track-in-band-mode.html [ Skip ]
</span><span class="cx"> Bug(EFL) media/track/in-band [ Skip ]
</span><span class="cx"> 
</span><ins>+# DataCue.value not enabled
+Bug(EFL) http/tests/media/track-in-band-hls-metadata.html [ Skip ]
+Bug(EFL) media/track/track-datacue-value.html [ Skip ]
+
</ins><span class="cx"> # Rendering failure, also missing expected results:
</span><span class="cx"> webkit.org/b/105093 compositing/webgl/webgl-nonpremultiplied-blend.html [ Skip ]
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtkTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/gtk/TestExpectations (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/TestExpectations        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/LayoutTests/platform/gtk/TestExpectations        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -339,6 +339,10 @@
</span><span class="cx"> webkit.org/b/131546 media/track/track-in-band-legacy-api.html [ Failure ]
</span><span class="cx"> webkit.org/b/131546 media/track/track-in-band-mode.html [ Skip ]
</span><span class="cx"> 
</span><ins>+# DataCue.value not enabled
+Bug(GTK) http/tests/media/track-in-band-hls-metadata.html [ Skip ]
+Bug(GTK) media/track/track-datacue-value.html [ Skip ]
+
</ins><span class="cx"> # Require ENABLE(CUSTOM_ELEMENTS) support
</span><span class="cx"> webkit.org/b/110735 fast/dom/custom [ Skip ]
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/TestExpectations (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/TestExpectations        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/LayoutTests/platform/mac/TestExpectations        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1340,6 +1340,12 @@
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/130693 mathml/presentation/tokenElements-background-color.html [ ImageOnlyFailure ]
</span><span class="cx"> 
</span><ins>+# WebKitDataCue is supported, not DataCue
+media/track/track-datacue.html [ Skip ]
+
+# Mountain Lion and prior do not support HLS timed metadata
+Bug(ericcarlson) [ MountainLion ] http/tests/media/track-in-band-hls-metadata.html [ Skip ]
+
</ins><span class="cx"> # Frequently times out on EWS, which is then misreported as crash.
</span><span class="cx"> webkit.org/b/130720 [ MountainLion Release ] media/W3C/audio/canPlayType/canPlayType_application_octet_stream.html [ Pass Failure Crash Timeout ]
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -253,11 +253,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').configurable is true
</span><del>-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').value is DataCue
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').configurable is true
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').value is DataTransfer
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').hasOwnProperty('set') is false
</span><span class="lines">@@ -1948,6 +1943,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').value is WebKitDataCue
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyError').value is WebKitMediaKeyError
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyError').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeyError').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacmountainlionjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-mountainlion/js/dom/global-constructors-attributes-expected.txt (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mountainlion/js/dom/global-constructors-attributes-expected.txt        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/LayoutTests/platform/mac-mountainlion/js/dom/global-constructors-attributes-expected.txt        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -253,11 +253,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DOMTokenList').configurable is true
</span><del>-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').value is DataCue
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'DataCue').configurable is true
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').value is DataTransfer
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'DataTransfer').hasOwnProperty('set') is false
</span><span class="lines">@@ -1938,6 +1933,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSTransformValue').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').value is WebKitDataCue
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'WebKitDataCue').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').value is WebKitMutationObserver
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformwinTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/win/TestExpectations (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/win/TestExpectations        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/LayoutTests/platform/win/TestExpectations        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -2731,6 +2731,10 @@
</span><span class="cx"> 
</span><span class="cx"> platform/win/plugins/iframe-inside-overflow.html [ Failure ]
</span><span class="cx"> 
</span><ins>+# DataCue.value not enabled
+http/tests/media/track-in-band-hls-metadata.html [ Skip ]
+media/track/track-datacue-value.html [ Skip ]
+
</ins><span class="cx"> # CRASHES
</span><span class="cx"> ietestcenter/Javascript/15.2.3.3-4-18.html [ Crash ]
</span><span class="cx"> media/track/track-in-band-legacy-api.html [ Crash ]
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-04-21  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [Mac] implement WebKitDataCue
+        https://bugs.webkit.org/show_bug.cgi?id=131799
+
+        Reviewed by Dean Jackson.
+
+        * Configurations/FeatureDefines.xcconfig: Define ENABLE_DATACUE_VALUE.
+
</ins><span class="cx"> 2014-04-21  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed test gardening, run the repeat-out-of-bounds tests again.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -209,6 +209,7 @@
</span><span class="cx"> ENABLE_USERSELECT_ALL = ENABLE_USERSELECT_ALL;
</span><span class="cx"> ENABLE_VIDEO = ENABLE_VIDEO;
</span><span class="cx"> ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
</span><ins>+ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
</ins><span class="cx"> ENABLE_VIEW_MODE_CSS_MEDIA = ;
</span><span class="cx"> ENABLE_WEBGL = ENABLE_WEBGL;
</span><span class="cx"> ENABLE_WEB_AUDIO = ENABLE_WEB_AUDIO;
</span><span class="lines">@@ -243,4 +244,4 @@
</span><span class="cx"> 
</span><span class="cx"> ENABLE_LLINT_C_LOOP = ;
</span><span class="cx"> 
</span><del>-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));
</del><ins>+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_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));
</ins></span></pre></div>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WTF/ChangeLog        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-04-21  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [Mac] implement WebKitDataCue
+        https://bugs.webkit.org/show_bug.cgi?id=131799
+
+        Reviewed by Dean Jackson.
+
+        * wtf/FeatureDefines.h: Define ENABLE_DATACUE_VALUE.
+
</ins><span class="cx"> 2014-04-21  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add HashSet::takeAny
</span></span></pre></div>
<a id="trunkSourceWTFwtfFeatureDefinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/FeatureDefines.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/FeatureDefines.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WTF/wtf/FeatureDefines.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -760,6 +760,10 @@
</span><span class="cx"> #define ENABLE_VIDEO_TRACK 0
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if !defined(ENABLE_DATACUE_VALUE)
+#define ENABLE_DATACUE_VALUE 0
+#endif
+
</ins><span class="cx"> #if !defined(ENABLE_VIEWPORT)
</span><span class="cx"> #define ENABLE_VIEWPORT 0
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/CMakeLists.txt        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1025,6 +1025,7 @@
</span><span class="cx">     bindings/js/JSCallbackData.cpp
</span><span class="cx">     bindings/js/JSCanvasRenderingContext2DCustom.cpp
</span><span class="cx">     bindings/js/JSCanvasRenderingContextCustom.cpp
</span><ins>+    bindings/js/JSDataCueCustom.cpp
</ins><span class="cx">     bindings/js/JSDataTransferCustom.cpp
</span><span class="cx">     bindings/js/JSCommandLineAPIHostCustom.cpp
</span><span class="cx">     bindings/js/JSCryptoAlgorithmBuilder.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/ChangeLog        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1,3 +1,141 @@
</span><ins>+2014-04-21  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [Mac] implement WebKitDataCue
+        https://bugs.webkit.org/show_bug.cgi?id=131799
+
+        Reviewed by Dean Jackson.
+
+        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 -&gt; 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 -&gt; currentTextTrack
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): currentTrack -&gt; currentTextTrack.
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::processMetadataTrack): New.
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::processCue): m_currentTrack -&gt; 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):
+
</ins><span class="cx"> 2014-04-21  Benjamin Poulain  &lt;benjamin@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Add Element.matches, the standard name for webkitMatchesSelector
</span></span></pre></div>
<a id="trunkSourceWebCoreConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -209,6 +209,7 @@
</span><span class="cx"> ENABLE_USERSELECT_ALL = ENABLE_USERSELECT_ALL;
</span><span class="cx"> ENABLE_VIDEO = ENABLE_VIDEO;
</span><span class="cx"> ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
</span><ins>+ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
</ins><span class="cx"> ENABLE_VIEW_MODE_CSS_MEDIA = ;
</span><span class="cx"> ENABLE_WEBGL = ENABLE_WEBGL;
</span><span class="cx"> ENABLE_WEB_AUDIO = ENABLE_WEB_AUDIO;
</span><span class="lines">@@ -243,4 +244,4 @@
</span><span class="cx"> 
</span><span class="cx"> ENABLE_LLINT_C_LOOP = ;
</span><span class="cx"> 
</span><del>-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));
</del><ins>+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_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));
</ins></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/DerivedSources.make        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -954,6 +954,10 @@
</span><span class="cx">     HTML_FLAGS := $(HTML_FLAGS) ENABLE_VIDEO_TRACK=0
</span><span class="cx"> endif
</span><span class="cx"> 
</span><ins>+ifeq ($(findstring ENABLE_DATACUE_VALUE,$(FEATURE_DEFINES)), ENABLE_DATACUE_VALUE)
+        HTML_FLAGS := $(HTML_FLAGS) ENABLE_DATACUE_VALUE=0
+endif
+
</ins><span class="cx"> ifeq ($(findstring ENABLE_ENCRYPTED_MEDIA,$(FEATURE_DEFINES)), ENABLE_ENCRYPTED_MEDIA)
</span><span class="cx">     HTML_FLAGS := $(HTML_FLAGS) ENABLE_ENCRYPTED_MEDIA=1
</span><span class="cx"> endif
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -195,6 +195,9 @@
</span><span class="cx">                 077664FD183E6B5C00133B92 /* JSQuickTimePluginReplacement.h in Headers */ = {isa = PBXBuildFile; fileRef = 077664FB183E6B5C00133B92 /* JSQuickTimePluginReplacement.h */; };
</span><span class="cx">                 0779BF0D18453168000B6AE7 /* HTMLMediaElementMediaStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0779BF0A18453168000B6AE7 /* HTMLMediaElementMediaStream.cpp */; };
</span><span class="cx">                 0779BF0E18453168000B6AE7 /* HTMLMediaElementMediaStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 0779BF0B18453168000B6AE7 /* HTMLMediaElementMediaStream.h */; };
</span><ins>+                077AF14018F4AE400001ED61 /* SerializedPlatformRepresentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 077AF13E18F4AE400001ED61 /* SerializedPlatformRepresentation.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                077AF14318F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 077AF14118F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.h */; };
+                077AF14418F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 077AF14218F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.mm */; };
</ins><span class="cx">                 0783228418013ED800999E0C /* MediaStreamAudioSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0783228218013ED700999E0C /* MediaStreamAudioSource.cpp */; };
</span><span class="cx">                 0783228518013ED800999E0C /* MediaStreamAudioSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 0783228318013ED800999E0C /* MediaStreamAudioSource.h */; };
</span><span class="cx">                 07846342145B151A00A58DF1 /* JSTrackEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07846340145B151A00A58DF1 /* JSTrackEvent.cpp */; };
</span><span class="lines">@@ -342,9 +345,12 @@
</span><span class="cx">                 07DC5FD417D3EEE90099F890 /* JSRTCStatsResponseCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07DC5FD317D3EEE90099F890 /* JSRTCStatsResponseCustom.cpp */; };
</span><span class="cx">                 07E116B11489C9A100EC5ACE /* JSTextTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */; };
</span><span class="cx">                 07E117071489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */; };
</span><ins>+                07E9E12E18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h in Headers */ = {isa = PBXBuildFile; fileRef = 07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */; };
+                07E9E13018F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E9E12F18F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp */; };
</ins><span class="cx">                 07ED35A216D6DCC9002248F3 /* InbandTextTrackPrivateAVFIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 07357C7716D2DF0D00ED99E7 /* InbandTextTrackPrivateAVFIOS.mm */; };
</span><span class="cx">                 07ED35A316D6DCE2002248F3 /* InbandTextTrackPrivateAVFIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 07357C7616D2DF0D00ED99E7 /* InbandTextTrackPrivateAVFIOS.h */; };
</span><span class="cx">                 07F944161864D046005D31CB /* MediaSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CDAE8C081746B95700532D78 /* MediaSessionManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                07FBDE2C18FED178001A7CFF /* JSDataCueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */; };
</ins><span class="cx">                 07FE99DC18807A7D00256648 /* HTMLMediaSession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07FE99DA18807A7D00256648 /* HTMLMediaSession.cpp */; };
</span><span class="cx">                 07FE99DD18807A7D00256648 /* HTMLMediaSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 07FE99DB18807A7D00256648 /* HTMLMediaSession.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 07FFDE68181AED420072D409 /* MediaStreamTrackPrivate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07FFDE66181AED420072D409 /* MediaStreamTrackPrivate.cpp */; };
</span><span class="lines">@@ -7079,6 +7085,9 @@
</span><span class="cx">                 0779BF0A18453168000B6AE7 /* HTMLMediaElementMediaStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMediaElementMediaStream.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0779BF0B18453168000B6AE7 /* HTMLMediaElementMediaStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLMediaElementMediaStream.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0779BF0C18453168000B6AE7 /* HTMLMediaElementMediaStream.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLMediaElementMediaStream.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                077AF13E18F4AE400001ED61 /* SerializedPlatformRepresentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SerializedPlatformRepresentation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                077AF14118F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SerializedPlatformRepresentationMac.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                077AF14218F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SerializedPlatformRepresentationMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 0783228218013ED700999E0C /* MediaStreamAudioSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamAudioSource.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0783228318013ED800999E0C /* MediaStreamAudioSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaStreamAudioSource.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07846340145B151A00A58DF1 /* JSTrackEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTrackEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -7165,6 +7174,9 @@
</span><span class="cx">                 07DC5FD317D3EEE90099F890 /* JSRTCStatsResponseCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRTCStatsResponseCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCueCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InbandMetadataTextTrackPrivateAVF.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                07E9E12F18F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InbandMetadataTextTrackPrivateAVF.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDataCueCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 07FE99DA18807A7D00256648 /* HTMLMediaSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMediaSession.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07FE99DB18807A7D00256648 /* HTMLMediaSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLMediaSession.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 07FFDE66181AED420072D409 /* MediaStreamTrackPrivate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaStreamTrackPrivate.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -14309,6 +14321,8 @@
</span><span class="cx">                         children = (
</span><span class="cx">                                 DF9AFD6F13FC31B00015FEB7 /* objc */,
</span><span class="cx">                                 CDE3A85217F5FCE600C5BE20 /* AudioTrackPrivateAVF.h */,
</span><ins>+                                07E9E12D18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h */,
+                                07E9E12F18F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp */,
</ins><span class="cx">                                 07B442D4166C70B000556CAD /* InbandTextTrackPrivateAVF.cpp */,
</span><span class="cx">                                 07B442D5166C70B000556CAD /* InbandTextTrackPrivateAVF.h */,
</span><span class="cx">                                 076F0D0912B8192700C26AA4 /* MediaPlayerPrivateAVFoundation.cpp */,
</span><span class="lines">@@ -16169,6 +16183,8 @@
</span><span class="cx">                                 1AA84F03143BA7BD0051D153 /* ScrollElasticityController.h */,
</span><span class="cx">                                 1AA84F02143BA7BD0051D153 /* ScrollElasticityController.mm */,
</span><span class="cx">                                 9353676A09AED88B00D35CD6 /* ScrollViewMac.mm */,
</span><ins>+                                077AF14118F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.h */,
+                                077AF14218F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.mm */,
</ins><span class="cx">                                 1A4A95510B4EDCFF002D8C3C /* SharedBufferMac.mm */,
</span><span class="cx">                                 93309E9F099EB78C0056E581 /* SharedTimerMac.mm */,
</span><span class="cx">                                 0A4844980CA44CB200B7BD48 /* SoftLinking.h */,
</span><span class="lines">@@ -20528,6 +20544,7 @@
</span><span class="cx">                 BC4EDEF70C08F414007EDD49 /* Custom */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                07FBDE2B18FED178001A7CFF /* JSDataCueCustom.cpp */,
</ins><span class="cx">                                 BC2ED6BB0C6BD2F000920BFF /* JSAttrCustom.cpp */,
</span><span class="cx">                                 FDEAAAEF12B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp */,
</span><span class="cx">                                 FDEAAAF012B02EE400DCF33B /* JSAudioContextCustom.cpp */,
</span><span class="lines">@@ -21073,6 +21090,7 @@
</span><span class="cx">                                 BC2441C30E8B65D00055320F /* ScrollView.cpp */,
</span><span class="cx">                                 BC6D6E2509AF943500F59759 /* ScrollView.h */,
</span><span class="cx">                                 AB7170880B3118080017123E /* SearchPopupMenu.h */,
</span><ins>+                                077AF13E18F4AE400001ED61 /* SerializedPlatformRepresentation.h */,
</ins><span class="cx">                                 1A4A954B0B4EDCCB002D8C3C /* SharedBuffer.cpp */,
</span><span class="cx">                                 1A4A954C0B4EDCCB002D8C3C /* SharedBuffer.h */,
</span><span class="cx">                                 37569E0013AF172C00CDBA8E /* SharedBufferChunkReader.cpp */,
</span><span class="lines">@@ -22954,6 +22972,7 @@
</span><span class="cx">                                 FD31603E12B0267600C1A359 /* AnalyserNode.h in Headers */,
</span><span class="cx">                                 31A795C71888BCB200382F90 /* ANGLEInstancedArrays.h in Headers */,
</span><span class="cx">                                 490707E71219C04300D90E51 /* ANGLEWebKitBridge.h in Headers */,
</span><ins>+                                077AF14018F4AE400001ED61 /* SerializedPlatformRepresentation.h in Headers */,
</ins><span class="cx">                                 49E912AB0EFAC906009D0CAF /* Animation.h in Headers */,
</span><span class="cx">                                 316FE1120E6E1DA700BF6088 /* AnimationBase.h in Headers */,
</span><span class="cx">                                 316FE1140E6E1DA700BF6088 /* AnimationController.h in Headers */,
</span><span class="lines">@@ -23038,6 +23057,7 @@
</span><span class="cx">                                 29A812380FBB9C1D00510293 /* AXObjectCache.h in Headers */,
</span><span class="cx">                                 51741D0F0B07259A00ED442C /* BackForwardClient.h in Headers */,
</span><span class="cx">                                 BCA8C81E11E3D36900812FB7 /* BackForwardController.h in Headers */,
</span><ins>+                                077AF14318F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.h in Headers */,
</ins><span class="cx">                                 BCA8CA6011E4E6D100812FB7 /* BackForwardList.h in Headers */,
</span><span class="cx">                                 BC124EE80C2641CD009E2349 /* BarProp.h in Headers */,
</span><span class="cx">                                 379E61CA126CA5C400B63E8D /* BaseButtonInputType.h in Headers */,
</span><span class="lines">@@ -23950,6 +23970,7 @@
</span><span class="cx">                                 B2C3DA6C0D006CD600EF6F26 /* GlyphBuffer.h in Headers */,
</span><span class="cx">                                 C5D4AA7A116BAFB60069CA93 /* GlyphMetricsMap.h in Headers */,
</span><span class="cx">                                 0873B86B136064EA00A522C2 /* GlyphPage.h in Headers */,
</span><ins>+                                07E9E12E18F5E2760011A3A4 /* InbandMetadataTextTrackPrivateAVF.h in Headers */,
</ins><span class="cx">                                 B2C3DA6E0D006CD600EF6F26 /* GlyphPageTreeNode.h in Headers */,
</span><span class="cx">                                 BC53C5F50DA56B920021EB5D /* Gradient.h in Headers */,
</span><span class="cx">                                 B22279640D00BF220071B782 /* GradientAttributes.h in Headers */,
</span><span class="lines">@@ -27527,6 +27548,7 @@
</span><span class="cx">                                 A8EA79F30A1916DF00A8EF5F /* HTMLUListElement.cpp in Sources */,
</span><span class="cx">                                 E44613AA0CD6331000FADA75 /* HTMLVideoElement.cpp in Sources */,
</span><span class="cx">                                 0B8C56D40F28627F000502E1 /* HTTPHeaderMap.cpp in Sources */,
</span><ins>+                                077AF14418F4B1BB0001ED61 /* SerializedPlatformRepresentationMac.mm in Sources */,
</ins><span class="cx">                                 514C76720CE923A1007EF3CD /* HTTPParsers.cpp in Sources */,
</span><span class="cx">                                 371A67CB11C6C7DB00047B8B /* HyphenationCF.cpp in Sources */,
</span><span class="cx">                                 97E4028F13A696ED00913D67 /* IconController.cpp in Sources */,
</span><span class="lines">@@ -27954,6 +27976,7 @@
</span><span class="cx">                                 CDA98E0416039E1A00FEA3B1 /* JSMediaKeys.cpp in Sources */,
</span><span class="cx">                                 CDA98E0616039E1F00FEA3B1 /* JSMediaKeySession.cpp in Sources */,
</span><span class="cx">                                 BC3C39B60C0D3D8D005F4D7A /* JSMediaList.cpp in Sources */,
</span><ins>+                                07E9E13018F62B370011A3A4 /* InbandMetadataTextTrackPrivateAVF.cpp in Sources */,
</ins><span class="cx">                                 D3A94A46122DC40F00A37BBC /* JSMediaQueryList.cpp in Sources */,
</span><span class="cx">                                 7C5343FC17B74B63004232F0 /* JSMediaQueryListListener.cpp in Sources */,
</span><span class="cx">                                 CD9DE17417AAC74C00EA386D /* JSMediaSource.cpp in Sources */,
</span><span class="lines">@@ -28966,6 +28989,7 @@
</span><span class="cx">                                 FEAD7D8716C339EE00D4670B /* SQLTransactionBackendSync.cpp in Sources */,
</span><span class="cx">                                 97BC6A541505F081001B74AC /* SQLTransactionClient.cpp in Sources */,
</span><span class="cx">                                 97BC6A561505F081001B74AC /* SQLTransactionCoordinator.cpp in Sources */,
</span><ins>+                                07FBDE2C18FED178001A7CFF /* JSDataCueCustom.cpp in Sources */,
</ins><span class="cx">                                 FE36FD1616C7826500F887C1 /* SQLTransactionStateMachine.cpp in Sources */,
</span><span class="cx">                                 97BC6A5A1505F081001B74AC /* SQLTransactionSync.cpp in Sources */,
</span><span class="cx">                                 1A2E6E590CC55213004A2062 /* SQLValue.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSBindingsAllInOnecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -61,6 +61,7 @@
</span><span class="cx"> #include &quot;JSDOMWindowCustom.cpp&quot;
</span><span class="cx"> #include &quot;JSDOMWindowShell.cpp&quot;
</span><span class="cx"> #include &quot;JSDOMWrapper.cpp&quot;
</span><ins>+#include &quot;JSDataCueCustom.cpp&quot;
</ins><span class="cx"> #include &quot;JSDataTransferCustom.cpp&quot;
</span><span class="cx"> #include &quot;JSDedicatedWorkerGlobalScopeCustom.cpp&quot;
</span><span class="cx"> #include &quot;JSDeviceOrientationEventCustom.cpp&quot;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDataCueCustomcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp (0 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -0,0 +1,107 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+
+#if ENABLE(VIDEO_TRACK)
+#include &quot;JSDataCue.h&quot;
+
+using namespace JSC;
+
+namespace WebCore {
+
+#if ENABLE(DATACUE_VALUE)
+JSValue JSDataCue::value(ExecState* exec) const
+{
+    return impl().value(exec);
+}
+
+void JSDataCue::setValue(ExecState* exec, JSValue value)
+{
+    impl().setValue(exec, value);
+}
+#endif
+
+EncodedJSValue JSC_HOST_CALL JSDataCueConstructor::constructJSDataCue(ExecState* exec)
+{
+    JSDataCueConstructor* castedThis = jsCast&lt;JSDataCueConstructor*&gt;(exec-&gt;callee());
+    if (exec-&gt;argumentCount() &lt; 3)
+        return throwVMError(exec, createNotEnoughArgumentsError(exec));
+
+    ExceptionCode ec = 0;
+    double startTime(exec-&gt;argument(0).toNumber(exec));
+    if (UNLIKELY(exec-&gt;hadException()))
+        return JSValue::encode(jsUndefined());
+
+    double endTime(exec-&gt;argument(1).toNumber(exec));
+    if (UNLIKELY(exec-&gt;hadException()))
+        return JSValue::encode(jsUndefined());
+
+    ScriptExecutionContext* context = castedThis-&gt;scriptExecutionContext();
+    if (!context)
+        return throwConstructorDocumentUnavailableError(*exec, &quot;DataCue&quot;);
+
+    String type;
+#if ENABLE(DATACUE_VALUE)
+    if (exec-&gt;argumentCount() &gt; 3) {
+        if (!exec-&gt;argument(3).isString())
+            return throwVMError(exec, createTypeError(exec, &quot;Second argument of the constructor is not of type String&quot;));
+        type = exec-&gt;argument(3).getString(exec);
+    }
+#endif
+
+    JSValue valueArgument = exec-&gt;argument(2);
+    if (valueArgument.isUndefinedOrNull()) {
+        setDOMException(exec, TypeError);
+        return JSValue::encode(JSValue());
+    }
+
+    RefPtr&lt;DataCue&gt; object;
+    if (valueArgument.isCell() &amp;&amp; valueArgument.asCell()-&gt;inherits(std::remove_pointer&lt;JSArrayBuffer*&gt;::type::info())) {
+
+        ArrayBuffer* data(toArrayBuffer(valueArgument));
+        if (UNLIKELY(exec-&gt;hadException()))
+            return JSValue::encode(jsUndefined());
+
+        object = DataCue::create(*context, startTime, endTime, data, type, ec);
+        if (ec) {
+            setDOMException(exec, ec);
+            return JSValue::encode(JSValue());
+        }
+
+        return JSValue::encode(asObject(toJS(exec, castedThis-&gt;globalObject(), object.get())));
+    }
+
+#if !ENABLE(DATACUE_VALUE)
+    return JSValue::encode(jsUndefined());
+#else
+    object = DataCue::create(*context, startTime, endTime, valueArgument, type);
+    return JSValue::encode(asObject(toJS(exec, castedThis-&gt;globalObject(), object.get())));
+#endif
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1380,7 +1380,8 @@
</span><span class="cx">     // whenever ... the media element's readyState is changed back to HAVE_NOTHING.
</span><span class="cx">     if (m_readyState != HAVE_NOTHING &amp;&amp; m_player) {
</span><span class="cx">         currentCues = m_cueTree.allOverlaps(m_cueTree.createInterval(movieTime, movieTime));
</span><del>-        std::sort(currentCues.begin(), currentCues.end(), &amp;compareCueInterval);
</del><ins>+        if (currentCues.size() &gt; 1)
+            std::sort(currentCues.begin(), currentCues.end(), &amp;compareCueInterval);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     CueList previousCues;
</span><span class="lines">@@ -1426,7 +1427,7 @@
</span><span class="cx">     // element. (In the other cases, such as explicit seeks, relevant events get
</span><span class="cx">     // fired as part of the overall process of changing the current playback
</span><span class="cx">     // position.)
</span><del>-    if (m_lastSeekTime &lt;= lastTime)
</del><ins>+    if (!m_paused &amp;&amp; m_lastSeekTime &lt;= lastTime)
</ins><span class="cx">         scheduleTimeupdateEvent(false);
</span><span class="cx"> 
</span><span class="cx">     // Explicitly cache vector sizes, as their content is constant from here.
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackDataCuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/DataCue.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/DataCue.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/DataCue.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2014 Cable Television Labs Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -31,11 +32,13 @@
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="cx"> #include &quot;TextTrack.h&quot;
</span><span class="cx"> #include &quot;TextTrackCueList.h&quot;
</span><ins>+#include &lt;runtime/Protect.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-DataCue::DataCue(ScriptExecutionContext&amp; context, double start, double end, ArrayBuffer* data, ExceptionCode&amp; ec)
</del><ins>+DataCue::DataCue(ScriptExecutionContext&amp; context, double start, double end, ArrayBuffer* data, const String&amp; type, ExceptionCode&amp; ec)
</ins><span class="cx">     : TextTrackCue(context, start, end)
</span><ins>+    , m_type(type)
</ins><span class="cx"> {
</span><span class="cx">     setData(data, ec);
</span><span class="cx"> }
</span><span class="lines">@@ -46,29 +49,65 @@
</span><span class="cx">     m_data = ArrayBuffer::create(data, length);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(DATACUE_VALUE)
+DataCue::DataCue(ScriptExecutionContext&amp; context, double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt; platformValue, const String&amp; type)
+    : TextTrackCue(context, start, end)
+    , m_type(type)
+    , m_platformValue(platformValue)
+{
+}
+
+DataCue::DataCue(ScriptExecutionContext&amp; context, double start, double end, JSC::JSValue value, const String&amp; type)
+    : TextTrackCue(context, start, end)
+    , m_type(type)
+    , m_value(value)
+{
+}
+#endif
+
</ins><span class="cx"> DataCue::~DataCue()
</span><span class="cx"> {
</span><ins>+#if ENABLE(DATACUE_VALUE)
+    if (m_value)
+        JSC::gcUnprotect(m_value);
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;ArrayBuffer&gt; DataCue::data() const
</del><ins>+PassRefPtr&lt;ArrayBuffer&gt; DataCue::data() const
</ins><span class="cx"> {
</span><del>-    ASSERT_WITH_SECURITY_IMPLICATION(m_data);
</del><ins>+#if ENABLE(DATACUE_VALUE)
+    if (m_platformValue)
+        return m_platformValue-&gt;data();
+#endif
+
+    if (!m_data)
+        return nullptr;
+
</ins><span class="cx">     return ArrayBuffer::create(m_data.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DataCue::setData(ArrayBuffer* data, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><del>-    if (!data)
</del><ins>+    if (!data) {
</ins><span class="cx">         ec = TypeError;
</span><del>-    else
-        m_data = ArrayBuffer::create(data);
</del><ins>+        return;
+    }
+
+#if ENABLE(DATACUE_VALUE)
+    m_platformValue = nullptr;
+    m_value = JSC::JSValue();
+#endif
+
+    m_data = ArrayBuffer::create(data);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if !ENABLE(DATACUE_VALUE)
</ins><span class="cx"> String DataCue::text(bool&amp; isNull) const
</span><span class="cx"> {
</span><span class="cx">     isNull = true;
</span><span class="cx">     return String();
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> DataCue* toDataCue(TextTrackCue* cue)
</span><span class="cx"> {
</span><span class="lines">@@ -82,6 +121,66 @@
</span><span class="cx">     return static_cast&lt;const DataCue*&gt;(cue);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool DataCue::isEqual(const TextTrackCue&amp; cue, TextTrackCue::CueMatchRules match) const
+{
+    if (!TextTrackCue::isEqual(cue, match))
+        return false;
+
+    if (cue.cueType() != TextTrackCue::Data)
+        return false;
+
+    const DataCue* dataCue = toDataCue(&amp;cue);
+    RefPtr&lt;ArrayBuffer&gt; otherData = dataCue-&gt;data();
+    if ((otherData &amp;&amp; !m_data) || (!otherData &amp;&amp; m_data))
+        return false;
+    if (m_data &amp;&amp; m_data-&gt;byteLength() != otherData-&gt;byteLength())
+        return false;
+    if (m_data &amp;&amp; m_data-&gt;data() &amp;&amp; memcmp(m_data-&gt;data(), otherData-&gt;data(), m_data-&gt;byteLength()))
+        return false;
+
+#if ENABLE(DATACUE_VALUE)
+    RefPtr&lt;SerializedPlatformRepresentation&gt; otherPlatformValue = dataCue-&gt;platformValue();
+    if ((otherPlatformValue &amp;&amp; !m_platformValue) || (!otherPlatformValue &amp;&amp; m_platformValue))
+        return false;
+    if (m_platformValue &amp;&amp; !m_platformValue-&gt;isEqual(*otherPlatformValue.get()))
+        return false;
+
+    JSC::JSValue otherValue = dataCue-&gt;value(nullptr);
+    if ((otherValue &amp;&amp; !m_value) || (!otherValue &amp;&amp; m_value))
+        return false;
+    if (!JSC::JSValue::strictEqual(nullptr, m_value ? m_value : JSC::JSValue(), otherValue))
+        return false;
+#endif
+
+    return true;
+}
+
+#if ENABLE(DATACUE_VALUE)
+JSC::JSValue DataCue::value(JSC::ExecState* exec) const
+{
+    if (exec &amp;&amp; m_platformValue)
+        return m_platformValue-&gt;deserialize(exec);
+
+    if (m_value)
+        return m_value;
+
+    return JSC::jsNull();
+}
+
+void DataCue::setValue(JSC::ExecState*, JSC::JSValue value)
+{
+    // FIXME: this should use a SerializedScriptValue.
+    if (m_value)
+        JSC::gcUnprotect(m_value);
+    m_value = value;
+    if (m_value)
+        JSC::gcProtect(m_value);
+
+    m_platformValue = nullptr;
+    m_data = nullptr;
+}
+#endif
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackDataCueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/DataCue.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/DataCue.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/DataCue.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2014 Cable Television Labs Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -30,8 +31,13 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;TextTrackCue.h&quot;
</span><span class="cx"> #include &lt;runtime/ArrayBuffer.h&gt;
</span><ins>+#include &lt;runtime/JSCInlines.h&gt;
</ins><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(DATACUE_VALUE)
+#include &quot;SerializedPlatformRepresentation.h&quot;
+#endif
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class ScriptExecutionContext;
</span><span class="lines">@@ -40,7 +46,7 @@
</span><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;DataCue&gt; create(ScriptExecutionContext&amp; context, double start, double end, ArrayBuffer* data, ExceptionCode&amp; ec)
</span><span class="cx">     {
</span><del>-        return adoptRef(new DataCue(context, start, end, data, ec));
</del><ins>+        return adoptRef(new DataCue(context, start, end, data, emptyString(), ec));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     static PassRefPtr&lt;DataCue&gt; create(ScriptExecutionContext&amp; context, double start, double end, const void* data, unsigned length)
</span><span class="lines">@@ -48,19 +54,58 @@
</span><span class="cx">         return adoptRef(new DataCue(context, start, end, data, length));
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    static PassRefPtr&lt;DataCue&gt; create(ScriptExecutionContext&amp; context, double start, double end, ArrayBuffer* data, const String&amp; type, ExceptionCode&amp; ec)
+    {
+        return adoptRef(new DataCue(context, start, end, data, type, ec));
+    }
+
+#if ENABLE(DATACUE_VALUE)
+    static PassRefPtr&lt;DataCue&gt; create(ScriptExecutionContext&amp; context, double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt; platformValue, const String&amp; type)
+    {
+        return adoptRef(new DataCue(context, start, end, platformValue, type));
+    }
+
+    static PassRefPtr&lt;DataCue&gt; create(ScriptExecutionContext&amp; context, double start, double end, JSC::JSValue value, const String&amp; type)
+    {
+        return adoptRef(new DataCue(context, start, end, value, type));
+    }
+#endif
+
</ins><span class="cx">     virtual ~DataCue();
</span><span class="cx">     virtual CueType cueType() const { return Data; }
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ArrayBuffer&gt; data() const;
</del><ins>+    PassRefPtr&lt;ArrayBuffer&gt; data() const;
</ins><span class="cx">     void setData(ArrayBuffer*, ExceptionCode&amp;);
</span><del>-    String text(bool&amp; isNull) const;
</del><span class="cx"> 
</span><ins>+#if ENABLE(DATACUE_VALUE)
+    const PassRefPtr&lt;SerializedPlatformRepresentation&gt; platformValue() const { return m_platformValue; }
+
+    JSC::JSValue value(JSC::ExecState*) const;
+    void setValue(JSC::ExecState*, JSC::JSValue);
+
+    String type() const { return m_type; }
+    void setType(const String&amp; type) { m_type = type; }
+#else
+    String text(bool&amp;) const;
+#endif
+
+    virtual bool isEqual(const TextTrackCue&amp;, CueMatchRules) const override;
+
</ins><span class="cx"> protected:
</span><del>-    DataCue(ScriptExecutionContext&amp;, double start, double end, ArrayBuffer*, ExceptionCode&amp;);
-    DataCue(ScriptExecutionContext&amp;, double start, double end, const void* data, unsigned length);
</del><ins>+    DataCue(ScriptExecutionContext&amp;, double start, double end, ArrayBuffer*, const String&amp;, ExceptionCode&amp;);
+    DataCue(ScriptExecutionContext&amp;, double start, double end, const void*, unsigned);
+#if ENABLE(DATACUE_VALUE)
+    DataCue(ScriptExecutionContext&amp;, double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt;, const String&amp;);
+    DataCue(ScriptExecutionContext&amp;, double start, double end, JSC::JSValue, const String&amp;);
+#endif
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     RefPtr&lt;ArrayBuffer&gt; m_data;
</span><ins>+    String m_type;
+#if ENABLE(DATACUE_VALUE)
+    RefPtr&lt;SerializedPlatformRepresentation&gt; m_platformValue;
+    JSC::JSValue m_value;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> DataCue* toDataCue(TextTrackCue*);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackDataCueidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/DataCue.idl (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/DataCue.idl        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/DataCue.idl        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2014 Cable Television Labs Inc.  All rights reserved.
</span><ins>+ * Copyright (C) 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -24,10 +25,21 @@
</span><span class="cx">  */
</span><span class="cx"> [
</span><span class="cx">     Conditional=VIDEO_TRACK,
</span><del>-    Constructor(double startTime, double endTime, [StrictTypeChecking] ArrayBuffer data),
-    ConstructorCallWith=ScriptExecutionContext,
</del><ins>+    CustomConstructor,
+#if defined(ENABLE_DATACUE_VALUE) &amp;&amp; ENABLE_DATACUE_VALUE
+    CustomConstructor(double startTime, double endTime, any value, optional DOMString type),
+    InterfaceName=WebKitDataCue,
+#else
+    CustomConstructor(double startTime, double endTime, ArrayBuffer data),
+#endif
</ins><span class="cx">     ConstructorRaisesException,
</span><span class="cx"> ] interface DataCue : TextTrackCue {
</span><span class="cx">     [SetterRaisesException] attribute ArrayBuffer data;
</span><ins>+
+#if defined(ENABLE_DATACUE_VALUE) &amp;&amp; ENABLE_DATACUE_VALUE
+    [CustomGetter, CustomSetter] attribute any value;
+    readonly attribute DOMString type;
+#else
</ins><span class="cx">     readonly attribute DOMString? text;
</span><ins>+#endif
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackInbandDataTextTrackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/InbandDataTextTrack.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/InbandDataTextTrack.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/InbandDataTextTrack.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2014 Cable Television Labs Inc.  All rights reserved.
</span><ins>+ * Copyright (C) 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -30,7 +31,9 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;DataCue.h&quot;
</span><span class="cx"> #include &quot;ExceptionCodePlaceholder.h&quot;
</span><ins>+#include &quot;HTMLMediaElement.h&quot;
</ins><span class="cx"> #include &quot;InbandTextTrackPrivate.h&quot;
</span><ins>+#include &quot;Logging.h&quot;
</ins><span class="cx"> #include &lt;runtime/ArrayBuffer.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -55,6 +58,81 @@
</span><span class="cx">     addCue(cue.release(), ASSERT_NO_EXCEPTION);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(DATACUE_VALUE)
+void InbandDataTextTrack::addDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt; prpPlatformValue, const String&amp; type)
+{
+    RefPtr&lt;SerializedPlatformRepresentation&gt; platformValue = prpPlatformValue;
+    if (m_incompleteCueMap.find(platformValue.get()) != m_incompleteCueMap.end())
+        return;
+
+    RefPtr&lt;DataCue&gt; cue = DataCue::create(*scriptExecutionContext(), start, end, platformValue, type);
+    if (hasCue(cue.get(), TextTrackCue::IgnoreDuration)) {
+        LOG(Media, &quot;InbandDataTextTrack::addDataCue ignoring already added cue: start=%.2f, end=%.2f\n&quot;, cue-&gt;startTime(), cue-&gt;endTime());
+        return;
+    }
+
+    if (std::isinf(end) &amp;&amp; mediaElement()) {
+        cue-&gt;setEndTime(mediaElement()-&gt;duration(), IGNORE_EXCEPTION);
+        m_incompleteCueMap.add(platformValue, cue);
+    }
+
+    addCue(cue.release(), ASSERT_NO_EXCEPTION);
+}
+
+void InbandDataTextTrack::updateDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt; prpPlatformValue)
+{
+    RefPtr&lt;SerializedPlatformRepresentation&gt; platformValue = prpPlatformValue;
+    auto iter = m_incompleteCueMap.find(platformValue.get());
+    if (iter == m_incompleteCueMap.end())
+        return;
+
+    RefPtr&lt;DataCue&gt; cue = iter-&gt;value;
+    if (!cue)
+        return;
+
+    cue-&gt;willChange();
+
+    if (std::isinf(end) &amp;&amp; mediaElement())
+        end = mediaElement()-&gt;duration();
+    else
+        m_incompleteCueMap.remove(platformValue.get());
+
+    LOG(Media, &quot;InbandDataTextTrack::updateDataCue: was start=%.2f, end=%.2f, will be start=%.2f, end=%.2f\n&quot;, cue-&gt;startTime(), cue-&gt;endTime(), start, end);
+
+    cue-&gt;setStartTime(start, IGNORE_EXCEPTION);
+    cue-&gt;setEndTime(end, IGNORE_EXCEPTION);
+
+    cue-&gt;didChange();
+}
+
+void InbandDataTextTrack::removeDataCue(InbandTextTrackPrivate*, double, double, PassRefPtr&lt;SerializedPlatformRepresentation&gt; prpPlatformValue)
+{
+    RefPtr&lt;SerializedPlatformRepresentation&gt; platformValue = prpPlatformValue;
+    auto iter = m_incompleteCueMap.find(platformValue.get());
+    if (iter == m_incompleteCueMap.end())
+        return;
+
+    RefPtr&lt;DataCue&gt; cue = iter-&gt;value;
+    if (cue) {
+        LOG(Media, &quot;InbandDataTextTrack::removeDataCue removing cue: start=%.2f, end=%.2f\n&quot;, cue-&gt;startTime(), cue-&gt;endTime());
+        removeCue(cue.get(), IGNORE_EXCEPTION);
+    }
+}
+
+void InbandDataTextTrack::removeCue(TextTrackCue* cue, ExceptionCode&amp; ec)
+{
+    ASSERT(cue-&gt;cueType() == TextTrackCue::Data);
+
+    RefPtr&lt;SerializedPlatformRepresentation&gt; platformValue = toDataCue(cue)-&gt;platformValue().get();
+    auto iter = m_incompleteCueMap.find(platformValue.get());
+    if (iter != m_incompleteCueMap.end())
+        m_incompleteCueMap.remove(platformValue.get());
+
+    InbandTextTrack::removeCue(cue, ec);
+}
+
+#endif
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackInbandDataTextTrackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/InbandDataTextTrack.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/InbandDataTextTrack.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/InbandDataTextTrack.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2014 Cable Television Labs Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2014 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -33,10 +34,14 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class DataCue;
</ins><span class="cx"> class Document;
</span><span class="cx"> class InbandTextTrackPrivate;
</span><del>-class TextTrackCue;
</del><span class="cx"> 
</span><ins>+#if ENABLE(DATACUE_VALUE)
+class SerializedPlatformRepresentation;
+#endif
+
</ins><span class="cx"> class InbandDataTextTrack : public InbandTextTrack {
</span><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;InbandDataTextTrack&gt; create(ScriptExecutionContext*, TextTrackClient*, PassRefPtr&lt;InbandTextTrackPrivate&gt;);
</span><span class="lines">@@ -46,6 +51,15 @@
</span><span class="cx">     InbandDataTextTrack(ScriptExecutionContext*, TextTrackClient*, PassRefPtr&lt;InbandTextTrackPrivate&gt;);
</span><span class="cx"> 
</span><span class="cx">     virtual void addDataCue(InbandTextTrackPrivate*, double start, double end, const void*, unsigned) override;
</span><ins>+
+#if ENABLE(DATACUE_VALUE)
+    virtual void addDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt;, const String&amp;) override;
+    virtual void updateDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt;) override;
+    virtual void removeDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt;) override;
+    virtual void removeCue(TextTrackCue*, ExceptionCode&amp;) override;
+
+    HashMap&lt;RefPtr&lt;SerializedPlatformRepresentation&gt;, RefPtr&lt;DataCue&gt;&gt; m_incompleteCueMap;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackInbandGenericTextTrackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/InbandGenericTextTrack.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/InbandGenericTextTrack.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/InbandGenericTextTrack.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;TextTrackCueGeneric&gt; cue = TextTrackCueGeneric::create(*scriptExecutionContext(), cueData-&gt;startTime(), cueData-&gt;endTime(), cueData-&gt;content());
</span><span class="cx">     updateCueFromCueData(cue.get(), cueData.get());
</span><del>-    if (hasCue(cue.get(), VTTCue::IgnoreDuration)) {
</del><ins>+    if (hasCue(cue.get(), TextTrackCue::IgnoreDuration)) {
</ins><span class="cx">         LOG(Media, &quot;InbandGenericTextTrack::addGenericCue ignoring already added cue: start=%.2f, end=%.2f, content=\&quot;%s\&quot;\n&quot;, cueData-&gt;startTime(), cueData-&gt;endTime(), cueData-&gt;content().utf8().data());
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackInbandTextTrackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/InbandTextTrack.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/InbandTextTrack.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/InbandTextTrack.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -71,6 +71,12 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void addDataCue(InbandTextTrackPrivate*, double, double, const void*, unsigned) override { ASSERT_NOT_REACHED(); }
</span><span class="cx"> 
</span><ins>+#if ENABLE(DATACUE_VALUE)
+    virtual void addDataCue(InbandTextTrackPrivate*, double, double, PassRefPtr&lt;SerializedPlatformRepresentation&gt;, const String&amp;) override { ASSERT_NOT_REACHED(); }
+    virtual void updateDataCue(InbandTextTrackPrivate*, double, double, PassRefPtr&lt;SerializedPlatformRepresentation&gt;) override  { ASSERT_NOT_REACHED(); }
+    virtual void removeDataCue(InbandTextTrackPrivate*, double, double, PassRefPtr&lt;SerializedPlatformRepresentation&gt;) override  { ASSERT_NOT_REACHED(); }
+#endif
+
</ins><span class="cx">     virtual void addGenericCue(InbandTextTrackPrivate*, PassRefPtr&lt;GenericCueData&gt;) override { ASSERT_NOT_REACHED(); }
</span><span class="cx">     virtual void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) override { ASSERT_NOT_REACHED(); }
</span><span class="cx">     virtual void removeGenericCue(InbandTextTrackPrivate*, GenericCueData*) override { ASSERT_NOT_REACHED(); }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackInbandWebVTTTextTrackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/InbandWebVTTTextTrack.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/InbandWebVTTTextTrack.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/InbandWebVTTTextTrack.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx">         cue-&gt;setId(cueData-&gt;id());
</span><span class="cx">         cue-&gt;setCueSettings(cueData-&gt;settings());
</span><span class="cx"> 
</span><del>-        if (hasCue(cue.get(), VTTCue::IgnoreDuration)) {
</del><ins>+        if (hasCue(cue.get(), TextTrackCue::IgnoreDuration)) {
</ins><span class="cx">             LOG(Media, &quot;InbandWebVTTTextTrack::newCuesParsed ignoring already added cue: start=%.2f, end=%.2f, content=\&quot;%s\&quot;\n&quot;, cueData-&gt;startTime(), cueData-&gt;endTime(), cueData-&gt;content().utf8().data());
</span><span class="cx">             return;
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrack.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrack.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/TextTrack.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -483,7 +483,7 @@
</span><span class="cx">     return m_renderedTrackIndex;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool TextTrack::hasCue(VTTCue* cue, VTTCue::CueMatchRules match)
</del><ins>+bool TextTrack::hasCue(TextTrackCue* cue, TextTrackCue::CueMatchRules match)
</ins><span class="cx"> {
</span><span class="cx">     if (cue-&gt;startTime() &lt; 0 || cue-&gt;endTime() &lt; 0)
</span><span class="cx">         return false;
</span><span class="lines">@@ -519,13 +519,10 @@
</span><span class="cx">                     return false;
</span><span class="cx"> 
</span><span class="cx">                 existingCue = m_cues-&gt;item(searchStart - 1);
</span><del>-                if (!cue-&gt;isRenderable())
-                    continue;
-
</del><span class="cx">                 if (!existingCue || cue-&gt;startTime() &gt; existingCue-&gt;startTime())
</span><span class="cx">                     return false;
</span><span class="cx"> 
</span><del>-                if (!toVTTCue(existingCue)-&gt;isEqual(*cue, match))
</del><ins>+                if (!existingCue-&gt;isEqual(*cue, match))
</ins><span class="cx">                     continue;
</span><span class="cx">                 
</span><span class="cx">                 return true;
</span><span class="lines">@@ -534,7 +531,7 @@
</span><span class="cx">         
</span><span class="cx">         size_t index = (searchStart + searchEnd) / 2;
</span><span class="cx">         existingCue = m_cues-&gt;item(index);
</span><del>-        if (cue-&gt;startTime() &lt; existingCue-&gt;startTime() || (match != VTTCue::IgnoreDuration &amp;&amp; cue-&gt;startTime() == existingCue-&gt;startTime() &amp;&amp; cue-&gt;endTime() &gt; existingCue-&gt;endTime()))
</del><ins>+        if (cue-&gt;startTime() &lt; existingCue-&gt;startTime() || (match != TextTrackCue::IgnoreDuration &amp;&amp; cue-&gt;startTime() == existingCue-&gt;startTime() &amp;&amp; cue-&gt;endTime() &gt; existingCue-&gt;endTime()))
</ins><span class="cx">             searchEnd = index;
</span><span class="cx">         else
</span><span class="cx">             searchStart = index + 1;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrack.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrack.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/TextTrack.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx">     void addCue(PassRefPtr&lt;TextTrackCue&gt;, ExceptionCode&amp;);
</span><span class="cx">     virtual void removeCue(TextTrackCue*, ExceptionCode&amp;);
</span><span class="cx"> 
</span><del>-    bool hasCue(VTTCue*, VTTCue::CueMatchRules = VTTCue::MatchAllFields);
</del><ins>+    bool hasCue(TextTrackCue*, TextTrackCue::CueMatchRules = TextTrackCue::MatchAllFields);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO_TRACK) &amp;&amp; ENABLE(WEBVTT_REGIONS)
</span><span class="cx">     VTTRegionList* regions();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackCuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrackCue.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrackCue.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/TextTrackCue.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -202,6 +202,21 @@
</span><span class="cx">     return startTime() &lt; other-&gt;startTime() || (startTime() == other-&gt;startTime() &amp;&amp; endTime() &gt; other-&gt;endTime());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool TextTrackCue::isEqual(const TextTrackCue&amp; cue, TextTrackCue::CueMatchRules match) const
+{
+    if (cueType() != cue.cueType())
+        return false;
+
+    if (match != IgnoreDuration &amp;&amp; endTime() != cue.endTime())
+        return false;
+    if (startTime() != cue.startTime())
+        return false;
+    if (id() != cue.id())
+        return false;
+
+    return true;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackCueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrackCue.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrackCue.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/TextTrackCue.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -91,6 +91,12 @@
</span><span class="cx">     virtual CueType cueType() const = 0;
</span><span class="cx">     virtual bool isRenderable() const { return false; }
</span><span class="cx"> 
</span><ins>+    enum CueMatchRules {
+        MatchAllFields,
+        IgnoreDuration,
+    };
+    virtual bool isEqual(const TextTrackCue&amp;, CueMatchRules) const;
+
</ins><span class="cx">     void willChange();
</span><span class="cx">     virtual void didChange();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackCueGenericcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrackCueGeneric.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrackCueGeneric.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/TextTrackCueGeneric.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -151,8 +151,11 @@
</span><span class="cx">     LOG(Media, &quot;TextTrackCueGeneric::setFontSize - setting cue font size to %li&quot;, lround(size));
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-bool TextTrackCueGeneric::isEqual(const VTTCue&amp; cue, VTTCue::CueMatchRules match) const
</del><ins>+bool TextTrackCueGeneric::isEqual(const TextTrackCue&amp; cue, TextTrackCue::CueMatchRules match) const
</ins><span class="cx"> {
</span><ins>+    if (!TextTrackCue::isEqual(cue, match))
+        return false;
+
</ins><span class="cx">     if (cue.cueType() != TextTrackCue::Generic)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackCueGenerich"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrackCueGeneric.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrackCueGeneric.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/TextTrackCueGeneric.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">     
</span><span class="cx">     virtual void setFontSize(int, const IntSize&amp;, bool important) override;
</span><span class="cx"> 
</span><del>-    virtual bool isEqual(const VTTCue&amp;, CueMatchRules) const override;
</del><ins>+    virtual bool isEqual(const TextTrackCue&amp;, CueMatchRules) const override;
</ins><span class="cx"> 
</span><span class="cx">     virtual TextTrackCue::CueType cueType() const override { return TextTrackCue::Generic; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVTTCuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VTTCue.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VTTCue.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/VTTCue.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1062,29 +1062,27 @@
</span><span class="cx">     return m_displayPosition;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool VTTCue::isEqual(const VTTCue&amp; cue, CueMatchRules match) const
</del><ins>+bool VTTCue::isEqual(const TextTrackCue&amp; cue, TextTrackCue::CueMatchRules match) const
</ins><span class="cx"> {
</span><del>-    if (cueType() != cue.cueType())
</del><ins>+    if (!TextTrackCue::isEqual(cue, match))
</ins><span class="cx">         return false;
</span><del>-    
-    if (match != IgnoreDuration &amp;&amp; endTime() != cue.endTime())
</del><ins>+
+    if (cue.cueType() != WebVTT)
</ins><span class="cx">         return false;
</span><del>-    if (startTime() != cue.startTime())
</del><ins>+
+    const VTTCue* vttCue = toVTTCue(&amp;cue);
+    if (text() != vttCue-&gt;text())
</ins><span class="cx">         return false;
</span><del>-    if (text() != cue.text())
</del><ins>+    if (cueSettings() != vttCue-&gt;cueSettings())
</ins><span class="cx">         return false;
</span><del>-    if (cueSettings() != cue.cueSettings())
</del><ins>+    if (position() != vttCue-&gt;position())
</ins><span class="cx">         return false;
</span><del>-    if (id() != cue.id())
</del><ins>+    if (line() != vttCue-&gt;line())
</ins><span class="cx">         return false;
</span><del>-    if (position() != cue.position())
</del><ins>+    if (size() != vttCue-&gt;size())
</ins><span class="cx">         return false;
</span><del>-    if (line() != cue.line())
</del><ins>+    if (align() != vttCue-&gt;align())
</ins><span class="cx">         return false;
</span><del>-    if (size() != cue.size())
-        return false;
-    if (align() != cue.align())
-        return false;
</del><span class="cx">     
</span><span class="cx">     return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVTTCueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VTTCue.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VTTCue.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/html/track/VTTCue.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -153,11 +153,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void setFontSize(int, const IntSize&amp;, bool important);
</span><span class="cx"> 
</span><del>-    enum CueMatchRules {
-        MatchAllFields,
-        IgnoreDuration,
-    };
-    virtual bool isEqual(const VTTCue&amp;, CueMatchRules) const;
</del><ins>+    virtual bool isEqual(const TextTrackCue&amp;, CueMatchRules) const override;
</ins><span class="cx"> 
</span><span class="cx">     virtual CueType cueType() const { return WebVTT; }
</span><span class="cx">     virtual bool isRenderable() const override final { return true; }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformSerializedPlatformRepresentationh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/SerializedPlatformRepresentation.h (0 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/SerializedPlatformRepresentation.h                                (rev 0)
+++ trunk/Source/WebCore/platform/SerializedPlatformRepresentation.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef SerializedPlatformRepresentation_h
+#define SerializedPlatformRepresentation_h
+
+#if ENABLE(VIDEO) &amp;&amp; ENABLE(DATACUE_VALUE)
+
+#include &lt;runtime/JSCInlines.h&gt;
+#include &lt;wtf/PassRefPtr.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+
+namespace WebCore {
+
+class SerializedPlatformRepresentation : public RefCounted&lt;SerializedPlatformRepresentation&gt; {
+public:
+    virtual ~SerializedPlatformRepresentation() { }
+
+    virtual JSC::JSValue deserialize(JSC::ExecState*) const = 0;
+    virtual PassRefPtr&lt;ArrayBuffer&gt; data() const = 0;
+    virtual bool isEqual(const SerializedPlatformRepresentation&amp;) const = 0;
+
+    enum PlatformType {
+        ObjC,
+    };
+    virtual PlatformType platformType() const = 0;
+
+protected:
+    SerializedPlatformRepresentation() { }
+};
+
+} // namespace WebCore
+
+#endif
+#endif // SerializedPlatformRepresentation_h
+
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsInbandTextTrackPrivateClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -29,6 +29,10 @@
</span><span class="cx"> #include &quot;Color.h&quot;
</span><span class="cx"> #include &quot;TrackPrivateBase.h&quot;
</span><span class="cx"> 
</span><ins>+#if ENABLE(DATACUE_VALUE)
+#include &quot;SerializedPlatformRepresentation.h&quot;
+#endif
+
</ins><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -128,14 +132,18 @@
</span><span class="cx">     Status m_status;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-class WebVTTCueData;
-
</del><span class="cx"> class InbandTextTrackPrivateClient : public TrackPrivateBaseClient {
</span><span class="cx"> public:
</span><span class="cx">     virtual ~InbandTextTrackPrivateClient() { }
</span><span class="cx"> 
</span><span class="cx">     virtual void addDataCue(InbandTextTrackPrivate*, double start, double end, const void*, unsigned) = 0;
</span><span class="cx"> 
</span><ins>+#if ENABLE(DATACUE_VALUE)
+    virtual void addDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt;, const String&amp;) = 0;
+    virtual void updateDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt;) = 0;
+    virtual void removeDataCue(InbandTextTrackPrivate*, double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt;) = 0;
+#endif
+
</ins><span class="cx">     virtual void addGenericCue(InbandTextTrackPrivate*, PassRefPtr&lt;GenericCueData&gt;) = 0;
</span><span class="cx">     virtual void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) = 0;
</span><span class="cx">     virtual void removeGenericCue(InbandTextTrackPrivate*, GenericCueData*) = 0;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationInbandMetadataTextTrackPrivateAVFcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp (0 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -0,0 +1,107 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+
+#if ENABLE(VIDEO) &amp;&amp; ENABLE(DATACUE_VALUE) &amp;&amp; (USE(AVFOUNDATION) || PLATFORM(IOS))
+#include &quot;InbandMetadataTextTrackPrivateAVF.h&quot;
+
+#include &quot;InbandTextTrackPrivateClient.h&quot;
+#include &quot;Logging.h&quot;
+#include &lt;CoreMedia/CoreMedia.h&gt;
+#include &lt;wtf/PassOwnPtr.h&gt;
+#include &lt;wtf/text/CString.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+#include &lt;wtf/unicode/CharacterNames.h&gt;
+
+namespace WebCore {
+
+PassRefPtr&lt;InbandMetadataTextTrackPrivateAVF&gt; InbandMetadataTextTrackPrivateAVF::create(InbandTextTrackPrivate::Kind kind, InbandTextTrackPrivate::CueFormat cueFormat, const AtomicString&amp; id)
+{
+    return adoptRef(new InbandMetadataTextTrackPrivateAVF(kind, cueFormat, id));
+}
+
+InbandMetadataTextTrackPrivateAVF::InbandMetadataTextTrackPrivateAVF(InbandTextTrackPrivate::Kind kind, InbandTextTrackPrivate::CueFormat cueFormat, const AtomicString&amp; id)
+    : InbandTextTrackPrivate(cueFormat)
+    , m_kind(kind)
+    , m_id(id)
+    , m_currentCueStartTime(0)
+{
+}
+
+InbandMetadataTextTrackPrivateAVF::~InbandMetadataTextTrackPrivateAVF()
+{
+}
+
+#if ENABLE(DATACUE_VALUE)
+void InbandMetadataTextTrackPrivateAVF::addDataCue(double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt; prpCueData, const String&amp; type)
+{
+    ASSERT(cueFormat() == Data);
+    if (!client())
+        return;
+
+    RefPtr&lt;SerializedPlatformRepresentation&gt; cueData = prpCueData;
+    m_currentCueStartTime = start;
+    if (end == std::numeric_limits&lt;double&gt;::infinity())
+        m_incompleteCues.append(new IncompleteMetaDataCue(start, cueData));
+    client()-&gt;addDataCue(this, start, end, cueData, type);
+}
+
+void InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes(double time)
+{
+    if (time &gt;= m_currentCueStartTime) {
+        for (size_t i = 0; i &lt; m_incompleteCues.size(); i++) {
+            IncompleteMetaDataCue* partialCue = m_incompleteCues[i];
+
+            LOG(Media, &quot;InbandMetadataTextTrackPrivateAVF::addDataCue(%p) - updating cue: start=%.2f, end=%.2f&quot;, this, partialCue-&gt;startTime(), time);
+            client()-&gt;updateDataCue(this, partialCue-&gt;startTime(), time, partialCue-&gt;cueData());
+        }
+    } else
+        LOG(Media, &quot;InbandMetadataTextTrackPrivateAVF::addDataCue negative length cue(s) ignored: start=%.2f, end=%.2f\n&quot;, m_currentCueStartTime, time);
+
+    m_incompleteCues.resize(0);
+    m_currentCueStartTime = 0;
+}
+#endif
+
+void InbandMetadataTextTrackPrivateAVF::flushPartialCues()
+{
+    if (m_currentCueStartTime &amp;&amp; m_incompleteCues.size())
+        LOG(Media, &quot;InbandMetadataTextTrackPrivateAVF::resetCueValues flushing incomplete data for cues: start=%.2f\n&quot;, m_currentCueStartTime);
+
+    if (client()) {
+        for (size_t i = 0; i &lt; m_incompleteCues.size(); i++) {
+            IncompleteMetaDataCue* partialCue = m_incompleteCues[i];
+            client()-&gt;removeDataCue(this, partialCue-&gt;startTime(), std::numeric_limits&lt;double&gt;::infinity(), partialCue-&gt;cueData());
+        }
+    }
+
+    m_incompleteCues.resize(0);
+    m_currentCueStartTime = 0;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(VIDEO) &amp;&amp; (USE(AVFOUNDATION) || PLATFORM(IOS))
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationInbandMetadataTextTrackPrivateAVFh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.h (0 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -0,0 +1,88 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InbandMetadataTextTrackPrivateAVF_h
+#define InbandMetadataTextTrackPrivateAVF_h
+
+#if ENABLE(VIDEO) &amp;&amp; USE(AVFOUNDATION)
+#include &quot;InbandTextTrackPrivate.h&quot;
+
+namespace WebCore {
+
+#if ENABLE(DATACUE_VALUE)
+class IncompleteMetaDataCue {
+public:
+    IncompleteMetaDataCue(double time, PassRefPtr&lt;SerializedPlatformRepresentation&gt; cueData)
+        : m_cueData(cueData)
+        , m_startTime(time)
+    {
+    }
+    ~IncompleteMetaDataCue() { }
+
+    RefPtr&lt;SerializedPlatformRepresentation&gt; cueData() const { return m_cueData; }
+    double startTime() const { return m_startTime; }
+
+private:
+    RefPtr&lt;SerializedPlatformRepresentation&gt; m_cueData;
+    double m_startTime;
+};
+#endif
+
+class InbandMetadataTextTrackPrivateAVF : public InbandTextTrackPrivate {
+public:
+    static PassRefPtr&lt;InbandMetadataTextTrackPrivateAVF&gt; create(Kind, CueFormat, const AtomicString&amp; id = emptyAtom);
+
+    ~InbandMetadataTextTrackPrivateAVF();
+
+    virtual Kind kind() const override { return m_kind; }
+    virtual AtomicString id() const override { return m_id; }
+    virtual AtomicString inBandMetadataTrackDispatchType() const override { return m_inBandMetadataTrackDispatchType; }
+    void setInBandMetadataTrackDispatchType(const AtomicString&amp; value) { m_inBandMetadataTrackDispatchType = value; }
+
+#if ENABLE(DATACUE_VALUE)
+    void addDataCue(double start, double end, PassRefPtr&lt;SerializedPlatformRepresentation&gt;, const String&amp;);
+    void updatePendingCueEndTimes(double);
+#endif
+
+    void flushPartialCues();
+
+private:
+    InbandMetadataTextTrackPrivateAVF(Kind, CueFormat, const AtomicString&amp;);
+
+    Kind m_kind;
+    AtomicString m_id;
+    AtomicString m_inBandMetadataTrackDispatchType;
+    double m_currentCueStartTime;
+#if ENABLE(DATACUE_VALUE)
+    Vector&lt;IncompleteMetaDataCue*&gt; m_incompleteCues;
+#endif
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(VIDEO) &amp;&amp; USE(AVFOUNDATION)
+
+#endif // InbandMetadataTextTrackPrivateAVF_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationMediaPlayerPrivateAVFoundationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -281,9 +281,9 @@
</span><span class="cx">     if (currentTime() == time)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (currentTrack())
-        currentTrack()-&gt;beginSeeking();
-    
</del><ins>+    if (currentTextTrack())
+        currentTextTrack()-&gt;beginSeeking();
+
</ins><span class="cx">     LOG(Media, &quot;MediaPlayerPrivateAVFoundation::seek(%p) - seeking to %f&quot;, this, time);
</span><span class="cx"> 
</span><span class="cx">     seekToTime(time, negativeTolerance, positiveTolerance);
</span><span class="lines">@@ -659,8 +659,8 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (currentTrack())
-        currentTrack()-&gt;endSeeking();
</del><ins>+    if (currentTextTrack())
+        currentTextTrack()-&gt;endSeeking();
</ins><span class="cx"> 
</span><span class="cx">     updateStates();
</span><span class="cx">     m_player-&gt;timeChanged();
</span><span class="lines">@@ -929,7 +929,7 @@
</span><span class="cx">             trackToEnable = track;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    setCurrentTrack(trackToEnable.get());
</del><ins>+    setCurrentTextTrack(trackToEnable.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundation::trackModeChanged()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationMediaPlayerPrivateAVFoundationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -39,6 +39,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><ins>+class InbandMetadataTextTrackPrivateAVF;
</ins><span class="cx"> class InbandTextTrackPrivateAVF;
</span><span class="cx"> class GenericCueData;
</span><span class="cx"> 
</span><span class="lines">@@ -57,8 +58,8 @@
</span><span class="cx">     virtual void didEnd();
</span><span class="cx">     virtual void contentsNeedsDisplay() { }
</span><span class="cx">     virtual void configureInbandTracks();
</span><del>-    virtual void setCurrentTrack(InbandTextTrackPrivateAVF*) { }
-    virtual InbandTextTrackPrivateAVF* currentTrack() const = 0;
</del><ins>+    virtual void setCurrentTextTrack(InbandTextTrackPrivateAVF*) { }
+    virtual InbandTextTrackPrivateAVF* currentTextTrack() const = 0;
</ins><span class="cx"> #if ENABLE(IOS_AIRPLAY)
</span><span class="cx">     void playbackTargetIsWirelessChanged();
</span><span class="cx"> #endif
</span><span class="lines">@@ -301,7 +302,7 @@
</span><span class="cx">     void processNewAndRemovedTextTracks(const Vector&lt;RefPtr&lt;InbandTextTrackPrivateAVF&gt;&gt;&amp;);
</span><span class="cx">     void clearTextTracks();
</span><span class="cx">     Vector&lt;RefPtr&lt;InbandTextTrackPrivateAVF&gt;&gt; m_textTracks;
</span><del>-    
</del><ins>+
</ins><span class="cx"> private:
</span><span class="cx">     MediaPlayer* m_player;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationcfMediaPlayerPrivateAVFoundationCFcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -110,8 +110,8 @@
</span><span class="cx">     void seekToTime(double, double, double);
</span><span class="cx">     void updateVideoLayerGravity();
</span><span class="cx"> 
</span><del>-    void setCurrentTrack(InbandTextTrackPrivateAVF*);
-    InbandTextTrackPrivateAVF* currentTrack() const { return m_currentTrack; }
</del><ins>+    void setCurrentTextTrack(InbandTextTrackPrivateAVF*);
+    InbandTextTrackPrivateAVF* currentTextTrack() const { return m_currentTextTrack; }
</ins><span class="cx"> 
</span><span class="cx"> #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) &amp;&amp; HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
</span><span class="cx">     static void legibleOutputCallback(void* context, AVCFPlayerItemLegibleOutputRef, CFArrayRef attributedString, CFArrayRef nativeSampleBuffers, CMTime itemTime);
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx">     OwnPtr&lt;LayerClient&gt; m_layerClient;
</span><span class="cx">     COMPtr&lt;IDirect3DDevice9Ex&gt; m_d3dDevice;
</span><span class="cx"> 
</span><del>-    InbandTextTrackPrivateAVF* m_currentTrack;
</del><ins>+    InbandTextTrackPrivateAVF* m_currentTextTrack;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> uintptr_t AVFWrapper::s_nextAVFWrapperObjectID;
</span><span class="lines">@@ -392,16 +392,16 @@
</span><span class="cx">     return (m_videoFrameHasDrawn || (videoLayer(m_avfWrapper) &amp;&amp; AVCFPlayerLayerIsReadyForDisplay(videoLayer(m_avfWrapper))));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaPlayerPrivateAVFoundationCF::setCurrentTrack(InbandTextTrackPrivateAVF* track)
</del><ins>+void MediaPlayerPrivateAVFoundationCF::setCurrentTextTrack(InbandTextTrackPrivateAVF* track)
</ins><span class="cx"> {
</span><span class="cx">     if (m_avfWrapper)
</span><del>-        m_avfWrapper-&gt;setCurrentTrack(track);
</del><ins>+        m_avfWrapper-&gt;setCurrentTextTrack(track);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-InbandTextTrackPrivateAVF* MediaPlayerPrivateAVFoundationCF::currentTrack() const
</del><ins>+InbandTextTrackPrivateAVF* MediaPlayerPrivateAVFoundationCF::currentTextTrack() const
</ins><span class="cx"> {
</span><span class="cx">     if (m_avfWrapper)
</span><del>-        return m_avfWrapper-&gt;currentTrack();
</del><ins>+        return m_avfWrapper-&gt;currentTextTrack();
</ins><span class="cx"> 
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="lines">@@ -1102,14 +1102,14 @@
</span><span class="cx"> 
</span><span class="cx"> #endif // HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
</span><span class="cx"> 
</span><del>-void AVFWrapper::setCurrentTrack(InbandTextTrackPrivateAVF* track)
</del><ins>+void AVFWrapper::setCurrentTextTrack(InbandTextTrackPrivateAVF* track)
</ins><span class="cx"> {
</span><del>-    if (m_currentTrack == track)
</del><ins>+    if (m_currentTextTrack == track)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    LOG(Media, &quot;MediaPlayerPrivateAVFoundationCF::setCurrentTrack(%p) - selecting track %p, language = %s&quot;, this, track, track ? track-&gt;language().string().utf8().data() : &quot;&quot;);
</del><ins>+    LOG(Media, &quot;MediaPlayerPrivateAVFoundationCF::setCurrentTextTrack(%p) - selecting track %p, language = %s&quot;, this, track, track ? track-&gt;language().string().utf8().data() : &quot;&quot;);
</ins><span class="cx">         
</span><del>-    m_currentTrack = track;
</del><ins>+    m_currentTextTrack = track;
</ins><span class="cx"> 
</span><span class="cx">     if (track) {
</span><span class="cx">         if (track-&gt;textTrackCategory() == InbandTextTrackPrivateAVF::LegacyClosedCaption)
</span><span class="lines">@@ -1187,7 +1187,7 @@
</span><span class="cx"> AVFWrapper::AVFWrapper(MediaPlayerPrivateAVFoundationCF* owner)
</span><span class="cx">     : m_owner(owner)
</span><span class="cx">     , m_objectID(s_nextAVFWrapperObjectID++)
</span><del>-    , m_currentTrack(0)
</del><ins>+    , m_currentTextTrack(0)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx">     ASSERT(dispatch_get_main_queue() == dispatch_get_current_queue());
</span><span class="lines">@@ -1621,10 +1621,10 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!self-&gt;m_currentTrack)
</del><ins>+    if (!self-&gt;m_currentTextTrack)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    self-&gt;m_currentTrack-&gt;processCue(legibleOutputData-&gt;m_attributedStrings.get(), legibleOutputData-&gt;m_time);
</del><ins>+    self-&gt;m_currentTextTrack-&gt;processCue(legibleOutputData-&gt;m_attributedStrings.get(), legibleOutputData-&gt;m_time);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void AVFWrapper::legibleOutputCallback(void* context, AVCFPlayerItemLegibleOutputRef legibleOutput, CFArrayRef attributedStrings, CFArrayRef /*nativeSampleBuffers*/, CMTime itemTime)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationcfMediaPlayerPrivateAVFoundationCFh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -108,8 +108,8 @@
</span><span class="cx">     void processMediaSelectionOptions();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    virtual void setCurrentTrack(InbandTextTrackPrivateAVF*) override;
-    virtual InbandTextTrackPrivateAVF* currentTrack() const override;
</del><ins>+    virtual void setCurrentTextTrack(InbandTextTrackPrivateAVF*) override;
+    virtual InbandTextTrackPrivateAVF* currentTextTrack() const override;
</ins><span class="cx"> 
</span><span class="cx"> #if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
</span><span class="cx">     void processLegacyClosedCaptionsTracks();
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class WebCoreAVFResourceLoader;
</span><ins>+class InbandMetadataTextTrackPrivateAVF;
</ins><span class="cx"> class InbandTextTrackPrivateAVFObjC;
</span><span class="cx"> class AudioTrackPrivateAVFObjC;
</span><span class="cx"> class VideoTrackPrivateAVFObjC;
</span><span class="lines">@@ -108,7 +109,7 @@
</span><span class="cx">     void presentationSizeDidChange(FloatSize);
</span><span class="cx">     void durationDidChange(double);
</span><span class="cx">     void rateDidChange(double);
</span><del>-    void metadataDidArrive(RetainPtr&lt;NSArray&gt;);
</del><ins>+    void metadataDidArrive(RetainPtr&lt;NSArray&gt;, double);
</ins><span class="cx"> 
</span><span class="cx"> #if HAVE(AVFOUNDATION_VIDEO_OUTPUT)
</span><span class="cx">     void outputMediaDataWillChange(AVPlayerItemVideoOutput*);
</span><span class="lines">@@ -235,9 +236,13 @@
</span><span class="cx">     AVMediaSelectionGroup* safeMediaSelectionGroupForLegibleMedia();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    virtual void setCurrentTrack(InbandTextTrackPrivateAVF*) override;
-    virtual InbandTextTrackPrivateAVF* currentTrack() const override { return m_currentTrack; }
</del><ins>+#if ENABLE(DATACUE_VALUE)
+    void processMetadataTrack();
+#endif
</ins><span class="cx"> 
</span><ins>+    virtual void setCurrentTextTrack(InbandTextTrackPrivateAVF*) override;
+    virtual InbandTextTrackPrivateAVF* currentTextTrack() const override { return m_currentTextTrack; }
+
</ins><span class="cx"> #if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
</span><span class="cx">     void processLegacyClosedCaptionsTracks();
</span><span class="cx"> #endif
</span><span class="lines">@@ -302,8 +307,12 @@
</span><span class="cx">     Vector&lt;RefPtr&lt;VideoTrackPrivateAVFObjC&gt;&gt; m_videoTracks;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    InbandTextTrackPrivateAVF* m_currentTrack;
</del><ins>+    InbandTextTrackPrivateAVF* m_currentTextTrack;
</ins><span class="cx"> 
</span><ins>+#if ENABLE(DATACUE_VALUE)
+    RefPtr&lt;InbandMetadataTextTrackPrivateAVF&gt; m_metadataTrack;
+#endif
+
</ins><span class="cx">     mutable RetainPtr&lt;NSArray&gt; m_cachedSeekableRanges;
</span><span class="cx">     mutable RetainPtr&lt;NSArray&gt; m_cachedLoadedRanges;
</span><span class="cx">     RetainPtr&lt;NSArray&gt; m_cachedTracks;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationobjcMediaPlayerPrivateAVFoundationObjCmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #import &quot;config.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO) &amp;&amp; USE(AVFOUNDATION)
</span><del>-
</del><span class="cx"> #import &quot;MediaPlayerPrivateAVFoundationObjC.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #import &quot;AVTrackPrivateAVFObjCImpl.h&quot;
</span><span class="lines">@@ -40,6 +39,7 @@
</span><span class="cx"> #import &quot;FrameView.h&quot;
</span><span class="cx"> #import &quot;GraphicsContext.h&quot;
</span><span class="cx"> #import &quot;GraphicsContextCG.h&quot;
</span><ins>+#import &quot;InbandMetadataTextTrackPrivateAVF.h&quot;
</ins><span class="cx"> #import &quot;InbandTextTrackPrivateAVFObjC.h&quot;
</span><span class="cx"> #import &quot;InbandTextTrackPrivateLegacyAVFObjC.h&quot;
</span><span class="cx"> #import &quot;OutOfBandTextTrackPrivateAVF.h&quot;
</span><span class="lines">@@ -47,6 +47,7 @@
</span><span class="cx"> #import &quot;Logging.h&quot;
</span><span class="cx"> #import &quot;PlatformTimeRanges.h&quot;
</span><span class="cx"> #import &quot;SecurityOrigin.h&quot;
</span><ins>+#import &quot;SerializedPlatformRepresentationMac.h&quot;
</ins><span class="cx"> #import &quot;SoftLinking.h&quot;
</span><span class="cx"> #import &quot;TextTrackRepresentation.h&quot;
</span><span class="cx"> #import &quot;UUID.h&quot;
</span><span class="lines">@@ -62,6 +63,7 @@
</span><span class="cx"> #import &lt;runtime/Uint8Array.h&gt;
</span><span class="cx"> #import &lt;wtf/CurrentTime.h&gt;
</span><span class="cx"> #import &lt;wtf/Functional.h&gt;
</span><ins>+#import &lt;wtf/NeverDestroyed.h&gt;
</ins><span class="cx"> #import &lt;wtf/text/CString.h&gt;
</span><span class="cx"> #import &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -98,6 +100,7 @@
</span><span class="cx"> @end
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+typedef AVPlayerItem AVPlayerItemType;
</ins><span class="cx"> typedef AVMetadataItem AVMetadataItemType;
</span><span class="cx"> 
</span><span class="cx"> SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation)
</span><span class="lines">@@ -144,6 +147,7 @@
</span><span class="cx"> SOFT_LINK_POINTER(AVFoundation, AVMediaTypeClosedCaption, NSString *)
</span><span class="cx"> SOFT_LINK_POINTER(AVFoundation, AVMediaTypeVideo, NSString *)
</span><span class="cx"> SOFT_LINK_POINTER(AVFoundation, AVMediaTypeAudio, NSString *)
</span><ins>+SOFT_LINK_POINTER(AVFoundation, AVMediaTypeMetadata, NSString *)
</ins><span class="cx"> SOFT_LINK_POINTER(AVFoundation, AVPlayerItemDidPlayToEndTimeNotification, NSString *)
</span><span class="cx"> SOFT_LINK_POINTER(AVFoundation, AVURLAssetInheritURIQueryComponentFromReferencingURIKey, NSString *)
</span><span class="cx"> SOFT_LINK_POINTER(AVFoundation, AVAssetImageGeneratorApertureModeCleanAperture, NSString *)
</span><span class="lines">@@ -167,6 +171,7 @@
</span><span class="cx"> #define AVMediaTypeClosedCaption getAVMediaTypeClosedCaption()
</span><span class="cx"> #define AVMediaTypeVideo getAVMediaTypeVideo()
</span><span class="cx"> #define AVMediaTypeAudio getAVMediaTypeAudio()
</span><ins>+#define AVMediaTypeMetadata getAVMediaTypeMetadata()
</ins><span class="cx"> #define AVPlayerItemDidPlayToEndTimeNotification getAVPlayerItemDidPlayToEndTimeNotification()
</span><span class="cx"> #define AVURLAssetInheritURIQueryComponentFromReferencingURIKey getAVURLAssetInheritURIQueryComponentFromReferencingURIKey()
</span><span class="cx"> #define AVAssetImageGeneratorApertureModeCleanAperture getAVAssetImageGeneratorApertureModeCleanAperture()
</span><span class="lines">@@ -220,6 +225,20 @@
</span><span class="cx"> #define AVMediaCharacteristicTranscribesSpokenDialogForAccessibility getAVMediaCharacteristicTranscribesSpokenDialogForAccessibility()
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(DATACUE_VALUE)
+SOFT_LINK_POINTER(AVFoundation, AVMetadataKeySpaceQuickTimeUserData, NSString*)
+SOFT_LINK_POINTER(AVFoundation, AVMetadataKeySpaceISOUserData, NSString*)
+SOFT_LINK_POINTER(AVFoundation, AVMetadataKeySpaceQuickTimeMetadata, NSString*)
+SOFT_LINK_POINTER(AVFoundation, AVMetadataKeySpaceiTunes, NSString*)
+SOFT_LINK_POINTER(AVFoundation, AVMetadataKeySpaceID3, NSString*)
+
+#define AVMetadataKeySpaceQuickTimeUserData getAVMetadataKeySpaceQuickTimeUserData()
+#define AVMetadataKeySpaceISOUserData getAVMetadataKeySpaceISOUserData()
+#define AVMetadataKeySpaceQuickTimeMetadata getAVMetadataKeySpaceQuickTimeMetadata()
+#define AVMetadataKeySpaceiTunes getAVMetadataKeySpaceiTunes()
+#define AVMetadataKeySpaceID3 getAVMetadataKeySpaceID3()
+#endif
+
</ins><span class="cx"> #define kCMTimeZero getkCMTimeZero()
</span><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="lines">@@ -343,7 +362,7 @@
</span><span class="cx"> #if HAVE(AVFOUNDATION_LOADER_DELEGATE)
</span><span class="cx">     , m_loaderDelegate(adoptNS([[WebCoreAVFLoaderDelegate alloc] initWithCallback:this]))
</span><span class="cx"> #endif
</span><del>-    , m_currentTrack(0)
</del><ins>+    , m_currentTextTrack(0)
</ins><span class="cx">     , m_cachedDuration(MediaPlayer::invalidTime())
</span><span class="cx">     , m_cachedRate(0)
</span><span class="cx">     , m_pendingStatusChanges(0)
</span><span class="lines">@@ -967,6 +986,9 @@
</span><span class="cx">     // setCurrentTime generates several event callbacks, update afterwards.
</span><span class="cx">     setDelayCallbacks(true);
</span><span class="cx"> 
</span><ins>+    if (m_metadataTrack)
+        m_metadataTrack-&gt;flushPartialCues();
+
</ins><span class="cx">     CMTime cmTime = CMTimeMakeWithSeconds(time, 600);
</span><span class="cx">     CMTime cmBefore = CMTimeMakeWithSeconds(negativeTolerance, 600);
</span><span class="cx">     CMTime cmAfter = CMTimeMakeWithSeconds(positiveTolerance, 600);
</span><span class="lines">@@ -1417,25 +1439,33 @@
</span><span class="cx">     } else {
</span><span class="cx">         bool hasVideo = false;
</span><span class="cx">         bool hasAudio = false;
</span><ins>+        bool hasMetaData = false;
</ins><span class="cx">         for (AVPlayerItemTrack *track in m_cachedTracks.get()) {
</span><span class="cx">             if ([track isEnabled]) {
</span><span class="cx">                 AVAssetTrack *assetTrack = [track assetTrack];
</span><del>-                if ([[assetTrack mediaType] isEqualToString:AVMediaTypeVideo])
</del><ins>+                NSString *mediaType = [assetTrack mediaType];
+                if ([mediaType isEqualToString:AVMediaTypeVideo])
</ins><span class="cx">                     hasVideo = true;
</span><del>-                else if ([[assetTrack mediaType] isEqualToString:AVMediaTypeAudio])
</del><ins>+                else if ([mediaType isEqualToString:AVMediaTypeAudio])
</ins><span class="cx">                     hasAudio = true;
</span><del>-                else if ([[assetTrack mediaType] isEqualToString:AVMediaTypeClosedCaption]) {
</del><ins>+                else if ([mediaType isEqualToString:AVMediaTypeClosedCaption]) {
</ins><span class="cx"> #if !HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
</span><span class="cx">                     hasCaptions = true;
</span><span class="cx"> #endif
</span><span class="cx">                     haveCCTrack = true;
</span><ins>+                } else if ([mediaType isEqualToString:AVMediaTypeMetadata]) {
+                    hasMetaData = true;
</ins><span class="cx">                 }
</span><span class="cx">             }
</span><span class="cx">         }
</span><ins>+
</ins><span class="cx">         setHasVideo(hasVideo);
</span><span class="cx">         setHasAudio(hasAudio);
</span><ins>+#if ENABLE(DATACUE_VALUE)
+        if (hasMetaData)
+            processMetadataTrack();
+#endif
</ins><span class="cx"> 
</span><del>-
</del><span class="cx"> #if ENABLE(VIDEO_TRACK)
</span><span class="cx">         updateAudioTracks();
</span><span class="cx">         updateVideoTracks();
</span><span class="lines">@@ -2017,33 +2047,43 @@
</span><span class="cx">     processNewAndRemovedTextTracks(removedTextTracks);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void MediaPlayerPrivateAVFoundationObjC::processMetadataTrack()
+{
+    if (m_metadataTrack)
+        return;
+
+    m_metadataTrack = InbandMetadataTextTrackPrivateAVF::create(InbandTextTrackPrivate::Metadata, InbandTextTrackPrivate::Data);
+    m_metadataTrack-&gt;setInBandMetadataTrackDispatchType(&quot;com.apple.streaming&quot;);
+    player()-&gt;addTextTrack(m_metadataTrack);
+}
+
</ins><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::processCue(NSArray *attributedStrings, double time)
</span><span class="cx"> {
</span><del>-    if (!m_currentTrack)
</del><ins>+    if (!m_currentTextTrack)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_currentTrack-&gt;processCue(reinterpret_cast&lt;CFArrayRef&gt;(attributedStrings), time);
</del><ins>+    m_currentTextTrack-&gt;processCue(reinterpret_cast&lt;CFArrayRef&gt;(attributedStrings), time);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::flushCues()
</span><span class="cx"> {
</span><span class="cx">     LOG(Media, &quot;MediaPlayerPrivateAVFoundationObjC::flushCues(%p)&quot;, this);
</span><span class="cx"> 
</span><del>-    if (!m_currentTrack)
</del><ins>+    if (!m_currentTextTrack)
</ins><span class="cx">         return;
</span><span class="cx">     
</span><del>-    m_currentTrack-&gt;resetCueValues();
</del><ins>+    m_currentTextTrack-&gt;resetCueValues();
</ins><span class="cx"> }
</span><span class="cx"> #endif // HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
</span><span class="cx"> 
</span><del>-void MediaPlayerPrivateAVFoundationObjC::setCurrentTrack(InbandTextTrackPrivateAVF *track)
</del><ins>+void MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack(InbandTextTrackPrivateAVF *track)
</ins><span class="cx"> {
</span><del>-    if (m_currentTrack == track)
</del><ins>+    if (m_currentTextTrack == track)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    LOG(Media, &quot;MediaPlayerPrivateAVFoundationObjC::setCurrentTrack(%p) - selecting track %p, language = %s&quot;, this, track, track ? track-&gt;language().string().utf8().data() : &quot;&quot;);
</del><ins>+    LOG(Media, &quot;MediaPlayerPrivateAVFoundationObjC::setCurrentTextTrack(%p) - selecting track %p, language = %s&quot;, this, track, track ? track-&gt;language().string().utf8().data() : &quot;&quot;);
</ins><span class="cx">         
</span><del>-    m_currentTrack = track;
</del><ins>+    m_currentTextTrack = track;
</ins><span class="cx"> 
</span><span class="cx">     if (track) {
</span><span class="cx">         if (track-&gt;textTrackCategory() == InbandTextTrackPrivateAVF::LegacyClosedCaption)
</span><span class="lines">@@ -2234,12 +2274,70 @@
</span><span class="cx">     updateStates();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MediaPlayerPrivateAVFoundationObjC::metadataDidArrive(RetainPtr&lt;NSArray&gt; metadata)
</del><ins>+#if ENABLE(DATACUE_VALUE)
+static const AtomicString&amp; metadataType(NSString *avMetadataKeySpace)
</ins><span class="cx"> {
</span><del>-    if (!metadata || [metadata isKindOfClass:[NSNull class]])
</del><ins>+    static NeverDestroyed&lt;const AtomicString&gt; quickTimeUserData(&quot;com.apple.quicktime.udta&quot;, AtomicString::ConstructFromLiteral);
+    static NeverDestroyed&lt;const AtomicString&gt; isoUserData(&quot;org.mp4ra&quot;, AtomicString::ConstructFromLiteral);
+    static NeverDestroyed&lt;const AtomicString&gt; quickTimeMetadata(&quot;com.apple.quicktime.mdta&quot;, AtomicString::ConstructFromLiteral);
+    static NeverDestroyed&lt;const AtomicString&gt; iTunesMetadata(&quot;com.apple.itunes&quot;, AtomicString::ConstructFromLiteral);
+    static NeverDestroyed&lt;const AtomicString&gt; id3Metadata(&quot;org.id3&quot;, AtomicString::ConstructFromLiteral);
+
+    if ([avMetadataKeySpace isEqualToString:AVMetadataKeySpaceQuickTimeUserData])
+        return quickTimeUserData;
+    if ([avMetadataKeySpace isEqualToString:AVMetadataKeySpaceISOUserData])
+        return isoUserData;
+    if ([avMetadataKeySpace isEqualToString:AVMetadataKeySpaceQuickTimeMetadata])
+        return quickTimeMetadata;
+    if ([avMetadataKeySpace isEqualToString:AVMetadataKeySpaceiTunes])
+        return iTunesMetadata;
+    if ([avMetadataKeySpace isEqualToString:AVMetadataKeySpaceID3])
+        return id3Metadata;
+
+    return emptyAtom;
+}
+#endif
+
+void MediaPlayerPrivateAVFoundationObjC::metadataDidArrive(RetainPtr&lt;NSArray&gt; metadata, double mediaTime)
+{
+    m_currentMetaData = metadata &amp;&amp; ![metadata isKindOfClass:[NSNull class]] ? metadata : nil;
+
+    LOG(Media, &quot;MediaPlayerPrivateAVFoundationObjC::metadataDidArrive(%p) - adding %i cues at time %.2f&quot;, this, m_currentMetaData ? [m_currentMetaData.get() count] : 0, mediaTime);
+
+#if ENABLE(DATACUE_VALUE)
+    if (seeking())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_currentMetaData = metadata;
</del><ins>+    if (!metadata || [metadata isKindOfClass:[NSNull class]]) {
+        m_metadataTrack-&gt;updatePendingCueEndTimes(mediaTime);
+        return;
+    }
+
+    if (!m_metadataTrack)
+        processMetadataTrack();
+
+    // Set the duration of all incomplete cues before adding new ones.
+    double earliesStartTime = std::numeric_limits&lt;double&gt;::infinity();
+    for (AVMetadataItemType *item in m_currentMetaData.get()) {
+        double start = CMTimeGetSeconds(item.time);
+        if (start &lt; earliesStartTime)
+            earliesStartTime = start;
+    }
+    m_metadataTrack-&gt;updatePendingCueEndTimes(earliesStartTime);
+
+    for (AVMetadataItemType *item in m_currentMetaData.get()) {
+        double start = CMTimeGetSeconds(item.time);
+        double end = std::numeric_limits&lt;double&gt;::infinity();
+        if (CMTIME_IS_VALID(item.duration))
+            end = start + CMTimeGetSeconds(item.duration);
+
+        AtomicString type = nullAtom;
+        if (item.keySpace)
+            type = metadataType(item.keySpace);
+
+        m_metadataTrack-&gt;addDataCue(start, end, SerializedPlatformRepresentationMac::create(item), type);
+    }
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaPlayerPrivateAVFoundationObjC::tracksDidChange(RetainPtr&lt;NSArray&gt; tracks)
</span><span class="lines">@@ -2408,8 +2506,13 @@
</span><span class="cx">             function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::presentationSizeDidChange, m_callback, FloatSize([newValue sizeValue]));
</span><span class="cx">         else if ([keyPath isEqualToString:@&quot;duration&quot;])
</span><span class="cx">             function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::durationDidChange, m_callback, CMTimeGetSeconds([newValue CMTimeValue]));
</span><del>-        else if ([keyPath isEqualToString:@&quot;timedMetadata&quot;] &amp;&amp; newValue)
-            function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::metadataDidArrive, m_callback, RetainPtr&lt;NSArray&gt;(newValue));
</del><ins>+        else if ([keyPath isEqualToString:@&quot;timedMetadata&quot;] &amp;&amp; newValue) {
+            double now = 0;
+            CMTime itemTime = [(AVPlayerItemType *)object currentTime];
+            if (CMTIME_IS_NUMERIC(itemTime))
+                now = std::max(narrowPrecisionToFloat(CMTimeGetSeconds(itemTime)), 0.0f);
+            function = WTF::bind(&amp;MediaPlayerPrivateAVFoundationObjC::metadataDidArrive, m_callback, RetainPtr&lt;NSArray&gt;(newValue), now);
+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (context == MediaPlayerAVFoundationObservationContextPlayer &amp;&amp; !willChange) {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacSerializedPlatformRepresentationMach"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/mac/SerializedPlatformRepresentationMac.h (0 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/SerializedPlatformRepresentationMac.h                                (rev 0)
+++ trunk/Source/WebCore/platform/mac/SerializedPlatformRepresentationMac.h        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef SerializedPlatformRepresentationMac_h
+#define SerializedPlatformRepresentationMac_h
+
+#if ENABLE(VIDEO_TRACK) &amp;&amp; ENABLE(DATACUE_VALUE)
+
+#include &quot;SerializedPlatformRepresentation.h&quot;
+
+#if USE(FOUNDATION) &amp;&amp; !defined(__OBJC__)
+typedef struct objc_object *id;
+#endif
+
+namespace WebCore {
+
+class SerializedPlatformRepresentationMac : public SerializedPlatformRepresentation {
+public:
+    virtual ~SerializedPlatformRepresentationMac();
+    static PassRef&lt;SerializedPlatformRepresentation&gt; create(id);
+
+    virtual JSC::JSValue deserialize(JSC::ExecState*) const override;
+    virtual PassRefPtr&lt;ArrayBuffer&gt; data() const override;
+
+    virtual bool isEqual(const SerializedPlatformRepresentation&amp;) const override;
+
+    virtual PlatformType platformType() const { return SerializedPlatformRepresentation::ObjC; }
+
+    id nativeValue() const { return m_nativeValue.get(); }
+
+private:
+    SerializedPlatformRepresentationMac(id nativeValue);
+
+    RetainPtr&lt;id&gt; m_nativeValue;
+};
+
+SerializedPlatformRepresentationMac* toSerializedPlatformRepresentationMac(SerializedPlatformRepresentation*);
+const SerializedPlatformRepresentationMac* toSerializedPlatformRepresentationMac(const SerializedPlatformRepresentation*);
+
+} // namespace WebCore
+
+#endif
+#endif // SerializedPlatformRepresentationMac_h
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformmacSerializedPlatformRepresentationMacmm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/mac/SerializedPlatformRepresentationMac.mm (0 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/SerializedPlatformRepresentationMac.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/mac/SerializedPlatformRepresentationMac.mm        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -0,0 +1,241 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+
+#if ENABLE(VIDEO_TRACK) &amp;&amp; ENABLE(DATACUE_VALUE)
+#include &quot;SerializedPlatformRepresentationMac.h&quot;
+
+#import &quot;JSDOMBinding.h&quot;
+#import &quot;SoftLinking.h&quot;
+#import &lt;objc/runtime.h&gt;
+#import &lt;runtime/ArrayBuffer.h&gt;
+#import &lt;runtime/JSArrayBuffer.h&gt;
+#import &lt;AVFoundation/AVFoundation.h&gt;
+#import &lt;CoreMedia/CoreMedia.h&gt;
+#import &lt;Foundation/NSString.h&gt;
+#import &lt;JavaScriptCore/APICast.h&gt;
+#import &lt;JavaScriptCore/JavaScriptCore.h&gt;
+#import &lt;JavaScriptCore/JSContextRef.h&gt;
+#import &lt;JavaScriptCore/JSObjectRef.h&gt;
+#import &lt;wtf/text/Base64.h&gt;
+
+SOFT_LINK_FRAMEWORK_OPTIONAL(CoreMedia)
+SOFT_LINK(CoreMedia, CMTimeCopyAsDictionary, CFDictionaryRef, (CMTime time, CFAllocatorRef allocator), (time, allocator))
+
+typedef AVMetadataItem AVMetadataItemType;
+SOFT_LINK_FRAMEWORK_OPTIONAL(AVFoundation)
+SOFT_LINK_CLASS(AVFoundation, AVMetadataItem)
+#define AVMetadataItem getAVMetadataItemClass()
+
+
+namespace WebCore {
+
+#if JSC_OBJC_API_ENABLED
+static JSValue *jsValueWithDataInContext(NSData *, JSContext *);
+static JSValue *jsValueWithArrayInContext(NSArray *, JSContext *);
+static JSValue *jsValueWithDictionaryInContext(NSDictionary *, JSContext *);
+static JSValue *jsValueWithAVMetadataItemInContext(AVMetadataItemType *, JSContext *);
+static JSValue *jsValueWithValueInContext(id, JSContext *);
+#endif
+
+SerializedPlatformRepresentationMac::SerializedPlatformRepresentationMac(id nativeValue)
+    : SerializedPlatformRepresentation()
+    , m_nativeValue(nativeValue)
+{
+}
+
+SerializedPlatformRepresentationMac::~SerializedPlatformRepresentationMac()
+{
+}
+
+PassRef&lt;SerializedPlatformRepresentation&gt; SerializedPlatformRepresentationMac::create(id nativeValue)
+{
+    return adoptRef(*new SerializedPlatformRepresentationMac(nativeValue));
+}
+
+PassRefPtr&lt;ArrayBuffer&gt; SerializedPlatformRepresentationMac::data() const
+{
+    return nullptr;
+}
+
+JSC::JSValue SerializedPlatformRepresentationMac::deserialize(JSC::ExecState* exec) const
+{
+#if JSC_OBJC_API_ENABLED
+    if (!m_nativeValue)
+        return JSC::jsNull();
+
+    JSGlobalContextRef jsGlobalContextRef = toGlobalRef(exec-&gt;lexicalGlobalObject()-&gt;globalExec());
+    JSContext *jsContext = [JSContext contextWithJSGlobalContextRef:jsGlobalContextRef];
+    JSValue *serializedValue = jsValueWithValueInContext(m_nativeValue.get(), jsContext);
+
+    return toJS(exec, [serializedValue JSValueRef]);
+#else
+    return JSC::jsNull();
+#endif
+}
+
+bool SerializedPlatformRepresentationMac::isEqual(const SerializedPlatformRepresentation&amp; other) const
+{
+    if (other.platformType() != SerializedPlatformRepresentation::ObjC)
+        return false;
+
+    const SerializedPlatformRepresentationMac* otherObjC = toSerializedPlatformRepresentationMac(&amp;other);
+
+    if (!m_nativeValue || !otherObjC-&gt;nativeValue())
+        return false;
+
+    return [m_nativeValue.get() isEqual:otherObjC-&gt;nativeValue()];
+}
+
+SerializedPlatformRepresentationMac* toSerializedPlatformRepresentationMac(SerializedPlatformRepresentation* rep)
+{
+    return const_cast&lt;SerializedPlatformRepresentationMac*&gt;(toSerializedPlatformRepresentationMac(const_cast&lt;const SerializedPlatformRepresentation*&gt;(rep)));
+}
+
+const SerializedPlatformRepresentationMac* toSerializedPlatformRepresentationMac(const SerializedPlatformRepresentation* rep)
+{
+    ASSERT_WITH_SECURITY_IMPLICATION(rep-&gt;platformType() == SerializedPlatformRepresentation::ObjC);
+    return static_cast&lt;const SerializedPlatformRepresentationMac*&gt;(rep);
+}
+
+#if JSC_OBJC_API_ENABLED
+static JSValue *jsValueWithValueInContext(id value, JSContext *context)
+{
+    if ([value isKindOfClass:[NSString class]] || [value isKindOfClass:[NSNumber class]])
+        return [JSValue valueWithObject:value inContext:context];
+
+    if ([value isKindOfClass:[NSLocale class]])
+        return [JSValue valueWithObject:[value localeIdentifier] inContext:context];
+
+    if ([value isKindOfClass:[NSDictionary class]])
+        return jsValueWithDictionaryInContext(value, context);
+
+    if ([value isKindOfClass:[NSArray class]])
+        return jsValueWithArrayInContext(value, context);
+
+    if ([value isKindOfClass:[NSData class]])
+        return jsValueWithDataInContext(value, context);
+    
+    if ([value isKindOfClass:[AVMetadataItem class]])
+        return jsValueWithAVMetadataItemInContext(value, context);
+    
+    return nil;
+}
+
+static JSValue *jsValueWithDataInContext(NSData *data, JSContext *context)
+{
+    RefPtr&lt;ArrayBuffer&gt; dataArray = ArrayBuffer::create([data bytes], [data length]);
+
+    JSC::ExecState* exec = toJS([context JSGlobalContextRef]);
+    JSC::JSValue array = toJS(exec, JSC::jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), dataArray.get());
+
+    return [JSValue valueWithJSValueRef:toRef(exec, array) inContext:context];
+}
+
+static JSValue *jsValueWithArrayInContext(NSArray *array, JSContext *context)
+{
+    JSValueRef exception = 0;
+    JSValue *result = [JSValue valueWithNewArrayInContext:context];
+    JSObjectRef resultObject = JSValueToObject([context JSGlobalContextRef], [result JSValueRef], &amp;exception);
+    if (exception)
+        return [JSValue valueWithUndefinedInContext:context];
+
+    NSUInteger count = [array count];
+    for (NSUInteger i = 0; i &lt; count; ++i) {
+        JSValue *value = jsValueWithValueInContext([array objectAtIndex:i], context);
+        if (!value)
+            continue;
+
+        JSObjectSetPropertyAtIndex([context JSGlobalContextRef], resultObject, (unsigned)i, [value JSValueRef], &amp;exception);
+        if (exception)
+            continue;
+    }
+
+    return result;
+}
+
+static JSValue *jsValueWithDictionaryInContext(NSDictionary *dictionary, JSContext *context)
+{
+    JSValueRef exception = 0;
+    JSValue *result = [JSValue valueWithNewObjectInContext:context];
+    JSObjectRef resultObject = JSValueToObject([context JSGlobalContextRef], [result JSValueRef], &amp;exception);
+    if (exception)
+        return [JSValue valueWithUndefinedInContext:context];
+
+    for (id key in [dictionary keyEnumerator]) {
+        if (![key isKindOfClass:[NSString class]])
+            continue;
+
+        JSValue *value = jsValueWithValueInContext([dictionary objectForKey:key], context);
+        if (!value)
+            continue;
+
+        JSStringRef name = JSStringCreateWithCFString((CFStringRef)key);
+        JSObjectSetProperty([context JSGlobalContextRef], resultObject, name, [value JSValueRef], 0, &amp;exception);
+        if (exception)
+            continue;
+    }
+
+    return result;
+}
+
+static JSValue *jsValueWithAVMetadataItemInContext(AVMetadataItemType *item, JSContext *context)
+{
+    NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
+
+    NSDictionary *extras = [item extraAttributes];
+    for (id key in [extras keyEnumerator]) {
+        if (![key isKindOfClass:[NSString class]])
+            continue;
+        id value = [extras objectForKey:key];
+        NSString *keyString = key;
+
+        if ([key isEqualToString:@&quot;MIMEtype&quot;])
+            keyString = @&quot;type&quot;;
+        else if ([key isEqualToString:@&quot;info&quot;] &amp;&amp; [value isKindOfClass:[NSString class]] &amp;&amp; ![value length]) {
+            // An &quot;info&quot; key is added to all TXXX, GEOB, and APIC items but the value may be empty.
+            continue;
+        }
+
+        [dictionary setObject:value forKey:keyString];
+    }
+
+    if (item.key)
+        [dictionary setObject:item.key forKey:@&quot;key&quot;];
+
+    if (item.locale)
+        [dictionary setObject:item.locale forKey:@&quot;locale&quot;];
+
+    if (item.value)
+        [dictionary setObject:item.value forKey:@&quot;data&quot;];
+
+    return jsValueWithDictionaryInContext(dictionary, context);
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebKit/mac/ChangeLog        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-04-21  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [Mac] implement WebKitDataCue
+        https://bugs.webkit.org/show_bug.cgi?id=131799
+
+        Reviewed by Dean Jackson.
+
+        * Configurations/FeatureDefines.xcconfig: Define ENABLE_DATACUE_VALUE.
+
</ins><span class="cx"> 2014-04-21  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove unused WebKitSystemInterface functions
</span></span></pre></div>
<a id="trunkSourceWebKitmacConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -209,6 +209,7 @@
</span><span class="cx"> ENABLE_USERSELECT_ALL = ENABLE_USERSELECT_ALL;
</span><span class="cx"> ENABLE_VIDEO = ENABLE_VIDEO;
</span><span class="cx"> ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
</span><ins>+ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
</ins><span class="cx"> ENABLE_VIEW_MODE_CSS_MEDIA = ;
</span><span class="cx"> ENABLE_WEBGL = ENABLE_WEBGL;
</span><span class="cx"> ENABLE_WEB_AUDIO = ENABLE_WEB_AUDIO;
</span><span class="lines">@@ -243,4 +244,4 @@
</span><span class="cx"> 
</span><span class="cx"> ENABLE_LLINT_C_LOOP = ;
</span><span class="cx"> 
</span><del>-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));
</del><ins>+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_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));
</ins></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebKit2/ChangeLog        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-04-21  Eric Carlson  &lt;eric.carlson@apple.com&gt;
+
+        [Mac] implement WebKitDataCue
+        https://bugs.webkit.org/show_bug.cgi?id=131799
+
+        Reviewed by Dean Jackson.
+
+        * Configurations/FeatureDefines.xcconfig: Define ENABLE_DATACUE_VALUE.
+
</ins><span class="cx"> 2014-04-21  Beth Dakin  &lt;bdakin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         topContentInset does not play well with fullscreen elements
</span></span></pre></div>
<a id="trunkSourceWebKit2ConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig (167631 => 167632)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig        2014-04-21 22:25:42 UTC (rev 167631)
+++ trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig        2014-04-21 23:18:23 UTC (rev 167632)
</span><span class="lines">@@ -209,6 +209,7 @@
</span><span class="cx"> ENABLE_USERSELECT_ALL = ENABLE_USERSELECT_ALL;
</span><span class="cx"> ENABLE_VIDEO = ENABLE_VIDEO;
</span><span class="cx"> ENABLE_VIDEO_TRACK = ENABLE_VIDEO_TRACK;
</span><ins>+ENABLE_DATACUE_VALUE = ENABLE_DATACUE_VALUE;
</ins><span class="cx"> ENABLE_VIEW_MODE_CSS_MEDIA = ;
</span><span class="cx"> ENABLE_WEBGL = ENABLE_WEBGL;
</span><span class="cx"> ENABLE_WEB_AUDIO = ENABLE_WEB_AUDIO;
</span><span class="lines">@@ -243,4 +244,4 @@
</span><span class="cx"> 
</span><span class="cx"> ENABLE_LLINT_C_LOOP = ;
</span><span class="cx"> 
</span><del>-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));
</del><ins>+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_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));
</ins></span></pre>
</div>
</div>

</body>
</html>