⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 295185 in webkit


Ignore:
Timestamp:
Jun 2, 2022, 11:45:32 PM (4 years ago)
Author:
Alan Coon
Message:

Cherry-pick 8cfadef7857b. rdar://problem/93512736

TextTrackCue should get its document for its ActiveDOMObject base class
​https://bugs.webkit.org/show_bug.cgi?id=240660
<rdar://93512736>

Reviewed by Eric Carlson.

TextTrackCue should get its document for its ActiveDOMObject base class instead
of requiring an extra data member to store it.

  • Source/WebCore/html/track/TextTrackCue.cpp: (WebCore::TextTrackCue::TextTrackCue): (WebCore::TextTrackCue::scriptExecutionContext const): (WebCore::TextTrackCue::document const): (WebCore::TextTrackCue::getCueAsHTML): (WebCore::TextTrackCue::rebuildDisplayTree):
  • Source/WebCore/html/track/TextTrackCue.h: (WebCore::TextTrackCue::ownerDocument): Deleted.
  • Source/WebCore/html/track/TextTrackCueGeneric.cpp: (WebCore::TextTrackCueGeneric::createDisplayTree): (WebCore::TextTrackCueGeneric::setFontSize):
  • Source/WebCore/html/track/TextTrackCueGeneric.h:
  • Source/WebCore/html/track/VTTCue.cpp: (WebCore::VTTCue::VTTCue): (WebCore::VTTCue::initialize): (WebCore::VTTCue::createDisplayTree): (WebCore::VTTCue::displayTreeInternal): (WebCore::VTTCue::createWebVTTNodeTree): (WebCore::VTTCue::getCueAsHTML): (WebCore::VTTCue::createCueRenderingTree): (WebCore::VTTCue::getDisplayTree): (WebCore::VTTCue::removeDisplayTree):
  • Source/WebCore/html/track/VTTCue.h:

Canonical link: ​https://commits.webkit.org/250757@main
git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@294498 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Location:
branches/safari-613-branch/Source/WebCore/html/track
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-613-branch/Source/WebCore/html/track/TextTrackCue.cpp

    r284093 r295185  
    217217    , m_startTime(start)
    218218    , m_endTime(end)
    219     , m_document(document)
    220219    , m_cueNode(WTFMove(cueFragment))
    221220{
    … …  
    226225    , m_startTime(start)
    227226    , m_endTime(end)
    228     , m_document(document)
    229227{
    230228}
    … …  
    232230ScriptExecutionContext* TextTrackCue::scriptExecutionContext() const
    233231{
    234     return &m_document;
     232    return ActiveDOMObject::scriptExecutionContext();
     233}
     234
     235Document* TextTrackCue::document() const
     236{
     237    return downcast<Document>(scriptExecutionContext());
    235238}
    236239
    … …  
    437440        return nullptr;
    438441
    439     auto clonedFragment = DocumentFragment::create(ownerDocument());
     442    auto* document = this->document();
     443    if (!document)
     444        return nullptr;
     445
     446    auto clonedFragment = DocumentFragment::create(*document);
    440447    m_cueNode->cloneChildNodes(clonedFragment);
    441448
    … …  
    486493        return;
    487494
     495    RefPtr document = this->document();
     496    if (!document)
     497        return;
     498
    488499    ScriptDisallowedScope::EventAllowedScope allowedScopeForReferenceTree(*m_cueNode);
    489500
    490501    if (!m_displayTree) {
    491         m_displayTree = TextTrackCueBox::create(ownerDocument(), *this);
     502        m_displayTree = TextTrackCueBox::create(*document, *this);
    492503        m_displayTree->setPseudo(ShadowPseudoIds::webkitGenericCueRoot());
    493504    }
    494505
    495506    m_displayTree->removeChildren();
    496     auto clonedFragment = DocumentFragment::create(ownerDocument());
     507    auto clonedFragment = DocumentFragment::create(*document);
    497508    m_cueNode->cloneChildNodes(clonedFragment);
    498509    m_displayTree->appendChild(clonedFragment);
    499510
    500511    if (m_fontSize) {
    501         if (auto page = ownerDocument().page()) {
    502             auto style = HTMLStyleElement::create(HTMLNames::styleTag, ownerDocument(), false);
     512        if (auto page = document->page()) {
     513            auto style = HTMLStyleElement::create(HTMLNames::styleTag, *document, false);
    503514            style->setTextContent(makeString(page->captionUserPreferencesStyleSheet(),
    504515                " ::", ShadowPseudoIds::cue(), "{font-size:", m_fontSize, m_fontSizeIsImportant ? "px !important}" : "px}"));
  • branches/safari-613-branch/Source/WebCore/html/track/TextTrackCue.h

    r283851 r295185  
    127127    TextTrackCue(Document&, const MediaTime& start, const MediaTime& end);
    128128
    129     Document& ownerDocument() { return m_document; }
     129    Document* document() const;
    130130
    131131    virtual bool cueContentsMatch(const TextTrackCue&) const;
    … …  
    154154
    155155    TextTrack* m_track { nullptr };
    156 
    157     Document& m_document;
    158156
    159157    RefPtr<DocumentFragment> m_cueNode;
  • branches/safari-613-branch/Source/WebCore/html/track/TextTrackCueGeneric.cpp

    r280648 r295185  
    172172}
    173173
    174 Ref<VTTCueBox> TextTrackCueGeneric::createDisplayTree()
    175 {
    176     return TextTrackCueGenericBoxElement::create(ownerDocument(), *this);
     174RefPtr<VTTCueBox> TextTrackCueGeneric::createDisplayTree()
     175{
     176    if (auto* document = this->document())
     177        return TextTrackCueGenericBoxElement::create(*document, *this);
     178    return nullptr;
    177179}
    178180
    … …  
    206208    if (fontSizeMultiplier())
    207209        size *= fontSizeMultiplier() / 100;
    208     displayTreeInternal().setInlineStyleProperty(CSSPropertyFontSize, lround(size), CSSUnitType::CSS_PX);
     210    if (auto* displayTree = displayTreeInternal())
     211        displayTree->setInlineStyleProperty(CSSPropertyFontSize, lround(size), CSSUnitType::CSS_PX);
    209212}
    210213
  • branches/safari-613-branch/Source/WebCore/html/track/TextTrackCueGeneric.h

    r270738 r295185  
    7070    bool isPositionedAbove(const TextTrackCue*) const final;
    7171
    72     Ref<VTTCueBox> createDisplayTree() final;
     72    RefPtr<VTTCueBox> createDisplayTree() final;
    7373
    7474    bool cueContentsMatch(const TextTrackCue&) const final;
  • branches/safari-613-branch/Source/WebCore/html/track/VTTCue.cpp

    r286743 r295185  
    272272    , m_originalStartTime(MediaTime::zeroTime())
    273273{
    274     initialize();
     274    initialize(document);
    275275}
    276276
    … …  
    279279    , m_originalStartTime(cueData.originalStartTime())
    280280{
    281     initialize();
     281    initialize(document);
    282282    setText(cueData.content());
    283283    setStartTime(cueData.startTime());
    … …  
    291291}
    292292
    293 void VTTCue::initialize()
    294 {
    295     m_cueBackdropBox = HTMLDivElement::create(ownerDocument());
    296     m_cueHighlightBox = HTMLSpanElement::create(spanTag, ownerDocument());
     293void VTTCue::initialize(Document& document)
     294{
     295    m_cueBackdropBox = HTMLDivElement::create(document);
     296    m_cueHighlightBox = HTMLSpanElement::create(spanTag, document);
    297297    m_snapToLines = true;
    298298    m_displayTreeShouldChange = true;
    … …  
    300300}
    301301
    302 Ref<VTTCueBox> VTTCue::createDisplayTree()
    303 {
    304     return VTTCueBox::create(ownerDocument(), *this);
    305 }
    306 
    307 VTTCueBox& VTTCue::displayTreeInternal()
     302RefPtr<VTTCueBox> VTTCue::createDisplayTree()
     303{
     304    if (auto* document = this->document())
     305        return VTTCueBox::create(*document, *this);
     306    return nullptr;
     307}
     308
     309VTTCueBox* VTTCue::displayTreeInternal()
    308310{
    309311    if (!m_displayTree)
    310312        m_displayTree = createDisplayTree();
    311     return *m_displayTree;
     313    return m_displayTree.get();
    312314}
    313315
    … …  
    594596void VTTCue::createWebVTTNodeTree()
    595597{
    596     if (!m_webVTTNodeTree)
    597         m_webVTTNodeTree = WebVTTParser::createDocumentFragmentFromCueText(ownerDocument(), m_content);
     598    if (!m_webVTTNodeTree && document())
     599        m_webVTTNodeTree = WebVTTParser::createDocumentFragmentFromCueText(*document(), m_content);
    598600}
    599601
    … …  
    618620        return nullptr;
    619621
    620     auto clonedFragment = DocumentFragment::create(ownerDocument());
     622    auto* document = this->document();
     623    if (!document)
     624        return nullptr;
     625
     626    auto clonedFragment = DocumentFragment::create(*document);
    621627    copyWebVTTNodeToDOMTree(*m_webVTTNodeTree, clonedFragment);
    622628    return clonedFragment;
    … …  
    629635        return nullptr;
    630636
    631     auto clonedFragment = DocumentFragment::create(ownerDocument());
     637    auto* document = this->document();
     638    if (!document)
     639        return nullptr;
     640
     641    auto clonedFragment = DocumentFragment::create(*document);
    632642
    633643    // The cloned fragment is never exposed to author scripts so it's safe to dispatch events here.
    … …  
    967977RefPtr<TextTrackCueBox> VTTCue::getDisplayTree(const IntSize& videoSize, int fontSize)
    968978{
    969     Ref<VTTCueBox> displayTree = displayTreeInternal();
    970     if (!m_displayTreeShouldChange || !track()->isRendered())
     979    RefPtr displayTree = displayTreeInternal();
     980    if (!displayTree || !m_displayTreeShouldChange || !track()->isRendered())
    971981        return displayTree;
    972982
    … …  
    10411051    }
    10421052
     1053    RefPtr displayTree = displayTreeInternal();
     1054    if (!displayTree)
     1055        return;
     1056
    10431057    // The display tree is never exposed to author scripts so it's safe to dispatch events here.
    1044     ScriptDisallowedScope::EventAllowedScope allowedScope(displayTreeInternal());
    1045     displayTreeInternal().remove();
     1058    ScriptDisallowedScope::EventAllowedScope allowedScope(*displayTree);
     1059    displayTree->remove();
    10461060}
    10471061
  • branches/safari-613-branch/Source/WebCore/html/track/VTTCue.h

    r286743 r295185  
    196196    bool cueContentsMatch(const TextTrackCue&) const override;
    197197
    198     virtual Ref<VTTCueBox> createDisplayTree();
    199     VTTCueBox& displayTreeInternal();
     198    virtual RefPtr<VTTCueBox> createDisplayTree();
     199    VTTCueBox* displayTreeInternal();
    200200
    201201    void toJSON(JSON::Object&) const override;
    … …  
    204204    VTTCue(Document&, const WebVTTCueData&);
    205205
    206     void initialize();
     206    void initialize(Document&);
    207207    void createWebVTTNodeTree();
    208208
Note: See TracChangeset for help on using the changeset viewer.