Changeset 69159 in webkit


Ignore:
Timestamp:
Oct 5, 2010 4:15:11 PM (14 years ago)
Author:
commit-queue@webkit.org
Message:

2010-10-05 Sanjeev Radhakrishnan <sanjeevr@chromium.org>

Reviewed by Darin Fisher.

PluginDocument now holds on to the created plugin node so that the pluginNode() and pluginWidget() methods can return the correct node.
https://bugs.webkit.org/show_bug.cgi?id=47129

  • html/PluginDocument.cpp: (WebCore::PluginDocumentParser::createDocumentStructure): (WebCore::PluginDocument::pluginWidget): (WebCore::PluginDocument::pluginNode):
  • html/PluginDocument.h: (WebCore::PluginDocument::setPluginNode):
Location:
trunk/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r69149 r69159  
     12010-10-05  Sanjeev Radhakrishnan  <sanjeevr@chromium.org>
     2
     3        Reviewed by Darin Fisher.
     4
     5        PluginDocument now holds on to the created plugin node so that the pluginNode() and pluginWidget() methods can return the correct node.
     6        https://bugs.webkit.org/show_bug.cgi?id=47129
     7
     8        * html/PluginDocument.cpp:
     9        (WebCore::PluginDocumentParser::createDocumentStructure):
     10        (WebCore::PluginDocument::pluginWidget):
     11        (WebCore::PluginDocument::pluginNode):
     12        * html/PluginDocument.h:
     13        (WebCore::PluginDocument::setPluginNode):
     14
    1152010-10-05  Andreas Kling  <kling@webkit.org>
    216
  • trunk/WebCore/html/PluginDocument.cpp

    r69097 r69159  
    5151    }
    5252
    53     static Widget* pluginWidgetFromDocument(Document*);
    54    
    5553private:
    5654    PluginDocumentParser(Document* document)
     
    6664    HTMLEmbedElement* m_embedElement;
    6765};
    68 
    69 Widget* PluginDocumentParser::pluginWidgetFromDocument(Document* doc)
    70 {
    71     ASSERT(doc);
    72     RefPtr<Element> body = doc->body();
    73     if (body) {
    74         RefPtr<NodeList> embedNodes = body->getElementsByTagName("embed");
    75         ASSERT(embedNodes && embedNodes->length());
    76         Node* node = embedNodes->item(0);
    77         if (node && node->renderer()) {
    78             ASSERT(node->renderer()->isEmbeddedObject());
    79             return toRenderEmbeddedObject(node->renderer())->widget();
    80         }
    81     }
    82     return 0;
    83 }
    8466
    8567void PluginDocumentParser::createDocumentStructure()
     
    11193    m_embedElement->setAttribute(srcAttr, document()->url().string());
    11294    m_embedElement->setAttribute(typeAttr, document()->frame()->loader()->writer()->mimeType());
    113    
     95
     96    static_cast<PluginDocument*>(document())->setPluginNode(m_embedElement);
     97
    11498    body->appendChild(embedElement, ec);   
    11599}
     
    160144Widget* PluginDocument::pluginWidget()
    161145{
    162     return PluginDocumentParser::pluginWidgetFromDocument(this);
     146    if (m_pluginNode && m_pluginNode->renderer()) {
     147        ASSERT(m_pluginNode->renderer()->isEmbeddedObject());
     148        return toRenderEmbeddedObject(m_pluginNode->renderer())->widget();
     149    }
     150    return 0;
    163151}
    164152
    165153Node* PluginDocument::pluginNode()
    166154{
    167     RefPtr<Element> body_element = body();
    168     if (body_element)
    169         return body_element->firstChild();
    170 
    171     return 0;
     155    return m_pluginNode.get();
    172156}
    173157
  • trunk/WebCore/html/PluginDocument.h

    r68702 r69159  
    3939    }
    4040
     41    void setPluginNode(Node* pluginNode) { m_pluginNode = pluginNode; }
     42
    4143    Widget* pluginWidget();
    4244    Node* pluginNode();
     
    5658
    5759    bool m_shouldLoadPluginManually;
     60    RefPtr<Node> m_pluginNode;
    5861};
    5962
Note: See TracChangeset for help on using the changeset viewer.