Changeset 84759 in webkit


Ignore:
Timestamp:
Apr 24, 2011 2:20:42 PM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2011-04-24 Dominic Cooney <dominicc@chromium.org>

Reviewed by Dimitri Glazkov.

Crash when adding a text node to a shadow root
https://bugs.webkit.org/show_bug.cgi?id=59304

  • fast/dom/shadow/append-child-text-expected.txt: Added.
  • fast/dom/shadow/append-child-text.html: Added.

2011-04-24 Dominic Cooney <dominicc@chromium.org>

Reviewed by Dimitri Glazkov.

Crash when adding a text node to a shadow root
https://bugs.webkit.org/show_bug.cgi?id=59304

Text nodes need to consult their host element for style.

Test: fast/dom/shadow/append-child-text.html

  • dom/Node.cpp: (WebCore::NodeRendererFactory::styleForRenderer): (WebCore::NodeRendererFactory::createRendererAndStyle): (WebCore::Node::styleForRenderer): forward to NodeRendererFactory
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r84758 r84759  
     12011-04-24  Dominic Cooney  <dominicc@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        Crash when adding a text node to a shadow root
     6        https://bugs.webkit.org/show_bug.cgi?id=59304
     7
     8        * fast/dom/shadow/append-child-text-expected.txt: Added.
     9        * fast/dom/shadow/append-child-text.html: Added.
     10
    1112011-04-24  Adam Barth  <abarth@webkit.org>
    212
  • trunk/Source/WebCore/ChangeLog

    r84758 r84759  
     12011-04-24  Dominic Cooney  <dominicc@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        Crash when adding a text node to a shadow root
     6        https://bugs.webkit.org/show_bug.cgi?id=59304
     7
     8        Text nodes need to consult their host element for style.
     9
     10        Test: fast/dom/shadow/append-child-text.html
     11
     12        * dom/Node.cpp:
     13        (WebCore::NodeRendererFactory::styleForRenderer):
     14        (WebCore::NodeRendererFactory::createRendererAndStyle):
     15        (WebCore::Node::styleForRenderer): forward to NodeRendererFactory
     16
    1172011-04-24  Adam Barth  <abarth@webkit.org>
    218
  • trunk/Source/WebCore/dom/Node.cpp

    r84747 r84759  
    14841484    ContainerNode* parentNodeForRenderingAndStyle() const { return m_parentNodeForRenderingAndStyle; }
    14851485    void createRendererIfNeeded();
     1486    PassRefPtr<RenderStyle> styleForRenderer();
    14861487
    14871488private:
     
    14971498    ShadowRoot* m_visualParentShadowRoot;
    14981499};
     1500
     1501PassRefPtr<RenderStyle> NodeRendererFactory::styleForRenderer()
     1502{
     1503    if (m_node->isElementNode()) {
     1504        bool allowSharing = true;
     1505#if ENABLE(XHTMLMP)
     1506        // noscript needs the display property protected - it's a special case
     1507        allowSharing = m_node->localName() != HTMLNames::noscriptTag.localName();
     1508#endif
     1509        return m_node->document()->styleSelector()->styleForElement(static_cast<Element*>(m_node), 0, allowSharing);
     1510    }
     1511    ContainerNode* parentNodeForStyle = parentNodeForRenderingAndStyle();
     1512    return parentNodeForStyle && parentNodeForStyle->renderer() ? parentNodeForStyle->renderer()->style() : 0;
     1513}
    14991514
    15001515ContainerNode* NodeRendererFactory::findVisualParent()
     
    15571572        return 0;
    15581573
    1559     RefPtr<RenderStyle> style = m_node->styleForRenderer();
     1574    RefPtr<RenderStyle> style = styleForRenderer();
    15601575    if (!m_node->rendererIsNeeded(style.get()))
    15611576        return 0;
     
    16221637PassRefPtr<RenderStyle> Node::styleForRenderer()
    16231638{
    1624     if (isElementNode()) {
    1625         bool allowSharing = true;
    1626 #if ENABLE(XHTMLMP)
    1627         // noscript needs the display property protected - it's a special case
    1628         allowSharing = localName() != HTMLNames::noscriptTag.localName();
    1629 #endif
    1630         return document()->styleSelector()->styleForElement(static_cast<Element*>(this), 0, allowSharing);
    1631     }
    1632     return parentNode() && parentNode()->renderer() ? parentNode()->renderer()->style() : 0;
     1639    return NodeRendererFactory(this).styleForRenderer();
    16331640}
    16341641
Note: See TracChangeset for help on using the changeset viewer.