Example #1
0
PassRefPtrWillBeRawPtr<VTTCueBox> VTTCue::getDisplayTree()
{
    ASSERT(track() && track()->isRendered() && isActive());

    if (!m_displayTree) {
        m_displayTree = VTTCueBox::create(document(), this);
        m_displayTree->appendChild(m_cueBackgroundBox);
    }

    ASSERT(m_displayTree->firstChild() == m_cueBackgroundBox);

    if (!m_displayTreeShouldChange) {
        // Apply updated user style overrides for text tracks when display tree doesn't change.
        // This ensures that the track settings are refreshed when the video is
        // replayed or when the user slides back to an already rendered track.
        applyUserOverrideCSSProperties();
        return m_displayTree;
    }

    createVTTNodeTree();

    m_cueBackgroundBox->removeChildren();
    m_vttNodeTree->cloneChildNodes(m_cueBackgroundBox.get());

    VTTDisplayParameters displayParameters = calculateDisplayParameters();
    m_displayTree->applyCSSProperties(displayParameters);

    // Apply user override settings for text tracks
    applyUserOverrideCSSProperties();

    m_displayTreeShouldChange = false;

    return m_displayTree;
}
Example #2
0
VTTCueBox* VTTCue::getDisplayTree()
{
    ASSERT(track() && track()->isRendered() && isActive());

    if (!m_displayTree) {
        m_displayTree = VTTCueBox::create(document());
        m_displayTree->appendChild(m_cueBackgroundBox);
    }

    ASSERT(m_displayTree->firstChild() == m_cueBackgroundBox);

    if (!m_displayTreeShouldChange) {
        // Apply updated user style overrides for text tracks when display tree doesn't change.
        // This ensures that the track settings are refreshed when the video is
        // replayed or when the user slides back to an already rendered track.
        applyUserOverrideCSSProperties();
        return m_displayTree;
    }

    createVTTNodeTree();

    m_cueBackgroundBox->removeChildren();
    m_vttNodeTree->cloneChildNodes(m_cueBackgroundBox.get());

    // TODO(philipj): The region identifier may be non-empty without there being
    // a corresponding region, in which case this VTTCueBox will be added
    // directly to the text track container in updateDisplay().
    if (regionId().isEmpty()) {
        VTTDisplayParameters displayParameters = calculateDisplayParameters();
        m_displayTree->applyCSSProperties(displayParameters);
    } else {
        m_displayTree->setInlineStyleProperty(CSSPropertyPosition, CSSValueRelative);
    }

    // Apply user override settings for text tracks
    applyUserOverrideCSSProperties();

    m_displayTreeShouldChange = false;

    return m_displayTree;
}