PassRefPtrWillBeRawPtr<VTTCueBox> VTTCue::getDisplayTree(const IntSize& videoSize) { RefPtrWillBeRawPtr<VTTCueBox> displayTree(ensureDisplayTree()); if (!m_displayTreeShouldChange || !track()->isRendered()) return displayTree.release(); // 10.1 - 10.10 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(); // The document tree is the tree of WebVTT Node Objects rooted at nodes. // 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. // Note: This is contained by default in m_cueBackgroundBox. m_cueBackgroundBox->setShadowPseudoId(cueShadowPseudoId()); displayTree->appendChild(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'. // 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(videoSize); m_displayTreeShouldChange = false; // 10.15. Let cue's text track cue display state have the CSS boxes in // boxes. return displayTree.release(); }
VTTCueBox* VTTCue::getDisplayTree(const IntSize& videoSize, int fontSize) { RefPtr<VTTCueBox> displayTree = displayTreeInternal(); if (!m_displayTreeShouldChange || !track()->isRendered()) return displayTree.get(); // 10.1 - 10.10 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(); // The document tree is the tree of WebVTT Node Objects rooted at nodes. // 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. // Note: This is contained by default in m_cueHighlightBox. m_cueHighlightBox->setPseudo(cueShadowPseudoId()); m_cueBackdropBox->setPseudo(cueBackdropShadowPseudoId()); m_cueBackdropBox->appendChild(m_cueHighlightBox, ASSERT_NO_EXCEPTION); displayTree->appendChild(m_cueBackdropBox, ASSERT_NO_EXCEPTION); // 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'. displayTree->setFontSizeFromCaptionUserPrefs(fontSize); displayTree->applyCSSProperties(videoSize); m_displayTreeShouldChange = false; // 10.15. Let cue's text track cue display state have the CSS boxes in // boxes. return displayTree.get(); }