<!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>[170694] 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/170694">170694</a></dd>
<dt>Author</dt> <dd>eric.carlson@apple.com</dd>
<dt>Date</dt> <dd>2014-07-01 20:35:51 -0700 (Tue, 01 Jul 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>WebVTT percentage value can be a float
https://bugs.webkit.org/show_bug.cgi?id=134511
Reviewed by Brent Fulgham.
Source/WebCore:
No new tests, existing tests modified.
* html/track/TextTrackCueGeneric.cpp:
(WebCore::TextTrackCueGeneric::setLine): int -> double.
(WebCore::TextTrackCueGeneric::setPosition): Ditto.
* html/track/TextTrackCueGeneric.h:
* html/track/VTTCue.cpp:
(WebCore::VTTCue::setLine): Ditto.
(WebCore::VTTCue::setPosition): Ditto.
(WebCore::VTTCue::setCueSettings): Support floating point values for line, position, and size.
(WebCore::scanPercentage): Deleted.
* html/track/VTTCue.h:
* html/track/VTTScanner.cpp:
(WebCore::VTTScanner::scanFloat): Support negative values.
* html/track/VTTScanner.h:
* html/track/WebVTTParser.cpp: Include parseFloatPercentageValue in non-WEBVTT_REGIONS builds.
* html/track/WebVTTParser.h:
* platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
(WebCore::InbandTextTrackPrivateAVF::processCueAttributes): Drive by change to take a cue
reference rather than a pointer.
(WebCore::InbandTextTrackPrivateAVF::processAttributedStrings): Ditto.
(WebCore::InbandTextTrackPrivateAVF::removeCompletedCues): Loop over all cues, don't LOG that
we are asking the client to delete the cue because the client will have already deleted
it when status when to GenericCueData::Complete.
* platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h:
LayoutTests:
* media/track/captions-webvtt/tc015-positioning-ltr.vtt:
* media/track/captions-webvtt/tc015-positioning.vtt:
* media/track/captions-webvtt/tc017-line-position.vtt:
* media/track/captions-webvtt/tc018-align-text-line-position.vtt:
* media/track/captions-webvtt/tc019-cue-size.vtt:
* media/track/track-webvtt-tc015-positioning-expected.txt:
* media/track/track-webvtt-tc015-positioning.html:
* media/track/track-webvtt-tc017-line-position-expected.txt:
* media/track/track-webvtt-tc017-line-position.html:
* media/track/track-webvtt-tc018-align-text-line-position-expected.txt:
* media/track/track-webvtt-tc018-align-text-line-position.html:
* media/video-test.js:
(testCues):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsmediatrackcaptionswebvtttc015positioningltrvtt">trunk/LayoutTests/media/track/captions-webvtt/tc015-positioning-ltr.vtt</a></li>
<li><a href="#trunkLayoutTestsmediatrackcaptionswebvtttc015positioningvtt">trunk/LayoutTests/media/track/captions-webvtt/tc015-positioning.vtt</a></li>
<li><a href="#trunkLayoutTestsmediatrackcaptionswebvtttc017linepositionvtt">trunk/LayoutTests/media/track/captions-webvtt/tc017-line-position.vtt</a></li>
<li><a href="#trunkLayoutTestsmediatrackcaptionswebvtttc018aligntextlinepositionvtt">trunk/LayoutTests/media/track/captions-webvtt/tc018-align-text-line-position.vtt</a></li>
<li><a href="#trunkLayoutTestsmediatrackcaptionswebvtttc019cuesizevtt">trunk/LayoutTests/media/track/captions-webvtt/tc019-cue-size.vtt</a></li>
<li><a href="#trunkLayoutTestsmediatracktrackwebvtttc015positioningexpectedtxt">trunk/LayoutTests/media/track/track-webvtt-tc015-positioning-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediatracktrackwebvtttc015positioninghtml">trunk/LayoutTests/media/track/track-webvtt-tc015-positioning.html</a></li>
<li><a href="#trunkLayoutTestsmediatracktrackwebvtttc017linepositionexpectedtxt">trunk/LayoutTests/media/track/track-webvtt-tc017-line-position-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediatracktrackwebvtttc017linepositionhtml">trunk/LayoutTests/media/track/track-webvtt-tc017-line-position.html</a></li>
<li><a href="#trunkLayoutTestsmediatracktrackwebvtttc018aligntextlinepositionexpectedtxt">trunk/LayoutTests/media/track/track-webvtt-tc018-align-text-line-position-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmediatracktrackwebvtttc018aligntextlinepositionhtml">trunk/LayoutTests/media/track/track-webvtt-tc018-align-text-line-position.html</a></li>
<li><a href="#trunkLayoutTestsmediavideotestjs">trunk/LayoutTests/media/video-test.js</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</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="#trunkSourceWebCorehtmltrackVTTScannercpp">trunk/Source/WebCore/html/track/VTTScanner.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackVTTScannerh">trunk/Source/WebCore/html/track/VTTScanner.h</a></li>
<li><a href="#trunkSourceWebCorehtmltrackWebVTTParsercpp">trunk/Source/WebCore/html/track/WebVTTParser.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackWebVTTParserh">trunk/Source/WebCore/html/track/WebVTTParser.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationInbandTextTrackPrivateAVFcpp">trunk/Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsavfoundationInbandTextTrackPrivateAVFh">trunk/Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/ChangeLog        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2014-07-01 Eric Carlson <eric.carlson@apple.com>
+
+ WebVTT percentage value can be a float
+ https://bugs.webkit.org/show_bug.cgi?id=134511
+
+ Reviewed by Brent Fulgham.
+
+ * media/track/captions-webvtt/tc015-positioning-ltr.vtt:
+ * media/track/captions-webvtt/tc015-positioning.vtt:
+ * media/track/captions-webvtt/tc017-line-position.vtt:
+ * media/track/captions-webvtt/tc018-align-text-line-position.vtt:
+ * media/track/captions-webvtt/tc019-cue-size.vtt:
+ * media/track/track-webvtt-tc015-positioning-expected.txt:
+ * media/track/track-webvtt-tc015-positioning.html:
+ * media/track/track-webvtt-tc017-line-position-expected.txt:
+ * media/track/track-webvtt-tc017-line-position.html:
+ * media/track/track-webvtt-tc018-align-text-line-position-expected.txt:
+ * media/track/track-webvtt-tc018-align-text-line-position.html:
+ * media/video-test.js:
+ (testCues):
+
</ins><span class="cx"> 2014-07-01 Simon Fraser <simon.fraser@apple.com>
</span><span class="cx">
</span><span class="cx"> Fix this test; it was waiting about 32 years for the end of an animation.
</span></span></pre></div>
<a id="trunkLayoutTestsmediatrackcaptionswebvtttc015positioningltrvtt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/track/captions-webvtt/tc015-positioning-ltr.vtt (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/captions-webvtt/tc015-positioning-ltr.vtt        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/track/captions-webvtt/tc015-positioning-ltr.vtt        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> تحديد المواقع في أسفل اليمين.
</span><span class="cx">
</span><span class="cx"> 2
</span><del>-00:00:31.000 --> 00:00:45.500 position:50%
</del><ins>+00:00:31.000 --> 00:00:45.500 position:49.20%
</ins><span class="cx"> قلت الدب قادم!!
</span><span class="cx"> تحديد المواقع في منتصف القاع.
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsmediatrackcaptionswebvtttc015positioningvtt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/track/captions-webvtt/tc015-positioning.vtt (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/captions-webvtt/tc015-positioning.vtt        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/track/captions-webvtt/tc015-positioning.vtt        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> Positioning on the left bottom.
</span><span class="cx">
</span><span class="cx"> 2
</span><del>-00:00:31.000 --> 00:00:45.500 position:50%
</del><ins>+00:00:31.000 --> 00:00:45.500 position:49.20%
</ins><span class="cx"> I said Bear is coming!!!!
</span><span class="cx"> Positioning on the bottom middle.
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsmediatrackcaptionswebvtttc017linepositionvtt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/track/captions-webvtt/tc017-line-position.vtt (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/captions-webvtt/tc017-line-position.vtt        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/track/captions-webvtt/tc017-line-position.vtt        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -12,7 +12,7 @@
</span><span class="cx"> Positioning on the top of the viewport, in the middle.
</span><span class="cx">
</span><span class="cx"> 2
</span><del>-00:00:31.000 --> 00:00:45.500 line:50%
</del><ins>+00:00:31.000 --> 00:00:45.500 line:50.2%
</ins><span class="cx"> I said Bear is coming!!!!
</span><span class="cx"> Positioning on the center of the video.
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsmediatrackcaptionswebvtttc018aligntextlinepositionvtt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/track/captions-webvtt/tc018-align-text-line-position.vtt (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/captions-webvtt/tc018-align-text-line-position.vtt        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/track/captions-webvtt/tc018-align-text-line-position.vtt        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -12,9 +12,9 @@
</span><span class="cx"> This is line 0, middle aligned, first character at 50% width.
</span><span class="cx">
</span><span class="cx"> 2
</span><del>-00:00:31.000 --> 00:00:45.500 position:80% line:80%
</del><ins>+00:00:31.000 --> 00:00:45.500 position:80.3% line:80.08%
</ins><span class="cx"> I said Bear is coming!!!!
</span><del>-Middle aligned, middle of cue's character is at 80% width and 80% height.
</del><ins>+Middle aligned, middle of cue's character is at 80.3% width and 80.08% height.
</ins><span class="cx">
</span><span class="cx"> 00:00:46.000 --> 00:01:00.500 line:5 align:end position:30%
</span><span class="cx"> I said Bear is coming!!!!
</span></span></pre></div>
<a id="trunkLayoutTestsmediatrackcaptionswebvtttc019cuesizevtt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/track/captions-webvtt/tc019-cue-size.vtt (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/captions-webvtt/tc019-cue-size.vtt        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/track/captions-webvtt/tc019-cue-size.vtt        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -9,9 +9,9 @@
</span><span class="cx"> even if the text needs less.
</span><span class="cx">
</span><span class="cx"> 2
</span><del>-00:00:31.000 --> 00:01:00.500 size:10%
</del><ins>+00:00:31.000 --> 00:01:00.500 size:10.6%
</ins><span class="cx"> I said Bear is coming!!!!
</span><del>-Box for the cue is 10% of the video viewport width, which will mean that automatic line wrapping will happen.
</del><ins>+Box for the cue is 10.6% of the video viewport width, which will mean that automatic line wrapping will happen.
</ins><span class="cx">
</span><span class="cx"> 3
</span><span class="cx"> 00:01:01.000 --> 00:02:00.500 size:0%
</span></span></pre></div>
<a id="trunkLayoutTestsmediatracktrackwebvtttc015positioningexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/track/track-webvtt-tc015-positioning-expected.txt (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/track-webvtt-tc015-positioning-expected.txt        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/track/track-webvtt-tc015-positioning-expected.txt        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -5,14 +5,14 @@
</span><span class="cx"> *** Testing text track 0
</span><span class="cx"> EXPECTED (cues.length == '4') OK
</span><span class="cx"> EXPECTED (cues[0].position == '0') OK
</span><del>-EXPECTED (cues[1].position == '50') OK
</del><ins>+EXPECTED (cues[1].position == '49.2') OK
</ins><span class="cx"> EXPECTED (cues[2].position == '50') OK
</span><span class="cx"> EXPECTED (cues[3].position == '100') OK
</span><span class="cx">
</span><span class="cx"> *** Testing text track 1
</span><span class="cx"> EXPECTED (cues.length == '4') OK
</span><span class="cx"> EXPECTED (cues[0].position == '0') OK
</span><del>-EXPECTED (cues[1].position == '50') OK
</del><ins>+EXPECTED (cues[1].position == '49.2') OK
</ins><span class="cx"> EXPECTED (cues[2].position == '50') OK
</span><span class="cx"> EXPECTED (cues[3].position == '100') OK
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsmediatracktrackwebvtttc015positioninghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/track/track-webvtt-tc015-positioning.html (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/track-webvtt-tc015-positioning.html        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/track/track-webvtt-tc015-positioning.html        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -29,7 +29,8 @@
</span><span class="cx"> [
</span><span class="cx"> {
</span><span class="cx"> property : "position",
</span><del>- values : [0, 50, 50, 100],
</del><ins>+ values : [0, 49.2, 50, 100],
+ precision : 2,
</ins><span class="cx"> },
</span><span class="cx"> ],
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkLayoutTestsmediatracktrackwebvtttc017linepositionexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/track/track-webvtt-tc017-line-position-expected.txt (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/track-webvtt-tc017-line-position-expected.txt        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/track/track-webvtt-tc017-line-position-expected.txt        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx"> EXPECTED (cues[0].snapToLines == 'false') OK
</span><span class="cx"> EXPECTED (cues[1].line == '0') OK
</span><span class="cx"> EXPECTED (cues[1].snapToLines == 'true') OK
</span><del>-EXPECTED (cues[2].line == '50') OK
</del><ins>+EXPECTED (cues[2].line == '50.2') OK
</ins><span class="cx"> EXPECTED (cues[2].snapToLines == 'false') OK
</span><span class="cx"> EXPECTED (cues[3].line == '5') OK
</span><span class="cx"> EXPECTED (cues[3].snapToLines == 'true') OK
</span></span></pre></div>
<a id="trunkLayoutTestsmediatracktrackwebvtttc017linepositionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/track/track-webvtt-tc017-line-position.html (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/track-webvtt-tc017-line-position.html        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/track/track-webvtt-tc017-line-position.html        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -28,7 +28,8 @@
</span><span class="cx"> [
</span><span class="cx"> {
</span><span class="cx"> property : "line",
</span><del>- values : [0, 0, 50, 5, 100, -1, 500],
</del><ins>+ values : [0, 0, 50.2, 5, 100, -1, 500],
+ precision : 2,
</ins><span class="cx"> },
</span><span class="cx"> {
</span><span class="cx"> property : "snapToLines",
</span></span></pre></div>
<a id="trunkLayoutTestsmediatracktrackwebvtttc018aligntextlinepositionexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/track/track-webvtt-tc018-align-text-line-position-expected.txt (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/track-webvtt-tc018-align-text-line-position-expected.txt        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/track/track-webvtt-tc018-align-text-line-position-expected.txt        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -13,8 +13,8 @@
</span><span class="cx"> EXPECTED (cues[1].line == '0') OK
</span><span class="cx"> EXPECTED (cues[1].snapToLines == 'true') OK
</span><span class="cx"> EXPECTED (cues[2].align == 'middle') OK
</span><del>-EXPECTED (cues[2].position == '80') OK
-EXPECTED (cues[2].line == '80') OK
</del><ins>+EXPECTED (cues[2].position == '80.3') OK
+EXPECTED (cues[2].line == '80.08') OK
</ins><span class="cx"> EXPECTED (cues[2].snapToLines == 'false') OK
</span><span class="cx"> EXPECTED (cues[3].align == 'end') OK
</span><span class="cx"> EXPECTED (cues[3].position == '30') OK
</span></span></pre></div>
<a id="trunkLayoutTestsmediatracktrackwebvtttc018aligntextlinepositionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/track/track-webvtt-tc018-align-text-line-position.html (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/track/track-webvtt-tc018-align-text-line-position.html        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/track/track-webvtt-tc018-align-text-line-position.html        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -33,11 +33,13 @@
</span><span class="cx"> },
</span><span class="cx"> {
</span><span class="cx"> property : "position",
</span><del>- values : [10, 50, 80, 30, 60],
</del><ins>+ values : [10, 50, 80.3, 30, 60],
+ precision : 2,
</ins><span class="cx"> },
</span><span class="cx"> {
</span><span class="cx"> property : "line",
</span><del>- values : [0, 0, 80, 5, -3],
</del><ins>+ values : [0, 0, 80.08, 5, -3],
+ precision : 2,
</ins><span class="cx"> },
</span><span class="cx"> {
</span><span class="cx"> property : "snapToLines",
</span></span></pre></div>
<a id="trunkLayoutTestsmediavideotestjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/media/video-test.js (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/media/video-test.js        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/LayoutTests/media/video-test.js        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -319,7 +319,11 @@
</span><span class="cx"> for (var i = 0; i < cues.length; i++) {
</span><span class="cx"> for (j = 0; j < expected.tests.length; j++) {
</span><span class="cx"> var test = expected.tests[j];
</span><del>- testExpected("cues[" + i + "]." + test.property, test.values[i]);
</del><ins>+ var propertyString = "cues[" + i + "]." + test.property;
+ var propertyValue = eval(propertyString);
+ if (test["precision"])
+ propertyValue = propertyValue.toFixed(test["precision"]);
+ reportExpected(test.values[i] == propertyValue, propertyString, "==", test.values[i], propertyValue)
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/Source/WebCore/ChangeLog        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -1,3 +1,40 @@
</span><ins>+2014-07-01 Eric Carlson <eric.carlson@apple.com>
+
+ WebVTT percentage value can be a float
+ https://bugs.webkit.org/show_bug.cgi?id=134511
+
+ Reviewed by Brent Fulgham.
+
+ No new tests, existing tests modified.
+
+ * html/track/TextTrackCueGeneric.cpp:
+ (WebCore::TextTrackCueGeneric::setLine): int -> double.
+ (WebCore::TextTrackCueGeneric::setPosition): Ditto.
+ * html/track/TextTrackCueGeneric.h:
+
+ * html/track/VTTCue.cpp:
+ (WebCore::VTTCue::setLine): Ditto.
+ (WebCore::VTTCue::setPosition): Ditto.
+ (WebCore::VTTCue::setCueSettings): Support floating point values for line, position, and size.
+ (WebCore::scanPercentage): Deleted.
+ * html/track/VTTCue.h:
+
+ * html/track/VTTScanner.cpp:
+ (WebCore::VTTScanner::scanFloat): Support negative values.
+ * html/track/VTTScanner.h:
+
+ * html/track/WebVTTParser.cpp: Include parseFloatPercentageValue in non-WEBVTT_REGIONS builds.
+ * html/track/WebVTTParser.h:
+
+ * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
+ (WebCore::InbandTextTrackPrivateAVF::processCueAttributes): Drive by change to take a cue
+ reference rather than a pointer.
+ (WebCore::InbandTextTrackPrivateAVF::processAttributedStrings): Ditto.
+ (WebCore::InbandTextTrackPrivateAVF::removeCompletedCues): Loop over all cues, don't LOG that
+ we are asking the client to delete the cue because the client will have already deleted
+ it when status when to GenericCueData::Complete.
+ * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h:
+
</ins><span class="cx"> 2014-07-01 Simon Fraser <simon.fraser@apple.com>
</span><span class="cx">
</span><span class="cx"> Improve behavior of position:sticky on zoomed pages
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackCueGenericcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrackCueGeneric.cpp (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrackCueGeneric.cpp        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/Source/WebCore/html/track/TextTrackCueGeneric.cpp        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -121,13 +121,13 @@
</span><span class="cx"> return TextTrackCueGenericBoxElement::create(ownerDocument(), *this);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void TextTrackCueGeneric::setLine(int line, ExceptionCode& ec)
</del><ins>+void TextTrackCueGeneric::setLine(double line, ExceptionCode& ec)
</ins><span class="cx"> {
</span><span class="cx"> m_defaultPosition = false;
</span><span class="cx"> VTTCue::setLine(line, ec);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void TextTrackCueGeneric::setPosition(int position, ExceptionCode& ec)
</del><ins>+void TextTrackCueGeneric::setPosition(double position, ExceptionCode& ec)
</ins><span class="cx"> {
</span><span class="cx"> m_defaultPosition = false;
</span><span class="cx"> VTTCue::setPosition(position, ec);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackCueGenerich"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrackCueGeneric.h (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrackCueGeneric.h        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/Source/WebCore/html/track/TextTrackCueGeneric.h        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -47,8 +47,8 @@
</span><span class="cx">
</span><span class="cx"> virtual PassRefPtr<VTTCueBox> createDisplayTree() override;
</span><span class="cx">
</span><del>- virtual void setLine(int, ExceptionCode&) override;
- virtual void setPosition(int, ExceptionCode&) override;
</del><ins>+ virtual void setLine(double, ExceptionCode&) override;
+ virtual void setPosition(double, ExceptionCode&) override;
</ins><span class="cx">
</span><span class="cx"> bool useDefaultPosition() const { return m_defaultPosition; }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVTTCuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VTTCue.cpp (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VTTCue.cpp        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/Source/WebCore/html/track/VTTCue.cpp        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -340,7 +340,7 @@
</span><span class="cx"> didChange();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void VTTCue::setLine(int position, ExceptionCode& ec)
</del><ins>+void VTTCue::setLine(double position, ExceptionCode& ec)
</ins><span class="cx"> {
</span><span class="cx"> // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-line
</span><span class="cx"> // On setting, if the text track cue snap-to-lines flag is not set, and the new
</span><span class="lines">@@ -360,7 +360,7 @@
</span><span class="cx"> didChange();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void VTTCue::setPosition(int position, ExceptionCode& ec)
</del><ins>+void VTTCue::setPosition(double position, ExceptionCode& ec)
</ins><span class="cx"> {
</span><span class="cx"> // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-position
</span><span class="cx"> // On setting, if the new value is negative or greater than 100, then throw an IndexSizeError exception.
</span><span class="lines">@@ -891,33 +891,6 @@
</span><span class="cx"> return None;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-// Used for 'position' and 'size'.
-static bool scanPercentage(VTTScanner& input, const VTTScanner::Run& valueRun, int& number)
-{
- // 1. If value contains any characters other than U+0025 PERCENT SIGN
- // characters (%) and characters in the range U+0030 DIGIT ZERO (0) to
- // U+0039 DIGIT NINE (9), then jump to the step labeled next setting.
- // 2. If value does not contain at least one character in the range U+0030
- // DIGIT ZERO (0) to U+0039 DIGIT NINE (9), then jump to the step
- // labeled next setting.
- if (!input.scanDigits(number))
- return false;
-
- // 3. If any character in value other than the last character is a U+0025
- // PERCENT SIGN character (%), then jump to the step labeled next
- // setting.
- // 4. If the last character in value is not a U+0025 PERCENT SIGN character
- // (%), then jump to the step labeled next setting.
- if (!input.scan('%') || !input.isAt(valueRun.end()))
- return false;
-
- // 5. Ignoring the trailing percent sign, interpret value as an integer,
- // and let number be that number.
- // 6. If number is not in the range 0 ≤ number ≤ 100, then jump to the step
- // labeled next setting.
- return number >= 0 && number <= 100;
-}
-
</del><span class="cx"> void VTTCue::setCueSettings(const String& inputString)
</span><span class="cx"> {
</span><span class="cx"> if (inputString.isEmpty())
</span><span class="lines">@@ -958,73 +931,81 @@
</span><span class="cx"> // direction be vertical growing right.
</span><span class="cx"> else if (input.scanRun(valueRun, verticalGrowingRightKeyword()))
</span><span class="cx"> m_writingDirection = VerticalGrowingRight;
</span><ins>+
+ else
+ LOG(Media, "VTTCue::setCueSettings, invalid Vertical");
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> case Line: {
</span><del>- // 1-2 - Collect chars that are either '-', '%', or a digit.
- // 1. If value contains any characters other than U+002D HYPHEN-MINUS characters (-), U+0025 PERCENT SIGN
- // characters (%), and characters in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9), then jump
- // to the step labeled next setting.
- bool isNegative = input.scan('-');
- int linePosition;
- unsigned numDigits = input.scanDigits(linePosition);
- bool isPercentage = input.scan('%');
</del><ins>+ bool isValid = false;
+ do {
+ // 1-2 - Collect chars that are either '-', '%', or a digit.
+ // 1. If value contains any characters other than U+002D HYPHEN-MINUS characters (-), U+0025 PERCENT SIGN
+ // characters (%), and characters in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9), then jump
+ // to the step labeled next setting.
+ float linePosition;
+ bool isNegative;
+ if (!input.scanFloat(linePosition, &isNegative))
+ break;
</ins><span class="cx">
</span><del>- if (!input.isAt(valueRun.end()))
- break;
</del><ins>+ bool isPercentage = input.scan('%');
+ if (!input.isAt(valueRun.end()))
+ break;
</ins><span class="cx">
</span><del>- // 2. If value does not contain at least one character in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT
- // NINE (9), then jump to the step labeled next setting.
- // 3. If any character in value other than the first character is a U+002D HYPHEN-MINUS character (-), then
- // jump to the step labeled next setting.
- // 4. If any character in value other than the last character is a U+0025 PERCENT SIGN character (%), then
- // jump to the step labeled next setting.
- // 5. If the first character in value is a U+002D HYPHEN-MINUS character (-) and the last character in value is a
- // U+0025 PERCENT SIGN character (%), then jump to the step labeled next setting.
- if (!numDigits || (isPercentage && isNegative))
- break;
-
- // 6. Ignoring the trailing percent sign, if any, interpret value as a (potentially signed) integer, and
- // let number be that number.
- // 7. If the last character in value is a U+0025 PERCENT SIGN character (%), but number is not in the range
- // 0 ≤ number ≤ 100, then jump to the step labeled next setting.
- // 8. Let cue's text track cue line position be number.
- // 9. If the last character in value is a U+0025 PERCENT SIGN character (%), then let cue's text track cue
- // snap-to-lines flag be false. Otherwise, let it be true.
- if (isPercentage) {
- if (linePosition < 0 || linePosition > 100)
</del><ins>+ // 2. If value does not contain at least one character in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT
+ // NINE (9), then jump to the step labeled next setting.
+ // 3. If any character in value other than the first character is a U+002D HYPHEN-MINUS character (-), then
+ // jump to the step labeled next setting.
+ // 4. If any character in value other than the last character is a U+0025 PERCENT SIGN character (%), then
+ // jump to the step labeled next setting.
+ // 5. If the first character in value is a U+002D HYPHEN-MINUS character (-) and the last character in value is a
+ // U+0025 PERCENT SIGN character (%), then jump to the step labeled next setting.
+ if (isPercentage && isNegative)
</ins><span class="cx"> break;
</span><span class="cx">
</span><del>- // 10 - If '%' then set snap-to-lines flag to false.
- m_snapToLines = false;
- } else {
- if (isNegative)
- linePosition = -linePosition;
</del><ins>+ // 6. Ignoring the trailing percent sign, if any, interpret value as a (potentially signed) integer, and
+ // let number be that number.
+ // 7. If the last character in value is a U+0025 PERCENT SIGN character (%), but number is not in the range
+ // 0 ≤ number ≤ 100, then jump to the step labeled next setting.
+ // 8. Let cue's text track cue line position be number.
+ // 9. If the last character in value is a U+0025 PERCENT SIGN character (%), then let cue's text track cue
+ // snap-to-lines flag be false. Otherwise, let it be true.
+ if (isPercentage) {
+ if (linePosition < 0 || linePosition > 100)
+ break;
</ins><span class="cx">
</span><del>- m_snapToLines = true;
- }
</del><ins>+ // 10 - If '%' then set snap-to-lines flag to false.
+ m_snapToLines = false;
+ } else {
+ if (linePosition - static_cast<int>(linePosition))
+ break;
</ins><span class="cx">
</span><del>- m_linePosition = linePosition;
</del><ins>+ m_snapToLines = true;
+ }
+
+ m_linePosition = linePosition;
+ isValid = true;
+ } while (0);
+
+ if (!isValid)
+ LOG(Media, "VTTCue::setCueSettings, invalid Line");
+
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> case Position: {
</span><del>- int number;
- // Steps 1 - 6.
- if (!scanPercentage(input, valueRun, number))
- break;
-
- // 7. Let cue's text track cue text position be number.
- m_textPosition = number;
</del><ins>+ float position;
+ if (WebVTTParser::parseFloatPercentageValue(input, position) && input.isAt(valueRun.end()))
+ m_textPosition = position;
+ else
+ LOG(Media, "VTTCue::setCueSettings, invalid Position");
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> case Size: {
</span><del>- int number;
- // Steps 1 - 6.
- if (!scanPercentage(input, valueRun, number))
- break;
-
- // 7. Let cue's text track cue size be number.
- m_cueSize = number;
</del><ins>+ float cueSize;
+ if (WebVTTParser::parseFloatPercentageValue(input, cueSize) && input.isAt(valueRun.end()))
+ m_cueSize = cueSize;
+ else
+ LOG(Media, "VTTCue::setCueSettings, invalid Size");
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> case Align: {
</span><span class="lines">@@ -1047,6 +1028,10 @@
</span><span class="cx"> // 5. If value is a case-sensitive match for the string "right", then let cue's text track cue alignment be right alignment.
</span><span class="cx"> else if (input.scanRun(valueRun, rightKeyword()))
</span><span class="cx"> m_cueAlignment = Right;
</span><ins>+
+ else
+ LOG(Media, "VTTCue::setCueSettings, invalid Align");
+
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> #if ENABLE(WEBVTT_REGIONS)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVTTCueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VTTCue.h (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VTTCue.h        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/Source/WebCore/html/track/VTTCue.h        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -82,11 +82,11 @@
</span><span class="cx"> bool snapToLines() const { return m_snapToLines; }
</span><span class="cx"> void setSnapToLines(bool);
</span><span class="cx">
</span><del>- int line() const { return m_linePosition; }
- virtual void setLine(int, ExceptionCode&);
</del><ins>+ double line() const { return m_linePosition; }
+ virtual void setLine(double, ExceptionCode&);
</ins><span class="cx">
</span><del>- int position() const { return m_textPosition; }
- virtual void setPosition(int, ExceptionCode&);
</del><ins>+ double position() const { return m_textPosition; }
+ virtual void setPosition(double, ExceptionCode&);
</ins><span class="cx">
</span><span class="cx"> int size() const { return m_cueSize; }
</span><span class="cx"> virtual void setSize(int, ExceptionCode&);
</span><span class="lines">@@ -190,9 +190,9 @@
</span><span class="cx">
</span><span class="cx"> String m_content;
</span><span class="cx"> String m_settings;
</span><del>- int m_linePosition;
- int m_computedLinePosition;
- int m_textPosition;
</del><ins>+ double m_linePosition;
+ double m_computedLinePosition;
+ double m_textPosition;
</ins><span class="cx"> int m_cueSize;
</span><span class="cx">
</span><span class="cx"> WritingDirection m_writingDirection;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVTTScannercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VTTScanner.cpp (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VTTScanner.cpp        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/Source/WebCore/html/track/VTTScanner.cpp        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -140,9 +140,11 @@
</span><span class="cx"> return numDigits;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool VTTScanner::scanFloat(float& number)
</del><ins>+bool VTTScanner::scanFloat(float& number, bool* isNegative)
</ins><span class="cx"> {
</span><ins>+ bool negative = scan('-');
</ins><span class="cx"> Run integerRun = collectWhile<isASCIIDigit>();
</span><ins>+
</ins><span class="cx"> seekTo(integerRun.end());
</span><span class="cx"> Run decimalRun(position(), position(), m_is8Bit);
</span><span class="cx"> if (scan('.')) {
</span><span class="lines">@@ -166,6 +168,12 @@
</span><span class="cx">
</span><span class="cx"> if (!validNumber)
</span><span class="cx"> number = std::numeric_limits<float>::max();
</span><ins>+ else if (negative)
+ number = -number;
+
+ if (isNegative)
+ *isNegative = negative;
+
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackVTTScannerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/VTTScanner.h (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/VTTScanner.h        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/Source/WebCore/html/track/VTTScanner.h        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -127,7 +127,7 @@
</span><span class="cx"> unsigned scanDigits(int& number);
</span><span class="cx">
</span><span class="cx"> // Scan a floating point value on one of the forms: \d+\.? \d+\.\d+ \.\d+
</span><del>- bool scanFloat(float& number);
</del><ins>+ bool scanFloat(float& number, bool* isNegative = nullptr);
</ins><span class="cx">
</span><span class="cx"> protected:
</span><span class="cx"> Position position() const { return m_data.characters8; }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackWebVTTParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/WebVTTParser.cpp (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/WebVTTParser.cpp        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/Source/WebCore/html/track/WebVTTParser.cpp        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -50,7 +50,6 @@
</span><span class="cx"> const char* fileIdentifier = "WEBVTT";
</span><span class="cx"> const unsigned fileIdentifierLength = 6;
</span><span class="cx">
</span><del>-#if ENABLE(WEBVTT_REGIONS)
</del><span class="cx"> bool WebVTTParser::parseFloatPercentageValue(VTTScanner& valueScanner, float& percentage)
</span><span class="cx"> {
</span><span class="cx"> float number;
</span><span class="lines">@@ -67,6 +66,7 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if ENABLE(WEBVTT_REGIONS)
</ins><span class="cx"> bool WebVTTParser::parseFloatPercentageValuePair(VTTScanner& valueScanner, char delimiter, FloatPoint& valuePair)
</span><span class="cx"> {
</span><span class="cx"> float firstCoord;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackWebVTTParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/WebVTTParser.h (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/WebVTTParser.h        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/Source/WebCore/html/track/WebVTTParser.h        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -139,9 +139,9 @@
</span><span class="cx"> }
</span><span class="cx"> static bool collectTimeStamp(const String&, double&);
</span><span class="cx">
</span><del>-#if ENABLE(WEBVTT_REGIONS)
</del><span class="cx"> // Useful functions for parsing percentage settings.
</span><span class="cx"> static bool parseFloatPercentageValue(VTTScanner& valueScanner, float&);
</span><ins>+#if ENABLE(WEBVTT_REGIONS)
</ins><span class="cx"> static bool parseFloatPercentageValuePair(VTTScanner& valueScanner, char, FloatPoint&);
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationInbandTextTrackPrivateAVFcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void InbandTextTrackPrivateAVF::processCueAttributes(CFAttributedStringRef attributedString, GenericCueData* cueData)
</del><ins>+void InbandTextTrackPrivateAVF::processCueAttributes(CFAttributedStringRef attributedString, GenericCueData& cueData)
</ins><span class="cx"> {
</span><span class="cx"> // Some of the attributes we translate into per-cue WebVTT settings are are repeated on each part of an attributed string so only
</span><span class="cx"> // process the first instance of each.
</span><span class="lines">@@ -211,11 +211,11 @@
</span><span class="cx"> processed |= Align;
</span><span class="cx">
</span><span class="cx"> if (CFStringCompare(valueString, kCMTextMarkupAlignmentType_Start, 0) == kCFCompareEqualTo)
</span><del>- cueData->setAlign(GenericCueData::Start);
</del><ins>+ cueData.setAlign(GenericCueData::Start);
</ins><span class="cx"> else if (CFStringCompare(valueString, kCMTextMarkupAlignmentType_Middle, 0) == kCFCompareEqualTo)
</span><del>- cueData->setAlign(GenericCueData::Middle);
</del><ins>+ cueData.setAlign(GenericCueData::Middle);
</ins><span class="cx"> else if (CFStringCompare(valueString, kCMTextMarkupAlignmentType_End, 0) == kCFCompareEqualTo)
</span><del>- cueData->setAlign(GenericCueData::End);
</del><ins>+ cueData.setAlign(GenericCueData::End);
</ins><span class="cx"> else
</span><span class="cx"> ASSERT_NOT_REACHED();
</span><span class="cx">
</span><span class="lines">@@ -259,7 +259,7 @@
</span><span class="cx"> CFNumberRef valueNumber = static_cast<CFNumberRef>(value);
</span><span class="cx"> double line;
</span><span class="cx"> CFNumberGetValue(valueNumber, kCFNumberFloat64Type, &line);
</span><del>- cueData->setLine(line);
</del><ins>+ cueData.setLine(line);
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -273,7 +273,7 @@
</span><span class="cx"> CFNumberRef valueNumber = static_cast<CFNumberRef>(value);
</span><span class="cx"> double position;
</span><span class="cx"> CFNumberGetValue(valueNumber, kCFNumberFloat64Type, &position);
</span><del>- cueData->setPosition(position);
</del><ins>+ cueData.setPosition(position);
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -287,7 +287,7 @@
</span><span class="cx"> CFNumberRef valueNumber = static_cast<CFNumberRef>(value);
</span><span class="cx"> double size;
</span><span class="cx"> CFNumberGetValue(valueNumber, kCFNumberFloat64Type, &size);
</span><del>- cueData->setSize(size);
</del><ins>+ cueData.setSize(size);
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -310,7 +310,7 @@
</span><span class="cx"> CFNumberRef valueNumber = static_cast<CFNumberRef>(value);
</span><span class="cx"> double baseFontSize;
</span><span class="cx"> CFNumberGetValue(valueNumber, kCFNumberFloat64Type, &baseFontSize);
</span><del>- cueData->setBaseFontSize(baseFontSize);
</del><ins>+ cueData.setBaseFontSize(baseFontSize);
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -321,7 +321,7 @@
</span><span class="cx"> CFNumberRef valueNumber = static_cast<CFNumberRef>(value);
</span><span class="cx"> double relativeFontSize;
</span><span class="cx"> CFNumberGetValue(valueNumber, kCFNumberFloat64Type, &relativeFontSize);
</span><del>- cueData->setRelativeFontSize(relativeFontSize);
</del><ins>+ cueData.setRelativeFontSize(relativeFontSize);
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -333,7 +333,7 @@
</span><span class="cx"> continue;
</span><span class="cx"> processed |= FontName;
</span><span class="cx">
</span><del>- cueData->setFontName(valueString);
</del><ins>+ cueData.setFontName(valueString);
</ins><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -345,7 +345,7 @@
</span><span class="cx"> RGBA32 color;
</span><span class="cx"> if (!makeRGBA32FromARGBCFArray(arrayValue, color))
</span><span class="cx"> continue;
</span><del>- cueData->setForegroundColor(color);
</del><ins>+ cueData.setForegroundColor(color);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (CFStringCompare(key, kCMTextMarkupAttribute_BackgroundColorARGB, 0) == kCFCompareEqualTo) {
</span><span class="lines">@@ -356,7 +356,7 @@
</span><span class="cx"> RGBA32 color;
</span><span class="cx"> if (!makeRGBA32FromARGBCFArray(arrayValue, color))
</span><span class="cx"> continue;
</span><del>- cueData->setBackgroundColor(color);
</del><ins>+ cueData.setBackgroundColor(color);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (CFStringCompare(key, kCMTextMarkupAttribute_CharacterBackgroundColorARGB, 0) == kCFCompareEqualTo) {
</span><span class="lines">@@ -367,7 +367,7 @@
</span><span class="cx"> RGBA32 color;
</span><span class="cx"> if (!makeRGBA32FromARGBCFArray(arrayValue, color))
</span><span class="cx"> continue;
</span><del>- cueData->setHighlightColor(color);
</del><ins>+ cueData.setHighlightColor(color);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -377,7 +377,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (content.length())
</span><del>- cueData->setContent(content.toString());
</del><ins>+ cueData.setContent(content.toString());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void InbandTextTrackPrivateAVF::processCue(CFArrayRef attributedStrings, CFArrayRef nativeSamples, double time)
</span><span class="lines">@@ -403,7 +403,7 @@
</span><span class="cx"> continue;
</span><span class="cx">
</span><span class="cx"> RefPtr<GenericCueData> cueData = GenericCueData::create();
</span><del>- processCueAttributes(attributedString, cueData.get());
</del><ins>+ processCueAttributes(attributedString, *cueData.get());
</ins><span class="cx"> if (!cueData->content().length())
</span><span class="cx"> continue;
</span><span class="cx">
</span><span class="lines">@@ -499,12 +499,10 @@
</span><span class="cx"> {
</span><span class="cx"> if (client()) {
</span><span class="cx"> long currentCue = m_cues.size() - 1;
</span><del>- for (; currentCue > 0; --currentCue) {
</del><ins>+ for (; currentCue >= 0; --currentCue) {
</ins><span class="cx"> if (m_cues[currentCue]->status() != GenericCueData::Complete)
</span><span class="cx"> continue;
</span><span class="cx">
</span><del>- LOG(Media, "InbandTextTrackPrivateAVF::removeCompletedCues(%p) - removing cue (\"%s\") for time = %.2f, position = %.2f, line = %.2f", this, m_cues[currentCue]->content().utf8().data(), m_cues[currentCue]->startTime(), m_cues[currentCue]->position(), m_cues[currentCue]->line());
- client()->removeGenericCue(this, m_cues[currentCue].get());
</del><span class="cx"> m_cues.remove(currentCue);
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsavfoundationInbandTextTrackPrivateAVFh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h (170693 => 170694)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h        2014-07-02 03:21:43 UTC (rev 170693)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h        2014-07-02 03:35:51 UTC (rev 170694)
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx"> protected:
</span><span class="cx"> InbandTextTrackPrivateAVF(AVFInbandTrackParent*, CueFormat);
</span><span class="cx">
</span><del>- void processCueAttributes(CFAttributedStringRef, GenericCueData*);
</del><ins>+ void processCueAttributes(CFAttributedStringRef, GenericCueData&);
</ins><span class="cx"> void processAttributedStrings(CFArrayRef, double);
</span><span class="cx"> void processNativeSamples(CFArrayRef, double);
</span><span class="cx"> void removeCompletedCues();
</span></span></pre>
</div>
</div>
</body>
</html>