| 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 462c88d5c6d7bc472900d3049fb06252a5ec9cf3..92f0990b2c1c00dacbd9b35948d0565e71cda1e8 100644
|
| --- a/Source/core/html/track/vtt/VTTCue.cpp
|
| +++ b/Source/core/html/track/vtt/VTTCue.cpp
|
| @@ -231,6 +231,7 @@ VTTCue::VTTCue(Document& document, double startTime, double endTime, const Strin
|
| , m_displayTreeShouldChange(true)
|
| {
|
| UseCounter::count(document, UseCounter::VTTCue);
|
| + m_cueBackgroundBox->setShadowPseudoId(cueShadowPseudoId());
|
| }
|
|
|
| VTTCue::~VTTCue()
|
| @@ -253,13 +254,6 @@ String VTTCue::toString() const
|
| }
|
| #endif
|
|
|
| -VTTCueBox& VTTCue::ensureDisplayTree()
|
| -{
|
| - if (!m_displayTree)
|
| - m_displayTree = VTTCueBox::create(document(), this);
|
| - return *m_displayTree;
|
| -}
|
| -
|
| void VTTCue::cueDidChange()
|
| {
|
| TextTrackCue::cueDidChange();
|
| @@ -799,48 +793,28 @@ void VTTCue::updateDisplayTree(double movieTime)
|
|
|
| PassRefPtrWillBeRawPtr<VTTCueBox> VTTCue::getDisplayTree()
|
| {
|
| - RefPtrWillBeRawPtr<VTTCueBox> displayTree(ensureDisplayTree());
|
| - if (!m_displayTreeShouldChange || !track()->isRendered())
|
| - return displayTree.release();
|
| -
|
| - createVTTNodeTree();
|
| -
|
| - // 10.1 - 10.10
|
| - VTTDisplayParameters displayParameters = calculateDisplayParameters();
|
| -
|
| - // 10.11. Apply the terms of the CSS specifications to nodes within the
|
| - // following constraints, thus obtaining a set of CSS boxes positioned
|
| - // relative to an initial containing block:
|
| - displayTree->removeChildren();
|
| + ASSERT(track() && track()->isRendered() && isActive());
|
|
|
| - // The document tree is the tree of WebVTT Node Objects rooted at nodes.
|
| + if (!m_displayTree) {
|
| + m_displayTree = VTTCueBox::create(document(), this);
|
| + m_displayTree->appendChild(m_cueBackgroundBox);
|
| + }
|
|
|
| - // The children of the nodes must be wrapped in an anonymous box whose
|
| - // 'display' property has the value 'inline'. This is the WebVTT cue
|
| - // background box.
|
| + ASSERT(m_displayTree->firstChild() == m_cueBackgroundBox);
|
|
|
| - // Note: This is contained by default in m_cueBackgroundBox.
|
| - m_cueBackgroundBox->setShadowPseudoId(cueShadowPseudoId());
|
| - displayTree->appendChild(m_cueBackgroundBox);
|
| + // Note: It is updateDisplayTree() which actually adds the child
|
| + // nodes to m_cueBackgroundBox.
|
|
|
| - // FIXME(BUG 79916): Runs of children of WebVTT Ruby Objects that are not
|
| - // WebVTT Ruby Text Objects must be wrapped in anonymous boxes whose
|
| - // 'display' property has the value 'ruby-base'.
|
| + if (!m_displayTreeShouldChange)
|
| + return m_displayTree;
|
|
|
| - // FIXME(BUG 79916): Text runs must be wrapped according to the CSS
|
| - // line-wrapping rules, except that additionally, regardless of the value of
|
| - // the 'white-space' property, lines must be wrapped at the edge of their
|
| - // containing blocks, even if doing so requires splitting a word where there
|
| - // is no line breaking opportunity. (Thus, normally text wraps as needed,
|
| - // but if there is a particularly long word, it does not overflow as it
|
| - // normally would in CSS, it is instead forcibly wrapped at the box's edge.)
|
| - displayTree->applyCSSProperties(displayParameters);
|
| + createVTTNodeTree();
|
| + VTTDisplayParameters displayParameters = calculateDisplayParameters();
|
| + m_displayTree->applyCSSProperties(displayParameters);
|
|
|
| m_displayTreeShouldChange = false;
|
|
|
| - // 10.15. Let cue's text track cue display state have the CSS boxes in
|
| - // boxes.
|
| - return displayTree.release();
|
| + return m_displayTree;
|
| }
|
|
|
| void VTTCue::removeDisplayTree(RemovalNotification removalNotification)
|
| @@ -858,6 +832,8 @@ void VTTCue::removeDisplayTree(RemovalNotification removalNotification)
|
|
|
| void VTTCue::updateDisplay(HTMLDivElement& container)
|
| {
|
| + ASSERT(track() && track()->isRendered() && isActive());
|
| +
|
| UseCounter::count(document(), UseCounter::VTTCueRender);
|
|
|
| if (m_writingDirection != Horizontal)
|
|
|