<!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 -&gt; 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  &lt;eric.carlson@apple.com&gt;
+
+        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  &lt;simon.fraser@apple.com&gt;
</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 --&gt; 00:00:45.500 position:50%
</del><ins>+00:00:31.000 --&gt; 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 --&gt; 00:00:45.500 position:50%
</del><ins>+00:00:31.000 --&gt; 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 --&gt; 00:00:45.500 line:50%
</del><ins>+00:00:31.000 --&gt; 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 --&gt; 00:00:45.500 position:80% line:80%
</del><ins>+00:00:31.000 --&gt; 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 --&gt; 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 --&gt; 00:01:00.500 size:10%
</del><ins>+00:00:31.000 --&gt; 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 --&gt; 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 : &quot;position&quot;,
</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 : &quot;line&quot;,
</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 : &quot;snapToLines&quot;,
</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 : &quot;position&quot;,
</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 : &quot;line&quot;,
</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 : &quot;snapToLines&quot;,
</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 &lt; cues.length; i++) {
</span><span class="cx">         for (j = 0; j &lt; expected.tests.length; j++) {
</span><span class="cx">             var test = expected.tests[j];
</span><del>-            testExpected(&quot;cues[&quot; + i + &quot;].&quot; + test.property, test.values[i]);
</del><ins>+            var propertyString = &quot;cues[&quot; + i + &quot;].&quot; + test.property;
+            var propertyValue = eval(propertyString);
+            if (test[&quot;precision&quot;])
+                propertyValue = propertyValue.toFixed(test[&quot;precision&quot;]);
+            reportExpected(test.values[i] == propertyValue, propertyString, &quot;==&quot;, 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  &lt;eric.carlson@apple.com&gt;
+
+        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 -&gt; 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  &lt;simon.fraser@apple.com&gt;
</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&amp; ec)
</del><ins>+void TextTrackCueGeneric::setLine(double line, ExceptionCode&amp; 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&amp; ec)
</del><ins>+void TextTrackCueGeneric::setPosition(double position, ExceptionCode&amp; 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&lt;VTTCueBox&gt; createDisplayTree() override;
</span><span class="cx"> 
</span><del>-    virtual void setLine(int, ExceptionCode&amp;) override;
-    virtual void setPosition(int, ExceptionCode&amp;) override;
</del><ins>+    virtual void setLine(double, ExceptionCode&amp;) override;
+    virtual void setPosition(double, ExceptionCode&amp;) 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&amp; ec)
</del><ins>+void VTTCue::setLine(double position, ExceptionCode&amp; 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&amp; ec)
</del><ins>+void VTTCue::setPosition(double position, ExceptionCode&amp; 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&amp; input, const VTTScanner::Run&amp; valueRun, int&amp; 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 &gt;= 0 &amp;&amp; number &lt;= 100;
-}
-
</del><span class="cx"> void VTTCue::setCueSettings(const String&amp; 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, &quot;VTTCue::setCueSettings, invalid Vertical&quot;);
</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, &amp;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 &amp;&amp; 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 &lt; 0 || linePosition &gt; 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 &amp;&amp; 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 &lt; 0 || linePosition &gt; 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&lt;int&gt;(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, &quot;VTTCue::setCueSettings, invalid Line&quot;);
+
</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) &amp;&amp; input.isAt(valueRun.end()))
+                m_textPosition = position;
+            else
+                LOG(Media, &quot;VTTCue::setCueSettings, invalid Position&quot;);
</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) &amp;&amp; input.isAt(valueRun.end()))
+                m_cueSize = cueSize;
+            else
+                LOG(Media, &quot;VTTCue::setCueSettings, invalid Size&quot;);
</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 &quot;right&quot;, 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, &quot;VTTCue::setCueSettings, invalid Align&quot;);
+
</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&amp;);
</del><ins>+    double line() const { return m_linePosition; }
+    virtual void setLine(double, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><del>-    int position() const { return m_textPosition; }
-    virtual void setPosition(int, ExceptionCode&amp;);
</del><ins>+    double position() const { return m_textPosition; }
+    virtual void setPosition(double, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     int size() const { return m_cueSize; }
</span><span class="cx">     virtual void setSize(int, ExceptionCode&amp;);
</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&amp; number)
</del><ins>+bool VTTScanner::scanFloat(float&amp; number, bool* isNegative)
</ins><span class="cx"> {
</span><ins>+    bool negative = scan('-');
</ins><span class="cx">     Run integerRun = collectWhile&lt;isASCIIDigit&gt;();
</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&lt;float&gt;::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&amp; 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&amp; number);
</del><ins>+    bool scanFloat(float&amp; 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 = &quot;WEBVTT&quot;;
</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&amp; valueScanner, float&amp; 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&amp; valueScanner, char delimiter, FloatPoint&amp; 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&amp;, double&amp;);
</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&amp; valueScanner, float&amp;);
</span><ins>+#if ENABLE(WEBVTT_REGIONS)
</ins><span class="cx">     static bool parseFloatPercentageValuePair(VTTScanner&amp; valueScanner, char, FloatPoint&amp;);
</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&amp; 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-&gt;setAlign(GenericCueData::Start);
</del><ins>+                    cueData.setAlign(GenericCueData::Start);
</ins><span class="cx">                 else if (CFStringCompare(valueString, kCMTextMarkupAlignmentType_Middle, 0) == kCFCompareEqualTo)
</span><del>-                    cueData-&gt;setAlign(GenericCueData::Middle);
</del><ins>+                    cueData.setAlign(GenericCueData::Middle);
</ins><span class="cx">                 else if (CFStringCompare(valueString, kCMTextMarkupAlignmentType_End, 0) == kCFCompareEqualTo)
</span><del>-                    cueData-&gt;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&lt;CFNumberRef&gt;(value);
</span><span class="cx">                 double line;
</span><span class="cx">                 CFNumberGetValue(valueNumber, kCFNumberFloat64Type, &amp;line);
</span><del>-                cueData-&gt;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&lt;CFNumberRef&gt;(value);
</span><span class="cx">                 double position;
</span><span class="cx">                 CFNumberGetValue(valueNumber, kCFNumberFloat64Type, &amp;position);
</span><del>-                cueData-&gt;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&lt;CFNumberRef&gt;(value);
</span><span class="cx">                 double size;
</span><span class="cx">                 CFNumberGetValue(valueNumber, kCFNumberFloat64Type, &amp;size);
</span><del>-                cueData-&gt;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&lt;CFNumberRef&gt;(value);
</span><span class="cx">                 double baseFontSize;
</span><span class="cx">                 CFNumberGetValue(valueNumber, kCFNumberFloat64Type, &amp;baseFontSize);
</span><del>-                cueData-&gt;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&lt;CFNumberRef&gt;(value);
</span><span class="cx">                 double relativeFontSize;
</span><span class="cx">                 CFNumberGetValue(valueNumber, kCFNumberFloat64Type, &amp;relativeFontSize);
</span><del>-                cueData-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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&lt;GenericCueData&gt; cueData = GenericCueData::create();
</span><del>-            processCueAttributes(attributedString, cueData.get());
</del><ins>+            processCueAttributes(attributedString, *cueData.get());
</ins><span class="cx">             if (!cueData-&gt;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 &gt; 0; --currentCue) {
</del><ins>+        for (; currentCue &gt;= 0; --currentCue) {
</ins><span class="cx">             if (m_cues[currentCue]-&gt;status() != GenericCueData::Complete)
</span><span class="cx">                 continue;
</span><span class="cx"> 
</span><del>-            LOG(Media, &quot;InbandTextTrackPrivateAVF::removeCompletedCues(%p) - removing cue (\&quot;%s\&quot;) for time = %.2f, position =  %.2f, line =  %.2f&quot;, this, m_cues[currentCue]-&gt;content().utf8().data(), m_cues[currentCue]-&gt;startTime(), m_cues[currentCue]-&gt;position(), m_cues[currentCue]-&gt;line());
-            client()-&gt;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&amp;);
</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>