Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: Source/core/html/track/vtt/VTTCue.cpp

Issue 1306833003: Sync snap-to-lines VTT cue layout steps with spec (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Typo Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/html/track/vtt/VTTCue.cpp
diff --git a/Source/core/html/track/vtt/VTTCue.cpp b/Source/core/html/track/vtt/VTTCue.cpp
index d991b9fa58d812853182acbf8315a50acb34643e..990ec66e2768ae06bbc63c32d159ff0399ed0c09 100644
--- a/Source/core/html/track/vtt/VTTCue.cpp
+++ b/Source/core/html/track/vtt/VTTCue.cpp
@@ -189,8 +189,8 @@ void VTTCueBox::applyCSSProperties(const VTTDisplayParameters& displayParameters
// The 'text-align' property on the (root) List of WebVTT Node Objects must
// be set to the value in the second cell of the row of the table below
- // whose first cell is the value of the corresponding cue's text track cue
- // alignment:
+ // whose first cell is the value of the corresponding cue's WebVTT cue
+ // text alignment:
setInlineStyleProperty(CSSPropertyTextAlign, displayParameters.textAlign);
// TODO(philipj): The position adjustment for non-snap-to-lines cues has
@@ -324,10 +324,9 @@ void VTTCue::line(DoubleOrAutoKeyword& result) const
void VTTCue::setLine(const DoubleOrAutoKeyword& position)
{
// http://dev.w3.org/html5/webvtt/#dfn-vttcue-line
- // On setting, the text track cue line position must be set to the new
- // value; if the new value is the string "auto", then it must be
- // interpreted as the special value auto.
- // ("auto" is translated to NaN.)
+ // On setting, the WebVTT cue line must be set to the new value; if the new
+ // value is the string "auto", then it must be interpreted as the special
+ // value auto. ("auto" is translated to NaN.)
float floatPosition;
if (position.isAutoKeyword()) {
if (lineIsAuto())
@@ -362,9 +361,9 @@ void VTTCue::setPosition(const DoubleOrAutoKeyword& position, ExceptionState& ex
{
// http://dev.w3.org/html5/webvtt/#dfn-vttcue-position
// On setting, if the new value is negative or greater than 100, then an
- // IndexSizeError exception must be thrown. Otherwise, the text track cue
- // text position must be set to the new value; if the new value is the
- // string "auto", then it must be interpreted as the special value auto.
+ // IndexSizeError exception must be thrown. Otherwise, the WebVTT cue
+ // position must be set to the new value; if the new value is the string
+ // "auto", then it must be interpreted as the special value auto.
float floatPosition;
if (position.isAutoKeyword()) {
if (textPositionIsAuto())
@@ -386,13 +385,13 @@ void VTTCue::setPosition(const DoubleOrAutoKeyword& position, ExceptionState& ex
void VTTCue::setSize(double size, ExceptionState& exceptionState)
{
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-size
- // On setting, if the new value is negative or greater than 100, then throw an IndexSizeError
- // exception. Otherwise, set the text track cue size to the new value.
+ // http://dev.w3.org/html5/webvtt/#dfn-vttcue-size
+ // On setting, if the new value is negative or greater than 100, then throw
+ // an IndexSizeError exception.
if (isInvalidPercentage(size, exceptionState))
return;
- // Otherwise, set the text track cue line position to the new value.
+ // Otherwise, set the WebVTT cue size to the new value.
float floatSize = narrowPrecisionToFloat(size);
if (m_cueSize == floatSize)
return;
@@ -498,33 +497,32 @@ void VTTCue::setRegionId(const String& regionId)
float VTTCue::calculateComputedLinePosition() const
{
- // http://dev.w3.org/html5/webvtt/#dfn-text-track-cue-computed-line-position
- // A text track cue has a text track cue computed line position whose value
- // is that returned by the following algorithm, which is defined in terms
- // of the other aspects of the cue:
-
- // 1. If the text track cue line position is numeric, the text track cue
- // snap-to-lines flag of the text track cue is not set, and the text
- // track cue line position is negative or greater than 100, then return
- // 100 and abort these steps.
+ // http://dev.w3.org/html5/webvtt/#dfn-cue-computed-line
+ // A WebVTT cue has a computed line whose value is that returned by the
+ // following algorithm, which is defined in terms of the other aspects of
+ // the cue:
+
+ // 1. If the line is numeric, the WebVTT cue snap-to-lines flag of the
+ // WebVTT cue is not set, and the line is negative or greater than 100,
+ // then return 100 and abort these steps.
if (!lineIsAuto() && !m_snapToLines && isInvalidPercentage(m_linePosition))
return 100;
- // 2. If the text track cue line position is numeric, return the value of
- // the text track cue line position and abort these steps. (Either the
- // text track cue snap-to-lines flag is set, so any value, not just
- // those in the range 0..100, is valid, or the value is in the range
- // 0..100 and is thus valid regardless of the value of that flag.)
+ // 2. If the line is numeric, return the value of the WebVTT cue line and
+ // abort these steps. (Either the WebVTT cue snap-to-lines flag is set,
+ // so any value, not just those in the range 0..100, is valid, or the
+ // value is in the range 0..100 and is thus valid regardless of the
+ // value of that flag.)
if (!lineIsAuto())
return m_linePosition;
- // 3. If the text track cue snap-to-lines flag of the text track cue is not
- // set, return the value 100 and abort these steps. (The text track cue
- // line position is the special value auto.)
+ // 3. If the WebVTT cue snap-to-lines flag of the WebVTT cue is not set,
+ // return the value 100 and abort these steps. (The WebVTT cue line is
+ // the special value auto.)
if (!m_snapToLines)
return 100;
- // 4. Let cue be the text track cue.
+ // 4. Let cue be the WebVTT cue.
// 5. If cue is not in a list of cues of a text track, or if that text
// track is not in the list of text tracks of a media element, return -1
// and abort these steps.
@@ -598,24 +596,23 @@ static CSSValueID determineTextDirection(DocumentFragment* vttRoot)
float VTTCue::calculateComputedTextPosition() const
{
- // http://dev.w3.org/html5/webvtt/#dfn-text-track-cue-computed-text-position
+ // http://dev.w3.org/html5/webvtt/#dfn-cue-computed-position
- // 1. If the text track cue text position is numeric, then return the value
- // of the text track cue text position and abort these steps. (Otherwise,
- // the text track cue text position is the special value auto.)
+ // 1. If the position is numeric, then return the value of the position and
+ // abort these steps. (Otherwise, the position is the special value auto.)
if (!textPositionIsAuto())
return m_textPosition;
switch (m_cueAlignment) {
- // 2. If the text track cue text alignment is start or left, return 0 and abort these steps.
+ // 2. If the cue text alignment is start or left, return 0 and abort these steps.
case Start:
case Left:
return 0;
- // 3. If the text track cue text alignment is end or right, return 100 and abort these steps.
+ // 3. If the cue text alignment is end or right, return 100 and abort these steps.
case End:
case Right:
return 100;
- // 4. If the text track cue text alignment is middle, return 50 and abort these steps.
+ // 4. If the cue text alignment is middle, return 50 and abort these steps.
case Middle:
return 50;
default:
@@ -659,11 +656,10 @@ VTTDisplayParameters VTTCue::calculateDisplayParameters() const
// VTTCueBox::applyCSSProperties need not have access to a VTTCue.
displayParameters.textAlign = displayAlignmentMap[cueAlignment()];
- // 3. If the text track cue writing direction is horizontal, then let
- // block-flow be 'tb'. Otherwise, if the text track cue writing direction is
- // vertical growing left, then let block-flow be 'lr'. Otherwise, the text
- // track cue writing direction is vertical growing right; let block-flow be
- // 'rl'.
+ // 3. If the cue writing direction is horizontal, then let block-flow be
+ // 'tb'. Otherwise, if the cue writing direction is vertical growing left,
+ // then let block-flow be 'lr'. Otherwise, the cue writing direction is
+ // vertical growing right; let block-flow be 'rl'.
displayParameters.writingMode = displayWritingModeMap[m_writingDirection];
// Resolve the cue alignment to one of the values {start, end, middle}.
@@ -684,11 +680,11 @@ VTTDisplayParameters VTTCue::calculateDisplayParameters() const
ASSERT_NOT_REACHED();
}
- // 5. If the text track cue size is less than maximum size, then let size
- // be text track cue size. Otherwise, let size be maximum size.
+ // 5. If the cue size is less than maximum size, then let size
+ // be cue size. Otherwise, let size be maximum size.
displayParameters.size = std::min(m_cueSize, maximumSize);
- // 6. If the text track cue writing direction is horizontal, then let width
+ // 6. If the cue writing direction is horizontal, then let width
// be 'size vw' and height be 'auto'. Otherwise, let width be 'auto' and
// height be 'size vh'. (These are CSS values used by the next section to
// set CSS properties for the rendering; 'vw' and 'vh' are CSS units.)
@@ -727,8 +723,8 @@ VTTDisplayParameters VTTCue::calculateDisplayParameters() const
}
}
- // A text track cue has a text track cue computed line position whose value
- // is defined in terms of the other aspects of the cue.
+ // A cue has a computed line whose value is defined in terms of
+ // the other aspects of the cue.
float computedLinePosition = calculateComputedLinePosition();
// 8. Determine the value of whichever of x-position or y-position is not
@@ -886,16 +882,16 @@ void VTTCue::updateDisplay(HTMLDivElement& container)
region = track()->regions()->getRegionById(regionId());
if (!region) {
- // If cue has an empty text track cue region identifier or there is no
- // WebVTT region whose region identifier is identical to cue's text
- // track cue region identifier, run the following substeps:
+ // If cue has an empty region identifier or there is no WebVTT region
+ // whose region identifier is identical to cue's region identifier, run
+ // the following substeps:
if (displayBox->hasChildren() && !container.contains(displayBox.get())) {
// Note: the display tree of a cue is removed when the active flag of the cue is unset.
container.appendChild(displayBox);
}
} else {
- // Let region be the WebVTT region whose region identifier
- // matches the text track cue region identifier of cue.
+ // Let region be the WebVTT region whose region identifier matches the
+ // region identifier of cue.
RefPtrWillBeRawPtr<HTMLDivElement> regionNode = region->getDisplayTree(document());
// Append the region to the viewport, if it was not already.
@@ -978,13 +974,13 @@ void VTTCue::parseSettings(const String& inputString)
case Vertical: {
// If name is a case-sensitive match for "vertical"
// 1. If value is a case-sensitive match for the string "rl", then
- // let cue's text track cue writing direction be vertical
+ // let cue's WebVTT cue writing direction be vertical
// growing left.
if (input.scanRun(valueRun, verticalGrowingLeftKeyword()))
m_writingDirection = VerticalGrowingLeft;
// 2. Otherwise, if value is a case-sensitive match for the string
- // "lr", then let cue's text track cue writing direction be
+ // "lr", then let cue's WebVTT cue writing direction be
// vertical growing right.
else if (input.scanRun(valueRun, verticalGrowingRightKeyword()))
m_writingDirection = VerticalGrowingRight;
@@ -1021,10 +1017,10 @@ void VTTCue::parseSettings(const String& inputString)
}
if (!input.isAt(valueRun.end()))
break;
- // 5. Let cue's text track cue line position be number.
+ // 5. Let cue's WebVTT cue line be number.
m_linePosition = number;
// 6. If the last character in linepos is a U+0025 PERCENT SIGN
- // character (%), then let cue's text track cue snap-to-lines
+ // character (%), then let cue's WebVTT cue snap-to-lines
// flag be false. Otherwise, let it be true.
m_snapToLines = !isPercentage;
// Steps 7 - 9 skipped.
@@ -1042,7 +1038,7 @@ void VTTCue::parseSettings(const String& inputString)
break;
if (!input.isAt(valueRun.end()))
break;
- // 4. Let cue's text track cue text position be number.
+ // 4. Let cue's cue position be number.
m_textPosition = number;
// Steps 5 - 7 skipped.
break;
@@ -1057,34 +1053,34 @@ void VTTCue::parseSettings(const String& inputString)
break;
if (!input.isAt(valueRun.end()))
break;
- // 2. Let cue's text track cue size be number.
+ // 2. Let cue's WebVTT cue size be number.
m_cueSize = number;
break;
}
case Align: {
// If name is a case-sensitive match for "align"
// 1. If value is a case-sensitive match for the string "start",
- // then let cue's text track cue alignment be start alignment.
+ // then let cue's WebVTT cue text alignment be start alignment.
if (input.scanRun(valueRun, startKeyword()))
m_cueAlignment = Start;
// 2. If value is a case-sensitive match for the string "middle",
- // then let cue's text track cue alignment be middle alignment.
+ // then let cue's WebVTT cue text alignment be middle alignment.
else if (input.scanRun(valueRun, middleKeyword()))
m_cueAlignment = Middle;
// 3. If value is a case-sensitive match for the string "end", then
- // let cue's text track cue alignment be end alignment.
+ // let cue's WebVTT cue text alignment be end alignment.
else if (input.scanRun(valueRun, endKeyword()))
m_cueAlignment = End;
// 4. If value is a case-sensitive match for the string "left",
- // then let cue's text track cue alignment be left alignment.
+ // then let cue's WebVTT cue text alignment be left alignment.
else if (input.scanRun(valueRun, leftKeyword()))
m_cueAlignment = Left;
// 5. If value is a case-sensitive match for the string "right",
- // then let cue's text track cue alignment be right alignment.
+ // then let cue's WebVTT cue text alignment be right alignment.
else if (input.scanRun(valueRun, rightKeyword()))
m_cueAlignment = Right;
break;
« no previous file with comments | « LayoutTests/media/track/track-cue-rendering-line-doesnt-fit-expected.html ('k') | Source/core/layout/LayoutVTTCue.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698