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

Changeset 121518 in webkit


Ignore:
Timestamp:
Jun 28, 2012, 11:00:56 PM (14 years ago)
Author:
morrita@google.com
Message:

[Refactoring] NodeRenderingContext ctor could be built on top of the ComposedShadowTreeWalker
https://bugs.webkit.org/show_bug.cgi?id=89732

Reviewed by Dimitri Glazkov.

.:

  • Source/autotools/symbols.filter:

Source/WebCore:

The constructor of NodeRenderingContext implements almost same
logic as ComposedShadowTreeWalker::parent(). This change
eliminates the duplication by employing ComposedShadowTreeWalker in the constructor.

ComposedShadowTreeWalker has same difference from
NodeRenderingContext though. So this change also extends
ComposedShadowTreeWalker to support these missing pieces, which
are encapsulated in newly introduced ParentTranversalDetails
class where:

  • not only the parent, but also the insertion point of the child is returned,
  • resetStyleInheritance from the child-parent traversal is computed and
  • if the starting point is out of the composition, it returns null as a parent.

This change also inlines some ComposedShadowTreeWalker methods for speed.

No new tests. Covered by existing tests.

  • WebCore.exp.in:
  • dom/ComposedShadowTreeWalker.cpp:

(WebCore::shadowOfParent):
(WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::didTraverseInsertionPoint):
(WebCore):
(WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::didTraverseShadowRoot):
(WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::didFindNode):
(WebCore::ComposedShadowTreeWalker::findParent):
(WebCore::ComposedShadowTreeWalker::escapeFallbackContentElement):
(WebCore::ComposedShadowTreeWalker::traverseNodeEscapingFallbackContents):
(WebCore::ComposedShadowTreeWalker::traverseParent):
(WebCore::ComposedShadowTreeWalker::traverseParentInCurrentTree):
(WebCore::ComposedShadowTreeWalker::traverseParentBackToYoungerShadowRootOrHost):

  • dom/ComposedShadowTreeWalker.h:

(ParentTranversalDetails):
(WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::ParentTranversalDetails):
(WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::node):
(WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::insertionPoint):
(WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::resetStyleInheritance):
(WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::outOfComposition):
(WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::childWasOutOfComposition):
(ComposedShadowTreeWalker):
(WebCore::ComposedShadowTreeWalker::ComposedShadowTreeWalker):
(WebCore):

  • dom/NodeRenderingContext.cpp:

(WebCore::NodeRenderingContext::NodeRenderingContext):
(WebCore::NodeRenderingContext::nextRenderer):
(WebCore::NodeRenderingContext::previousRenderer):
(WebCore::NodeRenderingContext::parentRenderer):
(WebCore::NodeRenderingContext::shouldCreateRenderer):
(WebCore::NodeRenderingContext::isOnEncapsulationBoundary):

  • dom/NodeRenderingContext.h:

(NodeRenderingContext):
(WebCore::NodeRenderingContext::parentNodeForRenderingAndStyle):
(WebCore::NodeRenderingContext::resetStyleInheritance):
(WebCore::NodeRenderingContext::insertionPoint):

Source/WebKit2:

  • win/WebKit2.def:
  • win/WebKit2CFLite.def:
Location:
trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r121516 r121518  
     12012-06-28  MORITA Hajime  <morrita@google.com>
     2
     3        [Refactoring] NodeRenderingContext ctor could be built on top of the ComposedShadowTreeWalker
     4        https://bugs.webkit.org/show_bug.cgi?id=89732
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        * Source/autotools/symbols.filter:
     9
    1102012-06-28  Jason Liu  <jason.liu@torchmobile.com.cn>
    211
  • trunk/Source/WebCore/ChangeLog

    r121513 r121518  
     12012-06-28  MORITA Hajime  <morrita@google.com>
     2
     3        [Refactoring] NodeRenderingContext ctor could be built on top of the ComposedShadowTreeWalker
     4        https://bugs.webkit.org/show_bug.cgi?id=89732
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        The constructor of NodeRenderingContext implements almost same
     9        logic as ComposedShadowTreeWalker::parent().  This change
     10        eliminates the duplication by employing ComposedShadowTreeWalker in the constructor.
     11
     12        ComposedShadowTreeWalker has same difference from
     13        NodeRenderingContext though. So this change also extends
     14        ComposedShadowTreeWalker to support these missing pieces, which
     15        are encapsulated in newly introduced ParentTranversalDetails
     16        class where:
     17
     18        - not only the parent, but also the insertion point of the child is returned,
     19        - resetStyleInheritance from the child-parent traversal is computed and
     20        - if the starting point is out of the composition, it returns null as a parent.
     21
     22        This change also inlines some ComposedShadowTreeWalker methods for speed.
     23
     24        No new tests. Covered by existing tests.
     25
     26        * WebCore.exp.in:
     27        * dom/ComposedShadowTreeWalker.cpp:
     28        (WebCore::shadowOfParent):
     29        (WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::didTraverseInsertionPoint):
     30        (WebCore):
     31        (WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::didTraverseShadowRoot):
     32        (WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::didFindNode):
     33        (WebCore::ComposedShadowTreeWalker::findParent):
     34        (WebCore::ComposedShadowTreeWalker::escapeFallbackContentElement):
     35        (WebCore::ComposedShadowTreeWalker::traverseNodeEscapingFallbackContents):
     36        (WebCore::ComposedShadowTreeWalker::traverseParent):
     37        (WebCore::ComposedShadowTreeWalker::traverseParentInCurrentTree):
     38        (WebCore::ComposedShadowTreeWalker::traverseParentBackToYoungerShadowRootOrHost):
     39        * dom/ComposedShadowTreeWalker.h:
     40        (ParentTranversalDetails):
     41        (WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::ParentTranversalDetails):
     42        (WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::node):
     43        (WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::insertionPoint):
     44        (WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::resetStyleInheritance):
     45        (WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::outOfComposition):
     46        (WebCore::ComposedShadowTreeWalker::ParentTranversalDetails::childWasOutOfComposition):
     47        (ComposedShadowTreeWalker):
     48        (WebCore::ComposedShadowTreeWalker::ComposedShadowTreeWalker):
     49        (WebCore):
     50        * dom/NodeRenderingContext.cpp:
     51        (WebCore::NodeRenderingContext::NodeRenderingContext):
     52        (WebCore::NodeRenderingContext::nextRenderer):
     53        (WebCore::NodeRenderingContext::previousRenderer):
     54        (WebCore::NodeRenderingContext::parentRenderer):
     55        (WebCore::NodeRenderingContext::shouldCreateRenderer):
     56        (WebCore::NodeRenderingContext::isOnEncapsulationBoundary):
     57        * dom/NodeRenderingContext.h:
     58        (NodeRenderingContext):
     59        (WebCore::NodeRenderingContext::parentNodeForRenderingAndStyle):
     60        (WebCore::NodeRenderingContext::resetStyleInheritance):
     61        (WebCore::NodeRenderingContext::insertionPoint):
     62
    1632012-06-28  Stephen White  <senorblanco@chromium.org>
    264
  • trunk/Source/WebCore/WebCore.exp.in

    r121125 r121518  
    588588__ZN7WebCore24ComposedShadowTreeWalker8previousEv
    589589__ZN7WebCore24ComposedShadowTreeWalker9lastChildEv
    590 __ZN7WebCore24ComposedShadowTreeWalkerC1EPKNS_4NodeENS0_6PolicyE
    591590__ZN7WebCore24DocumentMarkerController10markersForEPNS_4NodeENS_14DocumentMarker11MarkerTypesE
    592591__ZN7WebCore24DocumentMarkerController13removeMarkersENS_14DocumentMarker11MarkerTypesE
  • trunk/Source/WebCore/dom/ComposedShadowTreeWalker.cpp

    r121481 r121518  
    4444static inline ElementShadow* shadowOfParent(const Node* node)
    4545{
    46     if (node && node->parentNode())
    47         return shadowFor(node->parentNode());
    48     return 0;
    49 }
    50 
    51 ComposedShadowTreeWalker::ComposedShadowTreeWalker(const Node* node, Policy policy)
    52     : m_node(node)
    53     , m_policy(policy)
    54 {
    55 #ifndef NDEBUG
    56     if (m_node)
    57         assertPrecondition();
    58 #endif
     46    if (!node)
     47        return 0;
     48    if (Node* parent = node->parentNode())
     49        if (parent->isElementNode())
     50            return toElement(parent)->shadow();
     51    return 0;
     52}
     53
     54inline void ComposedShadowTreeWalker::ParentTranversalDetails::didTraverseInsertionPoint(InsertionPoint* insertionPoint)
     55{
     56    if (!m_insertionPoint)
     57        m_insertionPoint = insertionPoint;
     58}
     59
     60inline void ComposedShadowTreeWalker::ParentTranversalDetails::didTraverseShadowRoot(const ShadowRoot* root)
     61{
     62    m_resetStyleInheritance  = m_resetStyleInheritance || root->resetStyleInheritance();
     63}
     64
     65inline void ComposedShadowTreeWalker::ParentTranversalDetails::didFindNode(ContainerNode* node)
     66{
     67    if (!m_outOfComposition)
     68        m_node = node;
    5969}
    6070
     
    6474    walker.firstChild();
    6575    return walker;
     76}
     77
     78void ComposedShadowTreeWalker::findParent(const Node* node, ParentTranversalDetails* details)
     79{
     80    ComposedShadowTreeWalker walker(node, CrossUpperBoundary, CanStartFromShadowBoundary);
     81    ContainerNode* found = toContainerNode(walker.traverseParent(walker.get(), details));
     82    if (found)
     83        details->didFindNode(found);
    6684}
    6785
     
    178196}
    179197
    180 Node* ComposedShadowTreeWalker::escapeFallbackContentElement(const Node* node, TraversalDirection direction)
     198inline Node* ComposedShadowTreeWalker::escapeFallbackContentElement(const Node* node, TraversalDirection direction)
    181199{
    182200    ASSERT(node);
     
    186204}
    187205
    188 Node* ComposedShadowTreeWalker::traverseNodeEscapingFallbackContents(const Node* node) const
     206inline Node* ComposedShadowTreeWalker::traverseNodeEscapingFallbackContents(const Node* node, ParentTranversalDetails* details) const
    189207{
    190208    ASSERT(node);
     
    193211    const InsertionPoint* insertionPoint = toInsertionPoint(node);
    194212    return insertionPoint->hasDistribution() ? 0 :
    195         insertionPoint->isActive() ? traverseParent(node) : const_cast<Node*>(node);
     213        insertionPoint->isActive() ? traverseParent(node, details) : const_cast<Node*>(node);
    196214}
    197215
     
    203221}
    204222
    205 Node* ComposedShadowTreeWalker::traverseParent(const Node* node) const
     223inline Node* ComposedShadowTreeWalker::traverseParent(const Node* node, ParentTranversalDetails* details) const
    206224{
    207225    if (!canCrossUpperBoundary() && node->isShadowRoot()) {
     
    210228    }
    211229    if (ElementShadow* shadow = shadowOfParent(node)) {
    212         if (InsertionPoint* insertionPoint = shadow->insertionPointFor(node))
    213             return traverseParent(insertionPoint);
    214     }
    215     return traverseParentInCurrentTree(node);
    216 }
    217 
    218 Node* ComposedShadowTreeWalker::traverseParentInCurrentTree(const Node* node) const
     230        shadow->ensureDistribution();
     231        if (InsertionPoint* insertionPoint = shadow->insertionPointFor(node)) {
     232            if (details)
     233                details->didTraverseInsertionPoint(insertionPoint);
     234            return traverseParent(insertionPoint, details);
     235        }
     236
     237        // The node is a non-distributed light child or older shadow's child.
     238        if (details)
     239            details->childWasOutOfComposition();
     240    }
     241    return traverseParentInCurrentTree(node, details);
     242}
     243
     244inline Node* ComposedShadowTreeWalker::traverseParentInCurrentTree(const Node* node, ParentTranversalDetails* details) const
    219245{
    220246    if (Node* parent = node->parentNode())
    221         return parent->isShadowRoot() ? traverseParentBackToYoungerShadowRootOrHost(toShadowRoot(parent)) : traverseNodeEscapingFallbackContents(parent);
    222     return 0;
    223 }
    224 
    225 Node* ComposedShadowTreeWalker::traverseParentBackToYoungerShadowRootOrHost(const ShadowRoot* shadowRoot) const
     247        return parent->isShadowRoot() ? traverseParentBackToYoungerShadowRootOrHost(toShadowRoot(parent), details) : traverseNodeEscapingFallbackContents(parent, details);
     248    return 0;
     249}
     250
     251inline Node* ComposedShadowTreeWalker::traverseParentBackToYoungerShadowRootOrHost(const ShadowRoot* shadowRoot, ParentTranversalDetails* details) const
    226252{
    227253    ASSERT(shadowRoot);
    228254    if (shadowRoot->isYoungest()) {
    229         if (canCrossUpperBoundary())
     255        if (canCrossUpperBoundary()) {
     256            if (details)
     257                details->didTraverseShadowRoot(shadowRoot);
    230258            return shadowRoot->host();
     259        }
     260
    231261        return const_cast<ShadowRoot*>(shadowRoot);
    232262    }
    233     InsertionPoint* assignedInsertionPoint = shadowRoot->assignedTo();
    234     return assignedInsertionPoint ? traverseParent(assignedInsertionPoint) : 0;
     263
     264    if (InsertionPoint* assignedInsertionPoint = shadowRoot->assignedTo()) {
     265        if (details)
     266            details->didTraverseShadowRoot(shadowRoot);
     267        return traverseParent(assignedInsertionPoint, details);
     268    }
     269
     270    return 0;
    235271}
    236272
  • trunk/Source/WebCore/dom/ComposedShadowTreeWalker.h

    r118890 r121518  
    4545    };
    4646
    47     ComposedShadowTreeWalker(const Node*, Policy = CrossUpperBoundary);
     47    enum StartPolicy {
     48        CanStartFromShadowBoundary,
     49        CannotStartFromShadowBoundary
     50    };
     51
     52    class ParentTranversalDetails {
     53    public:
     54        ParentTranversalDetails()
     55            : m_node(0)
     56            , m_insertionPoint(0)
     57            , m_resetStyleInheritance(false)
     58            , m_outOfComposition(false)
     59        { }
     60
     61        ContainerNode* node() const { return m_node; }
     62        InsertionPoint* insertionPoint() const { return m_insertionPoint; }
     63        bool resetStyleInheritance() const { return m_resetStyleInheritance; }
     64        bool outOfComposition() const { return m_outOfComposition; }
     65
     66        void didFindNode(ContainerNode*);
     67        void didTraverseInsertionPoint(InsertionPoint*);
     68        void didTraverseShadowRoot(const ShadowRoot*);
     69        void childWasOutOfComposition() { m_outOfComposition = true; }
     70
     71    private:
     72        ContainerNode* m_node;
     73        InsertionPoint* m_insertionPoint;
     74        bool m_resetStyleInheritance;
     75        bool m_outOfComposition;
     76    };
     77
     78    ComposedShadowTreeWalker(const Node*, Policy = CrossUpperBoundary, StartPolicy = CannotStartFromShadowBoundary);
    4879
    4980    // For a common use case such as:
    5081    // for (ComposedShadowTreeWalker walker = ComposedShadowTreeWalker::fromFirstChild(node); walker.get(); walker.nextSibling())
    5182    static ComposedShadowTreeWalker fromFirstChild(const Node*, Policy = CrossUpperBoundary);
     83    static void findParent(const Node*, ParentTranversalDetails*);
    5284
    5385    Node* get() const { return const_cast<Node*>(m_node); }
     
    6597
    6698private:
     99    ComposedShadowTreeWalker(const Node*, ParentTranversalDetails*);
     100
    67101    enum TraversalDirection {
    68102        TraversalDirectionForward,
     
    98132    Node* traverseLastChild(const Node*) const;
    99133    Node* traverseChild(const Node*, TraversalDirection) const;
    100     Node* traverseParent(const Node*) const;
     134    Node* traverseParent(const Node*, ParentTranversalDetails* = 0) const;
    101135
    102136    static Node* traverseNextSibling(const Node*);
     
    109143    static Node* escapeFallbackContentElement(const Node*, TraversalDirection);
    110144
    111     Node* traverseNodeEscapingFallbackContents(const Node*) const;
    112     Node* traverseParentInCurrentTree(const Node*) const;
    113     Node* traverseParentBackToYoungerShadowRootOrHost(const ShadowRoot*) const;
     145    Node* traverseNodeEscapingFallbackContents(const Node*, ParentTranversalDetails* = 0) const;
     146    Node* traverseParentInCurrentTree(const Node*, ParentTranversalDetails* = 0) const;
     147    Node* traverseParentBackToYoungerShadowRootOrHost(const ShadowRoot*, ParentTranversalDetails* = 0) const;
    114148
    115149    const Node* m_node;
    116150    Policy m_policy;
    117151};
     152
     153inline ComposedShadowTreeWalker::ComposedShadowTreeWalker(const Node* node, Policy policy, StartPolicy startPolicy)
     154    : m_node(node)
     155    , m_policy(policy)
     156{
     157    UNUSED_PARAM(startPolicy);
     158#ifndef NDEBUG
     159    if (m_node && startPolicy == CannotStartFromShadowBoundary)
     160        assertPrecondition();
     161#endif
     162}
    118163
    119164// A special walker class which is only used for traversing a parent node, including
  • trunk/Source/WebCore/dom/NodeRenderingContext.cpp

    r121131 r121518  
    2727#include "NodeRenderingContext.h"
    2828
     29#include "ComposedShadowTreeWalker.h"
    2930#include "ContainerNode.h"
    3031#include "ContentDistributor.h"
     
    5455NodeRenderingContext::NodeRenderingContext(Node* node)
    5556    : m_node(node)
    56     , m_parentNodeForRenderingAndStyle(0)
    57     , m_resetStyleInheritance(false)
    58     , m_insertionPoint(0)
    5957    , m_style(0)
    6058    , m_parentFlowRenderer(0)
    6159{
    62     ContainerNode* parent = m_node->parentOrHostNode();
    63     if (!parent)
    64         return;
    65 
    66     if (parent->isShadowRoot() && toShadowRoot(parent)->isYoungest()) {
    67         m_parentNodeForRenderingAndStyle = toShadowRoot(parent)->host();
    68         m_resetStyleInheritance = toShadowRoot(parent)->resetStyleInheritance();
    69         return;
    70     }
    71 
    72     if (parent->isElementNode() || parent->isShadowRoot()) {
    73         ElementShadow* parentShadow = 0;
    74 
    75         if (parent->isElementNode())
    76             parentShadow = toElement(parent)->shadow();
    77         else if (parent->isShadowRoot())
    78             parentShadow = toShadowRoot(parent)->owner();
    79 
    80         if (parentShadow) {
    81             parentShadow->ensureDistribution();
    82 
    83             if (InsertionPoint* insertionPoint = parentShadow->insertionPointFor(m_node)) {
    84                 if (insertionPoint->shadowRoot()->isUsedForRendering()) {
    85                     NodeRenderingContext insertionPointContext(insertionPoint);
    86                     m_parentNodeForRenderingAndStyle = insertionPointContext.parentNodeForRenderingAndStyle();
    87                     m_resetStyleInheritance = insertionPointContext.resetStyleInheritance();
    88                     m_insertionPoint = insertionPoint;
    89                     return;
    90                 }
    91             }
    92 
    93             return;
    94         }
    95 
    96         if (isLowerEncapsulationBoundary(parent)) {
    97             ShadowRoot* parentScope = parent->shadowRoot();
    98             parentScope->owner()->ensureDistribution();
    99 
    100             // The shadow tree isn't part of composed tree.
    101             if (!parentScope->isUsedForRendering())
    102                 return;
    103 
    104             // the parent insertion point doesn't need any fallback content.
    105             if (toInsertionPoint(parent)->hasDistribution())
    106                 return;
    107 
    108             if (toInsertionPoint(parent)->isActive()) {
    109                 // Uses m_node as a fallback node of the insertion point.
    110                 NodeRenderingContext parentContext(parent);
    111                 m_parentNodeForRenderingAndStyle = parentContext.parentNodeForRenderingAndStyle();
    112                 m_resetStyleInheritance = parentContext.resetStyleInheritance();
    113                 return;
    114             }
    115 
    116             // The insertion point isn't active thus behaves as a plain old element.
    117             m_parentNodeForRenderingAndStyle = parent;
    118             return;
    119         }
    120     }
    121 
    122     m_parentNodeForRenderingAndStyle = parent;
     60    ComposedShadowTreeWalker::findParent(m_node, &m_parentDetails);
    12361}
    12462
    12563NodeRenderingContext::NodeRenderingContext(Node* node, RenderStyle* style)
    12664    : m_node(node)
    127     , m_parentNodeForRenderingAndStyle(0)
    128     , m_resetStyleInheritance(false)
    129     , m_insertionPoint(0)
    13065    , m_style(style)
    13166    , m_parentFlowRenderer(0)
     
    243178        return m_parentFlowRenderer->nextRendererForNode(m_node);
    244179
    245     if (m_insertionPoint) {
    246         if (RenderObject* found = nextRendererOfInsertionPoint(m_insertionPoint, m_node))
     180    if (m_parentDetails.insertionPoint()) {
     181        if (RenderObject* found = nextRendererOfInsertionPoint(m_parentDetails.insertionPoint(), m_node))
    247182            return found;
    248         return NodeRenderingContext(m_insertionPoint).nextRenderer();
     183        return NodeRenderingContext(m_parentDetails.insertionPoint()).nextRenderer();
    249184    }
    250185
     
    265200        return m_parentFlowRenderer->previousRendererForNode(m_node);
    266201
    267     if (m_insertionPoint) {
    268         if (RenderObject* found = previousRendererOfInsertionPoint(m_insertionPoint, m_node))
     202    if (m_parentDetails.insertionPoint()) {
     203        if (RenderObject* found = previousRendererOfInsertionPoint(m_parentDetails.insertionPoint(), m_node))
    269204            return found;
    270         return NodeRenderingContext(m_insertionPoint).previousRenderer();
     205        return NodeRenderingContext(m_parentDetails.insertionPoint()).previousRenderer();
    271206    }
    272207
     
    283218        return m_parentFlowRenderer;
    284219
    285     return m_parentNodeForRenderingAndStyle ? m_parentNodeForRenderingAndStyle->renderer() : 0;
     220    return m_parentDetails.node() ? m_parentDetails.node()->renderer() : 0;
    286221}
    287222
    288223bool NodeRenderingContext::shouldCreateRenderer() const
    289224{
    290     if (!m_parentNodeForRenderingAndStyle)
     225    if (!m_parentDetails.node())
    291226        return false;
    292227    RenderObject* parentRenderer = this->parentRenderer();
     
    295230    if (!parentRenderer->canHaveChildren())
    296231        return false;
    297     if (!m_parentNodeForRenderingAndStyle->childShouldCreateRenderer(*this))
     232    if (!m_parentDetails.node()->childShouldCreateRenderer(*this))
    298233        return false;
    299234    return true;
     
    328263bool NodeRenderingContext::isOnEncapsulationBoundary() const
    329264{
    330     return isOnUpperEncapsulationBoundary() || isLowerEncapsulationBoundary(m_insertionPoint) || isLowerEncapsulationBoundary(m_node->parentNode());
     265    return isOnUpperEncapsulationBoundary() || isLowerEncapsulationBoundary(m_parentDetails.insertionPoint()) || isLowerEncapsulationBoundary(m_node->parentNode());
    331266}
    332267
  • trunk/Source/WebCore/dom/NodeRenderingContext.h

    r121131 r121518  
    2727#define NodeRenderingContext_h
    2828
     29#include "ComposedShadowTreeWalker.h"
    2930#include <wtf/Noncopyable.h>
    3031#include <wtf/RefPtr.h>
     
    7071private:
    7172    Node* m_node;
    72     ContainerNode* m_parentNodeForRenderingAndStyle;
    73     bool m_resetStyleInheritance;
    74     InsertionPoint* m_insertionPoint;
     73    ComposedShadowTreeWalker::ParentTranversalDetails m_parentDetails;
    7574    RefPtr<RenderStyle> m_style;
    7675    RenderNamedFlowThread* m_parentFlowRenderer;
     
    8584inline ContainerNode* NodeRenderingContext::parentNodeForRenderingAndStyle() const
    8685{
    87     return m_parentNodeForRenderingAndStyle;
     86    return m_parentDetails.node();
    8887}
    8988
    9089inline bool NodeRenderingContext::resetStyleInheritance() const
    9190{
    92     return m_resetStyleInheritance;
     91    return m_parentDetails.resetStyleInheritance();
    9392}
    9493
     
    10099inline InsertionPoint* NodeRenderingContext::insertionPoint() const
    101100{
    102     return m_insertionPoint;
     101    return m_parentDetails.insertionPoint();
    103102}
    104103
  • trunk/Source/WebKit2/ChangeLog

    r121482 r121518  
     12012-06-28  MORITA Hajime  <morrita@google.com>
     2
     3        [Refactoring] NodeRenderingContext ctor could be built on top of the ComposedShadowTreeWalker
     4        https://bugs.webkit.org/show_bug.cgi?id=89732
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        * win/WebKit2.def:
     9        * win/WebKit2CFLite.def:
     10
    1112012-06-28  John Sullivan  <sullivan@apple.com>
    212
  • trunk/Source/WebKit2/win/WebKit2.def

    r120684 r121518  
    185185        ?inputTag@HTMLNames@WebCore@@3VQualifiedName@2@B
    186186        ?instrumentingAgentsForPage@InspectorInstrumentation@WebCore@@CAPAVInstrumentingAgents@2@PAVPage@2@@Z
     187        ?isActiveInsertionPoint@WebCore@@YA_NPBVNode@1@@Z
    187188        ?isCSSExclusionsEnabled@RuntimeEnabledFeatures@WebCore@@0_NA
    188189        ?isPreloaded@CachedResourceLoader@WebCore@@QBE_NABVString@WTF@@@Z
     
    191192        ?markersFor@DocumentMarkerController@WebCore@@QAE?AV?$Vector@PAVDocumentMarker@WebCore@@$0A@@WTF@@PAVNode@2@VMarkerTypes@DocumentMarker@2@@Z
    192193        ?nextSibling@ComposedShadowTreeWalker@WebCore@@QAEXXZ
    193         ??0ComposedShadowTreeWalker@WebCore@@QAE@PBVNode@1@W4Policy@01@@Z
    194194        ?firstChild@ComposedShadowTreeWalker@WebCore@@QAEXXZ
    195195        ?lastChild@ComposedShadowTreeWalker@WebCore@@QAEXXZ
     
    263263        ?webkitDidExitFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
    264264        ?isPageBoxVisible@Document@WebCore@@QAE_NH@Z
     265        ?isActive@InsertionPoint@WebCore@@QBE_NXZ
    265266        ?suspendAnimations@AnimationController@WebCore@@QAEXXZ
    266267        ?resumeAnimations@AnimationController@WebCore@@QAEXXZ
  • trunk/Source/WebKit2/win/WebKit2CFLite.def

    r120684 r121518  
    178178        ?inputTag@HTMLNames@WebCore@@3VQualifiedName@2@B
    179179        ?instrumentingAgentsForPage@InspectorInstrumentation@WebCore@@CAPAVInstrumentingAgents@2@PAVPage@2@@Z
     180        ?isActiveInsertionPoint@WebCore@@YA_NPBVNode@1@@Z
    180181        ?isCSSExclusionsEnabled@RuntimeEnabledFeatures@WebCore@@0_NA
    181182        ?isPreloaded@CachedResourceLoader@WebCore@@QBE_NABVString@WTF@@@Z
     
    184185        ?markersFor@DocumentMarkerController@WebCore@@QAE?AV?$Vector@PAVDocumentMarker@WebCore@@$0A@@WTF@@PAVNode@2@VMarkerTypes@DocumentMarker@2@@Z
    185186        ?nextSibling@ComposedShadowTreeWalker@WebCore@@QAEXXZ
    186         ??0ComposedShadowTreeWalker@WebCore@@QAE@PBVNode@1@W4Policy@01@@Z
    187187        ?firstChild@ComposedShadowTreeWalker@WebCore@@QAEXXZ
    188188        ?lastChild@ComposedShadowTreeWalker@WebCore@@QAEXXZ
     
    252252        ?selectionStartHasMarkerFor@Editor@WebCore@@QBE_NW4MarkerType@DocumentMarker@2@HH@Z
    253253        ?isPageBoxVisible@Document@WebCore@@QAE_NH@Z
     254        ?isActive@InsertionPoint@WebCore@@QBE_NXZ
    254255        ?suspendAnimations@AnimationController@WebCore@@QAEXXZ
    255256        ?resumeAnimations@AnimationController@WebCore@@QAEXXZ
  • trunk/Source/autotools/symbols.filter

    r120684 r121518  
    8383_ZN7WebCore24ComposedShadowTreeWalker8previousEv;
    8484_ZN7WebCore24ComposedShadowTreeWalker9lastChildEv;
    85 _ZN7WebCore24ComposedShadowTreeWalkerC1EPKNS_4NodeENS0_6PolicyE;
    8685_ZN7WebCore24DocumentMarkerController10markersForEPNS_4NodeENS_14DocumentMarker11MarkerTypesE;
    8786_ZN7WebCore30overrideUserPreferredLanguagesERKN3WTF6VectorINS0_6StringELj0EEE;
Note: See TracChangeset for help on using the changeset viewer.