Changeset 236531 in webkit
- Timestamp:
- Sep 26, 2018, 4:10:41 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 24 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/media/track/captions-webvtt/left-align.vtt (added)
-
LayoutTests/media/track/track-add-remove-cue-expected.txt (modified) (2 diffs)
-
LayoutTests/media/track/track-add-remove-cue.html (modified) (2 diffs)
-
LayoutTests/media/track/track-cue-left-align-expected-mismatch.html (added)
-
LayoutTests/media/track/track-cue-left-align.html (added)
-
LayoutTests/media/track/track-cue-mutable-expected.txt (modified) (1 diff)
-
LayoutTests/media/track/track-cue-mutable.html (modified) (1 diff)
-
LayoutTests/media/track/track-vttcue-expected.txt (modified) (2 diffs)
-
LayoutTests/media/track/track-vttcue.html (modified) (2 diffs)
-
LayoutTests/media/track/track-webvtt-tc013-settings-expected.txt (modified) (3 diffs)
-
LayoutTests/media/track/track-webvtt-tc013-settings.html (modified) (2 diffs)
-
LayoutTests/media/track/track-webvtt-tc015-positioning-expected.txt (modified) (2 diffs)
-
LayoutTests/media/track/track-webvtt-tc015-positioning.html (modified) (2 diffs)
-
LayoutTests/media/track/track-webvtt-tc016-align-positioning-expected.txt (modified) (1 diff)
-
LayoutTests/media/track/track-webvtt-tc016-align-positioning.html (modified) (1 diff)
-
LayoutTests/media/track/track-webvtt-tc018-align-text-line-position-expected.txt (modified) (2 diffs)
-
LayoutTests/media/track/track-webvtt-tc018-align-text-line-position.html (modified) (2 diffs)
-
LayoutTests/media/track/track-webvtt-tc021-valign-expected.txt (modified) (2 diffs)
-
LayoutTests/media/track/track-webvtt-tc021-valign.html (modified) (1 diff)
-
LayoutTests/media/video-test.js (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/html/track/TextTrackCueGeneric.cpp (modified) (5 diffs)
-
Source/WebCore/html/track/TextTrackCueGeneric.h (modified) (1 diff)
-
Source/WebCore/html/track/VTTCue.cpp (modified) (10 diffs)
-
Source/WebCore/html/track/VTTCue.h (modified) (4 diffs)
-
Source/WebCore/html/track/VTTCue.idl (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r236530 r236531 1 2018-09-26 Per Arne Vollan <pvollan@apple.com> 2 3 WebVTT cue alignment broken 4 https://bugs.webkit.org/show_bug.cgi?id=190004 5 6 Reviewed by Eric Carlson. 7 8 * media/track/captions-webvtt/left-align.vtt: Added. 9 * media/track/track-add-remove-cue-expected.txt: 10 * media/track/track-add-remove-cue.html: 11 * media/track/track-cue-left-align-expected-mismatch.html: Added. 12 * media/track/track-cue-left-align.html: Added. 13 * media/track/track-cue-mutable-expected.txt: 14 * media/track/track-cue-mutable.html: 15 * media/track/track-vttcue-expected.txt: 16 * media/track/track-vttcue.html: 17 * media/track/track-webvtt-tc013-settings-expected.txt: 18 * media/track/track-webvtt-tc013-settings.html: 19 * media/track/track-webvtt-tc015-positioning-expected.txt: 20 * media/track/track-webvtt-tc015-positioning.html: 21 * media/track/track-webvtt-tc016-align-positioning-expected.txt: 22 * media/track/track-webvtt-tc016-align-positioning.html: 23 * media/track/track-webvtt-tc018-align-text-line-position-expected.txt: 24 * media/track/track-webvtt-tc018-align-text-line-position.html: 25 * media/track/track-webvtt-tc021-valign-expected.txt: 26 * media/track/track-webvtt-tc021-valign.html: 27 * media/video-test.js: 28 (testCues): 29 1 30 2018-09-26 James Savage <james.savage@apple.com> 2 31 -
trunk/LayoutTests/media/track/track-add-remove-cue-expected.txt
r236143 r236531 21 21 EXPECTED (textCue.snapToLines == 'true') OK 22 22 EXPECTED (textCue.line == '-1') OK 23 EXPECTED (textCue.position == ' 50') OK23 EXPECTED (textCue.position == 'auto') OK 24 24 EXPECTED (textCue.size == '100') OK 25 25 EXPECTED (textCue.align == 'center') OK … … 44 44 EXPECTED (newCue.snapToLines == 'true') OK 45 45 EXPECTED (newCue.line == '-1') OK 46 EXPECTED (newCue.position == ' 50') OK46 EXPECTED (newCue.position == 'auto') OK 47 47 EXPECTED (newCue.size == '100') OK 48 48 EXPECTED (newCue.align == 'center') OK -
trunk/LayoutTests/media/track/track-add-remove-cue.html
r236143 r236531 33 33 testExpected("textCue.snapToLines", true); 34 34 testExpected("textCue.line", -1); 35 testExpected("textCue.position", 50);35 testExpected("textCue.position", 'auto'); 36 36 testExpected("textCue.size", 100); 37 37 testExpected("textCue.align", "center"); … … 58 58 testExpected("newCue.snapToLines", true); 59 59 testExpected("newCue.line", -1); 60 testExpected("newCue.position", 50);60 testExpected("newCue.position", 'auto'); 61 61 testExpected("newCue.size", 100); 62 62 testExpected("newCue.align", "center"); -
trunk/LayoutTests/media/track/track-cue-mutable-expected.txt
r236143 r236531 10 10 EXPECTED (textCue.snapToLines == 'true') OK 11 11 EXPECTED (textCue.line == '-1') OK 12 EXPECTED (textCue.position == ' 50') OK12 EXPECTED (textCue.position == 'auto') OK 13 13 EXPECTED (textCue.size == '100') OK 14 14 EXPECTED (textCue.align == 'center') OK -
trunk/LayoutTests/media/track/track-cue-mutable.html
r236143 r236531 30 30 testExpected("textCue.snapToLines", true); 31 31 testExpected("textCue.line", -1); 32 testExpected("textCue.position", 50);32 testExpected("textCue.position", 'auto'); 33 33 testExpected("textCue.size", 100); 34 34 testExpected("textCue.align", "center"); -
trunk/LayoutTests/media/track/track-vttcue-expected.txt
r236143 r236531 15 15 EXPECTED (trackCue.snapToLines == 'true') OK 16 16 EXPECTED (trackCue.line == '-1') OK 17 EXPECTED (trackCue.position == ' 50') OK17 EXPECTED (trackCue.position == 'auto') OK 18 18 EXPECTED (trackCue.size == '100') OK 19 19 EXPECTED (trackCue.align == 'center') OK … … 33 33 EXPECTED (newCue.snapToLines == 'true') OK 34 34 EXPECTED (newCue.line == '-1') OK 35 EXPECTED (newCue.position == ' 50') OK35 EXPECTED (newCue.position == 'auto') OK 36 36 EXPECTED (newCue.size == '100') OK 37 37 EXPECTED (newCue.align == 'center') OK -
trunk/LayoutTests/media/track/track-vttcue.html
r236143 r236531 34 34 testExpected("trackCue.snapToLines", true); 35 35 testExpected("trackCue.line", -1); 36 testExpected("trackCue.position", 50);36 testExpected("trackCue.position", 'auto'); 37 37 testExpected("trackCue.size", 100); 38 38 testExpected("trackCue.align", "center"); … … 54 54 testExpected("newCue.snapToLines", true); 55 55 testExpected("newCue.line", -1); 56 testExpected("newCue.position", 50);56 testExpected("newCue.position", 'auto'); 57 57 testExpected("newCue.size", 100); 58 58 testExpected("newCue.align", "center"); -
trunk/LayoutTests/media/track/track-webvtt-tc013-settings-expected.txt
r236143 r236531 6 6 EXPECTED (cues.length == '4') OK 7 7 EXPECTED (cues[0].line == '100') OK 8 EXPECTED (cues[0].position == ' 50') OK8 EXPECTED (cues[0].position == 'auto') OK 9 9 EXPECTED (cues[0].align == 'start') OK 10 10 EXPECTED (cues[0].vertical == '') OK … … 18 18 EXPECTED (cues[2].vertical == '') OK 19 19 EXPECTED (cues[3].line == '95') OK 20 EXPECTED (cues[3].position == ' 50') OK20 EXPECTED (cues[3].position == 'auto') OK 21 21 EXPECTED (cues[3].align == 'end') OK 22 22 EXPECTED (cues[3].vertical == 'lr') OK … … 33 33 EXPECTED (cues[1].vertical == '') OK 34 34 EXPECTED (cues[2].line == '-1') OK 35 EXPECTED (cues[2].position == ' 50') OK35 EXPECTED (cues[2].position == 'auto') OK 36 36 EXPECTED (cues[2].align == 'center') OK 37 37 EXPECTED (cues[2].vertical == '') OK -
trunk/LayoutTests/media/track/track-webvtt-tc013-settings.html
r236143 r236531 34 34 { 35 35 property : "position", 36 values : [ 50, 40, 10, 50],36 values : ['auto', 40, 10, 'auto'], 37 37 }, 38 38 { … … 56 56 { 57 57 property : "position", 58 values : [10, 50, 50, 90],58 values : [10, 50, 'auto', 90], 59 59 }, 60 60 { -
trunk/LayoutTests/media/track/track-webvtt-tc015-positioning-expected.txt
r170694 r236531 7 7 EXPECTED (cues[0].position == '0') OK 8 8 EXPECTED (cues[1].position == '49.2') OK 9 EXPECTED (cues[2].position == ' 50') OK9 EXPECTED (cues[2].position == 'auto') OK 10 10 EXPECTED (cues[3].position == '100') OK 11 11 … … 14 14 EXPECTED (cues[0].position == '0') OK 15 15 EXPECTED (cues[1].position == '49.2') OK 16 EXPECTED (cues[2].position == ' 50') OK16 EXPECTED (cues[2].position == 'auto') OK 17 17 EXPECTED (cues[3].position == '100') OK 18 18 19 19 *** Testing text track 2 20 20 EXPECTED (cues.length == '8') OK 21 EXPECTED (cues[0].position == ' 50') OK22 EXPECTED (cues[1].position == ' 50') OK23 EXPECTED (cues[2].position == ' 50') OK24 EXPECTED (cues[3].position == ' 50') OK25 EXPECTED (cues[4].position == ' 50') OK26 EXPECTED (cues[5].position == ' 50') OK27 EXPECTED (cues[6].position == ' 50') OK28 EXPECTED (cues[7].position == ' 50') OK21 EXPECTED (cues[0].position == 'auto') OK 22 EXPECTED (cues[1].position == 'auto') OK 23 EXPECTED (cues[2].position == 'auto') OK 24 EXPECTED (cues[3].position == 'auto') OK 25 EXPECTED (cues[4].position == 'auto') OK 26 EXPECTED (cues[5].position == 'auto') OK 27 EXPECTED (cues[6].position == 'auto') OK 28 EXPECTED (cues[7].position == 'auto') OK 29 29 END OF TEST 30 30 -
trunk/LayoutTests/media/track/track-webvtt-tc015-positioning.html
r170694 r236531 30 30 { 31 31 property : "position", 32 values : [0, 49.2, 50, 100],32 values : [0, 49.2, 'auto', 100], 33 33 precision : 2, 34 34 }, … … 50 50 { 51 51 property : "position", 52 values : [ 50, 50, 50, 50, 50, 50, 50, 50],52 values : ['auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto', 'auto'], 53 53 }, 54 54 ], -
trunk/LayoutTests/media/track/track-webvtt-tc016-align-positioning-expected.txt
r236143 r236531 16 16 EXPECTED (cues[0].position == '10') OK 17 17 EXPECTED (cues[0].align == 'center') OK 18 EXPECTED (cues[1].position == ' 50') OK18 EXPECTED (cues[1].position == 'auto') OK 19 19 EXPECTED (cues[1].align == 'center') OK 20 EXPECTED (cues[2].position == ' 50') OK20 EXPECTED (cues[2].position == 'auto') OK 21 21 EXPECTED (cues[2].align == 'center') OK 22 22 END OF TEST -
trunk/LayoutTests/media/track/track-webvtt-tc016-align-positioning.html
r236143 r236531 52 52 { 53 53 property : "position", 54 values : [10, 50, 50],54 values : [10, 'auto', 'auto'], 55 55 }, 56 56 { -
trunk/LayoutTests/media/track/track-webvtt-tc018-align-text-line-position-expected.txt
r236143 r236531 10 10 EXPECTED (cues[0].snapToLines == 'false') OK 11 11 EXPECTED (cues[1].align == 'start') OK 12 EXPECTED (cues[1].position == ' 50') OK12 EXPECTED (cues[1].position == 'auto') OK 13 13 EXPECTED (cues[1].line == '0') OK 14 14 EXPECTED (cues[1].snapToLines == 'true') OK … … 29 29 EXPECTED (cues.length == '3') OK 30 30 EXPECTED (cues[0].align == 'center') OK 31 EXPECTED (cues[0].position == ' 50') OK31 EXPECTED (cues[0].position == 'auto') OK 32 32 EXPECTED (cues[0].line == '-1') OK 33 33 EXPECTED (cues[0].snapToLines == 'true') OK -
trunk/LayoutTests/media/track/track-webvtt-tc018-align-text-line-position.html
r236143 r236531 34 34 { 35 35 property : "position", 36 values : [10, 50, 80.3, 30, 60],36 values : [10, 'auto', 80.3, 30, 60], 37 37 precision : 2, 38 38 }, … … 67 67 { 68 68 property : "position", 69 values : [ 50, 0, 60],69 values : ['auto', 0, 60], 70 70 }, 71 71 { -
trunk/LayoutTests/media/track/track-webvtt-tc021-valign-expected.txt
r236143 r236531 7 7 EXPECTED (cues[0].vertical == 'rl') OK 8 8 EXPECTED (cues[0].align == 'center') OK 9 EXPECTED (cues[0].position == ' 50') OK9 EXPECTED (cues[0].position == 'auto') OK 10 10 EXPECTED (cues[1].vertical == 'lr') OK 11 11 EXPECTED (cues[1].align == 'center') OK 12 EXPECTED (cues[1].position == ' 50') OK12 EXPECTED (cues[1].position == 'auto') OK 13 13 EXPECTED (cues[2].vertical == 'rl') OK 14 14 EXPECTED (cues[2].align == 'start') OK … … 19 19 EXPECTED (cues[0].vertical == 'rl') OK 20 20 EXPECTED (cues[0].align == 'center') OK 21 EXPECTED (cues[0].position == ' 50') OK21 EXPECTED (cues[0].position == 'auto') OK 22 22 EXPECTED (cues[1].vertical == 'lr') OK 23 23 EXPECTED (cues[1].align == 'center') OK 24 EXPECTED (cues[1].position == ' 50') OK24 EXPECTED (cues[1].position == 'auto') OK 25 25 EXPECTED (cues[2].vertical == 'rl') OK 26 26 EXPECTED (cues[2].align == 'start') OK -
trunk/LayoutTests/media/track/track-webvtt-tc021-valign.html
r236143 r236531 38 38 { 39 39 property : "position", 40 values : [ 50, 50, 0],40 values : ['auto', 'auto', 0], 41 41 }, 42 42 ], -
trunk/LayoutTests/media/video-test.js
r234582 r236531 378 378 var propertyString = "cues[" + i + "]." + test.property; 379 379 var propertyValue = eval(propertyString); 380 if (test["precision"] )380 if (test["precision"] && typeof(propertyValue) == 'number') 381 381 propertyValue = propertyValue.toFixed(test["precision"]); 382 382 reportExpected(test.values[i] == propertyValue, propertyString, "==", test.values[i], propertyValue) -
trunk/Source/WebCore/ChangeLog
r236530 r236531 1 2018-09-26 Per Arne Vollan <pvollan@apple.com> 2 3 WebVTT cue alignment broken 4 https://bugs.webkit.org/show_bug.cgi?id=190004 5 6 Reviewed by Eric Carlson. 7 8 If the position of the queue is unspecified, the default value of 50 was used, which is incorrect. 9 This patch also updates the API according to https://w3c.github.io/webvtt/#the-vttcue-interface. 10 The position attribute should not be a double, but either a double or the "auto" keyword. Parts 11 of this patch is inspired by the associated code in the Chromium project. 12 13 Test: media/track/track-cue-left-align.html 14 15 * html/track/TextTrackCueGeneric.cpp: 16 (WebCore::TextTrackCueGenericBoxElement::applyCSSProperties): 17 (WebCore::TextTrackCueGeneric::setPosition): 18 * html/track/TextTrackCueGeneric.h: 19 * html/track/VTTCue.cpp: 20 (WebCore::VTTCueBox::applyCSSProperties): 21 (WebCore::VTTCue::initialize): 22 (WebCore::VTTCue::position const): 23 (WebCore::VTTCue::setPosition): 24 (WebCore::VTTCue::textPositionIsAuto const): 25 (WebCore::VTTCue::calculateComputedTextPosition const): 26 (WebCore::VTTCue::calculateDisplayParameters): 27 (WebCore::VTTCue::toJSON const): 28 * html/track/VTTCue.h: 29 (WebCore::VTTCue::position const): Deleted. 30 * html/track/VTTCue.idl: 31 1 32 2018-09-26 James Savage <james.savage@apple.com> 2 33 -
trunk/Source/WebCore/html/track/TextTrackCueGeneric.cpp
r236143 r236531 75 75 Ref<HTMLSpanElement> cueElement = cue->element(); 76 76 77 double textPosition = cue->calculateComputedTextPosition(); 78 77 79 CSSValueID alignment = cue->getCSSAlignment(); 78 80 float size = static_cast<float>(cue->getCSSSize()); … … 81 83 setInlineStyleProperty(CSSPropertyMarginBottom, 1.0, CSSPrimitiveValue::CSS_PERCENTAGE); 82 84 } else { 83 setInlineStyleProperty(CSSPropertyLeft, static_cast<float>( cue->position()), CSSPrimitiveValue::CSS_PERCENTAGE);85 setInlineStyleProperty(CSSPropertyLeft, static_cast<float>(textPosition), CSSPrimitiveValue::CSS_PERCENTAGE); 84 86 setInlineStyleProperty(CSSPropertyTop, static_cast<float>(cue->line()), CSSPrimitiveValue::CSS_PERCENTAGE); 85 87 … … 96 98 setInlineStyleProperty(CSSPropertyWidth, newCueSize, CSSPrimitiveValue::CSS_PERCENTAGE); 97 99 if ((alignment == CSSValueMiddle || alignment == CSSValueCenter) && multiplier != 1.0) 98 setInlineStyleProperty(CSSPropertyLeft, static_cast<double>( cue->position()- (newCueSize - m_cue.getCSSSize()) / 2), CSSPrimitiveValue::CSS_PERCENTAGE);100 setInlineStyleProperty(CSSPropertyLeft, static_cast<double>(textPosition - (newCueSize - m_cue.getCSSSize()) / 2), CSSPrimitiveValue::CSS_PERCENTAGE); 99 101 } else { 100 102 setInlineStyleProperty(CSSPropertyHeight, newCueSize, CSSPrimitiveValue::CSS_PERCENTAGE); … … 104 106 } 105 107 106 double textPosition = m_cue.position();107 108 double maxSize = 100.0; 108 109 … … 170 171 } 171 172 172 ExceptionOr<void> TextTrackCueGeneric::setPosition( doubleposition)173 ExceptionOr<void> TextTrackCueGeneric::setPosition(const LineAndPositionSetting& position) 173 174 { 174 175 auto result = VTTCue::setPosition(position); -
trunk/Source/WebCore/html/track/TextTrackCueGeneric.h
r225764 r236531 44 44 45 45 ExceptionOr<void> setLine(double) final; 46 ExceptionOr<void> setPosition( double) final;46 ExceptionOr<void> setPosition(const LineAndPositionSetting&) final; 47 47 48 48 bool useDefaultPosition() const { return m_useDefaultPosition; } -
trunk/Source/WebCore/html/track/VTTCue.cpp
r236143 r236531 178 178 multiplier = m_fontSizeFromCaptionUserPrefs / authorFontSize; 179 179 180 double textPosition = m_cue. position();180 double textPosition = m_cue.calculateComputedTextPosition(); 181 181 double maxSize = 100.0; 182 182 CSSValueID alignment = m_cue.getCSSAlignment(); … … 286 286 m_linePosition = undefinedPosition; 287 287 m_computedLinePosition = undefinedPosition; 288 m_textPosition = 50;288 m_textPosition = std::numeric_limits<double>::quiet_NaN(); 289 289 m_cueSize = 100; 290 290 m_writingDirection = Horizontal; … … 392 392 } 393 393 394 ExceptionOr<void> VTTCue::setPosition(double position) 395 { 396 // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-texttrackcue-position 397 // On setting, if the new value is negative or greater than 100, then throw an IndexSizeError exception. 398 // Otherwise, set the text track cue text position to the new value. 399 if (!(position >= 0 && position <= 100)) 400 return Exception { IndexSizeError }; 401 402 // Otherwise, set the text track cue line position to the new value. 403 if (m_textPosition == position) 404 return { }; 405 394 VTTCue::LineAndPositionSetting VTTCue::position() const 395 { 396 if (textPositionIsAuto()) 397 return Auto; 398 return m_textPosition; 399 } 400 401 ExceptionOr<void> VTTCue::setPosition(const LineAndPositionSetting& position) 402 { 403 // http://dev.w3.org/html5/webvtt/#dfn-vttcue-position 404 // On setting, if the new value is negative or greater than 100, then an 405 // IndexSizeError exception must be thrown. Otherwise, the WebVTT cue 406 // position must be set to the new value; if the new value is the string 407 // "auto", then it must be interpreted as the special value auto. 408 double textPosition = 0; 409 if (WTF::holds_alternative<AutoKeyword>(position)) { 410 if (textPositionIsAuto()) 411 return { }; 412 textPosition = std::numeric_limits<double>::quiet_NaN(); 413 } else { 414 if (!(WTF::get<double>(position) >= 0 && WTF::get<double>(position) <= 100)) 415 return Exception { IndexSizeError }; 416 417 // Otherwise, set the text track cue line position to the new value. 418 textPosition = WTF::get<double>(position); 419 if (m_textPosition == textPosition) 420 return { }; 421 } 422 406 423 willChange(); 407 m_textPosition = position;424 m_textPosition = textPosition; 408 425 didChange(); 409 426 … … 610 627 } 611 628 629 bool VTTCue::textPositionIsAuto() const 630 { 631 return std::isnan(m_textPosition); 632 } 633 612 634 void VTTCue::determineTextDirection() 613 635 { … … 653 675 } 654 676 677 double VTTCue::calculateComputedTextPosition() const 678 { 679 // http://dev.w3.org/html5/webvtt/#dfn-cue-computed-position 680 681 // 1. If the position is numeric, then return the value of the position and 682 // abort these steps. (Otherwise, the position is the special value auto.) 683 if (!textPositionIsAuto()) 684 return m_textPosition; 685 686 switch (m_cueAlignment) { 687 case Start: 688 case Left: 689 // 2. If the cue text alignment is start or left, return 0 and abort these 690 // steps. 691 return 0; 692 case End: 693 case Right: 694 // 3. If the cue text alignment is end or right, return 100 and abort these 695 // steps. 696 return 100; 697 case Center: 698 // 4. If the cue text alignment is center, return 50 and abort these steps. 699 return 50; 700 default: 701 ASSERT_NOT_REACHED(); 702 return 0; 703 } 704 } 705 655 706 void VTTCue::calculateDisplayParameters() 656 707 { … … 668 719 // 10.5 Determine the value of maximum size for cue as per the appropriate 669 720 // rules from the following list: 670 int maximumSize = m_textPosition; 721 double computedTextPosition = calculateComputedTextPosition(); 722 int maximumSize = computedTextPosition; 671 723 if ((m_writingDirection == Horizontal && m_cueAlignment == Start && m_displayDirection == CSSValueLtr) 672 724 || (m_writingDirection == Horizontal && m_cueAlignment == End && m_displayDirection == CSSValueRtl) … … 674 726 || (m_writingDirection == VerticalGrowingLeft && (m_cueAlignment == Start || m_cueAlignment == Left)) 675 727 || (m_writingDirection == VerticalGrowingRight && (m_cueAlignment == Start || m_cueAlignment == Left))) { 676 maximumSize = 100 - m_textPosition;728 maximumSize = 100 - computedTextPosition; 677 729 } else if ((m_writingDirection == Horizontal && m_cueAlignment == End && m_displayDirection == CSSValueLtr) 678 730 || (m_writingDirection == Horizontal && m_cueAlignment == Start && m_displayDirection == CSSValueRtl) … … 680 732 || (m_writingDirection == VerticalGrowingLeft && (m_cueAlignment == End || m_cueAlignment == Right)) 681 733 || (m_writingDirection == VerticalGrowingRight && (m_cueAlignment == End || m_cueAlignment == Right))) { 682 maximumSize = m_textPosition;734 maximumSize = computedTextPosition; 683 735 } else if (m_cueAlignment == Center) { 684 maximumSize = m_textPosition <= 50 ? m_textPosition : (100 - m_textPosition);736 maximumSize = computedTextPosition <= 50 ? computedTextPosition : (100 - computedTextPosition); 685 737 maximumSize = maximumSize * 2; 686 738 } else … … 700 752 case Start: 701 753 if (m_displayDirection == CSSValueLtr) 702 m_displayPosition.first = m_textPosition;754 m_displayPosition.first = computedTextPosition; 703 755 else 704 m_displayPosition.first = 100 - m_textPosition - m_displaySize;756 m_displayPosition.first = 100 - computedTextPosition - m_displaySize; 705 757 break; 706 758 case End: 707 759 if (m_displayDirection == CSSValueRtl) 708 m_displayPosition.first = 100 - m_textPosition;760 m_displayPosition.first = 100 - computedTextPosition; 709 761 else 710 m_displayPosition.first = m_textPosition - m_displaySize;762 m_displayPosition.first = computedTextPosition - m_displaySize; 711 763 break; 712 764 case Left: 713 765 if (m_displayDirection == CSSValueLtr) 714 m_displayPosition.first = m_textPosition;766 m_displayPosition.first = computedTextPosition; 715 767 else 716 m_displayPosition.first = 100 - m_textPosition;768 m_displayPosition.first = 100 - computedTextPosition; 717 769 break; 718 770 case Right: 719 771 if (m_displayDirection == CSSValueLtr) 720 m_displayPosition.first = m_textPosition - m_displaySize;772 m_displayPosition.first = computedTextPosition - m_displaySize; 721 773 else 722 m_displayPosition.first = 100 - m_textPosition - m_displaySize;774 m_displayPosition.first = 100 - computedTextPosition - m_displaySize; 723 775 break; 724 776 case Center: 725 777 if (m_displayDirection == CSSValueLtr) 726 m_displayPosition.first = m_textPosition - m_displaySize / 2;778 m_displayPosition.first = computedTextPosition - m_displaySize / 2; 727 779 else 728 m_displayPosition.first = 100 - m_textPosition - m_displaySize / 2;780 m_displayPosition.first = 100 - computedTextPosition - m_displaySize / 2; 729 781 break; 730 782 case NumberOfAlignments: … … 1198 1250 object.setBoolean("snapToLines"_s, snapToLines()); 1199 1251 object.setDouble("line"_s, m_linePosition); 1200 object.setDouble("position"_s, position()); 1252 if (textPositionIsAuto()) 1253 object.setString("position"_s, "auto"); 1254 else 1255 object.setDouble("position"_s, m_textPosition); 1201 1256 object.setInteger("size"_s, m_cueSize); 1202 1257 object.setString("align"_s, align()); -
trunk/Source/WebCore/html/track/VTTCue.h
r236143 r236531 89 89 virtual ~VTTCue(); 90 90 91 enum AutoKeyword { 92 Auto 93 }; 94 95 using LineAndPositionSetting = Variant<double, AutoKeyword>; 96 91 97 const String& vertical() const; 92 98 ExceptionOr<void> setVertical(const String&); … … 98 104 virtual ExceptionOr<void> setLine(double); 99 105 100 double position() const { return m_textPosition; }101 virtual ExceptionOr<void> setPosition( double);106 LineAndPositionSetting position() const; 107 virtual ExceptionOr<void> setPosition(const LineAndPositionSetting&); 102 108 103 109 int size() const { return m_cueSize; } … … 171 177 String toJSONString() const; 172 178 179 double calculateComputedTextPosition() const; 180 173 181 protected: 174 182 VTTCue(ScriptExecutionContext&, const MediaTime& start, const MediaTime& end, const String& content); … … 187 195 void parseSettings(const String&); 188 196 197 bool textPositionIsAuto() const; 198 189 199 void determineTextDirection(); 190 200 void calculateDisplayParameters(); -
trunk/Source/WebCore/html/track/VTTCue.idl
r228886 r236531 24 24 */ 25 25 26 enum AutoKeyword { "auto" }; 27 typedef (double or AutoKeyword) LineAndPositionSetting; 28 26 29 [ 27 30 Conditional=VIDEO_TRACK, … … 34 37 attribute boolean snapToLines; 35 38 attribute double line; 36 attribute doubleposition;39 attribute LineAndPositionSetting position; 37 40 attribute double size; 38 41 attribute DOMString align;
Note:
See TracChangeset
for help on using the changeset viewer.