Changeset 155303 in webkit


Ignore:
Timestamp:
Sep 8, 2013 4:30:17 AM (11 years ago)
Author:
Antti Koivisto
Message:

Rename needsShadowTreeWalker
https://bugs.webkit.org/show_bug.cgi?id=121005

Reviewed by Andreas Kling.

Rename to needsNodeRenderingTraversalSlowPath.

  • dom/ContainerNode.h:

(WebCore::Node::needsNodeRenderingTraversalSlowPath):

  • dom/Element.cpp:

(WebCore::shouldUseNodeRenderingTraversalSlowPath):
(WebCore::Element::resetNeedsNodeRenderingTraversalSlowPath):

Only Elements can have this flag. Move the code here from Node.

(WebCore::Element::addShadowRoot):
(WebCore::Element::setBeforePseudoElement):
(WebCore::Element::setAfterPseudoElement):
(WebCore::Element::clearBeforePseudoElement):
(WebCore::Element::clearAfterPseudoElement):

Reset after clear too.

  • dom/Element.h:
  • dom/Element.h:
  • dom/Node.cpp:
  • dom/Node.h:

(WebCore::Node::isInsertionPoint):
(WebCore::Node::setNeedsNodeRenderingTraversalSlowPath):

Make protected.

  • dom/NodeRenderingTraversal.h:

(WebCore::NodeRenderingTraversal::parent):
(WebCore::NodeRenderingTraversal::nextSibling):
(WebCore::NodeRenderingTraversal::previousSibling):

Location:
trunk/Source/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r155302 r155303  
     12013-09-08  Antti Koivisto  <antti@apple.com>
     2
     3        Rename needsShadowTreeWalker
     4        https://bugs.webkit.org/show_bug.cgi?id=121005
     5
     6        Reviewed by Andreas Kling.
     7
     8        Rename to needsNodeRenderingTraversalSlowPath.
     9
     10        * dom/ContainerNode.h:
     11        (WebCore::Node::needsNodeRenderingTraversalSlowPath):
     12        * dom/Element.cpp:
     13        (WebCore::shouldUseNodeRenderingTraversalSlowPath):
     14        (WebCore::Element::resetNeedsNodeRenderingTraversalSlowPath):
     15
     16            Only Elements can have this flag. Move the code here from Node.
     17
     18        (WebCore::Element::addShadowRoot):
     19        (WebCore::Element::setBeforePseudoElement):
     20        (WebCore::Element::setAfterPseudoElement):
     21        (WebCore::Element::clearBeforePseudoElement):
     22        (WebCore::Element::clearAfterPseudoElement):
     23
     24            Reset after clear too.
     25
     26        * dom/Element.h:
     27        * dom/Element.h:
     28        * dom/Node.cpp:
     29        * dom/Node.h:
     30        (WebCore::Node::isInsertionPoint):
     31        (WebCore::Node::setNeedsNodeRenderingTraversalSlowPath):
     32       
     33            Make protected.
     34
     35        * dom/NodeRenderingTraversal.h:
     36        (WebCore::NodeRenderingTraversal::parent):
     37        (WebCore::NodeRenderingTraversal::nextSibling):
     38        (WebCore::NodeRenderingTraversal::previousSibling):
     39
    1402013-09-08  Andreas Kling  <akling@apple.com>
    241
  • trunk/Source/WebCore/dom/ContainerNode.h

    r154957 r155303  
    221221}
    222222
    223 inline bool Node::needsShadowTreeWalker() const
    224 {
    225     if (getFlag(NeedsShadowTreeWalkerFlag))
     223inline bool Node::needsNodeRenderingTraversalSlowPath() const
     224{
     225    if (getFlag(NeedsNodeRenderingTraversalSlowPathFlag))
    226226        return true;
    227227    ContainerNode* parent = parentOrShadowHostNode();
    228     return parent && parent->getFlag(NeedsShadowTreeWalkerFlag);
     228    return parent && parent->getFlag(NeedsNodeRenderingTraversalSlowPathFlag);
    229229}
    230230
  • trunk/Source/WebCore/dom/Element.cpp

    r155093 r155303  
    14091409}
    14101410
     1411static bool shouldUseNodeRenderingTraversalSlowPath(const Element& element)
     1412{
     1413    if (element.isShadowRoot())
     1414        return true;
     1415    if (element.isPseudoElement() || element.beforePseudoElement() || element.afterPseudoElement())
     1416        return true;
     1417    return element.isInsertionPoint() || element.shadowRoot();
     1418}
     1419
     1420void Element::resetNeedsNodeRenderingTraversalSlowPath()
     1421{
     1422    setNeedsNodeRenderingTraversalSlowPath(shouldUseNodeRenderingTraversalSlowPath(*this));
     1423}
     1424
    14111425void Element::addShadowRoot(PassRefPtr<ShadowRoot> newShadowRoot)
    14121426{
     
    14221436    ChildNodeInsertionNotifier(this).notify(shadowRoot);
    14231437
    1424     // Existence of shadow roots requires the host and its children to do traversal using ComposedShadowTreeWalker.
    1425     setNeedsShadowTreeWalker();
     1438    resetNeedsNodeRenderingTraversalSlowPath();
    14261439
    14271440    // FIXME(94905): ShadowHost should be reattached during recalcStyle.
     
    23502363{
    23512364    ensureElementRareData().setBeforePseudoElement(element);
    2352     resetNeedsShadowTreeWalker();
     2365    resetNeedsNodeRenderingTraversalSlowPath();
    23532366}
    23542367
     
    23562369{
    23572370    ensureElementRareData().setAfterPseudoElement(element);
    2358     resetNeedsShadowTreeWalker();
     2371    resetNeedsNodeRenderingTraversalSlowPath();
    23592372}
    23602373
     
    23752388    disconnectPseudoElement(elementRareData()->beforePseudoElement());
    23762389    elementRareData()->setBeforePseudoElement(nullptr);
     2390    resetNeedsNodeRenderingTraversalSlowPath();
    23772391}
    23782392
     
    23832397    disconnectPseudoElement(elementRareData()->afterPseudoElement());
    23842398    elementRareData()->setAfterPseudoElement(nullptr);
     2399    resetNeedsNodeRenderingTraversalSlowPath();
    23852400}
    23862401
  • trunk/Source/WebCore/dom/Element.h

    r154957 r155303  
    591591    void clearBeforePseudoElement();
    592592    void clearAfterPseudoElement();
     593    void resetNeedsNodeRenderingTraversalSlowPath();
    593594
    594595    virtual bool areAuthorShadowsAllowed() const { return true; }
  • trunk/Source/WebCore/dom/Node.cpp

    r155131 r155303  
    10461046}
    10471047
    1048 bool Node::needsShadowTreeWalkerSlow() const
    1049 {
    1050     if (isShadowRoot())
    1051         return true;
    1052     if (!isElementNode())
    1053         return false;
    1054     const Element* asElement = toElement(this);
    1055     if (asElement->isPseudoElement() || asElement->beforePseudoElement() || asElement->afterPseudoElement())
    1056         return true;
    1057     return asElement->isInsertionPoint() || asElement->shadowRoot();
    1058 }
    1059 
    10601048bool Node::isRootEditableElement() const
    10611049{
  • trunk/Source/WebCore/dom/Node.h

    r154877 r155303  
    256256    bool isDocumentFragment() const { return getFlag(IsDocumentFragmentFlag); }
    257257    bool isShadowRoot() const { return isDocumentFragment() && isTreeScope(); }
    258     bool isInsertionPoint() const { return getFlag(NeedsShadowTreeWalkerFlag) && isInsertionPointNode(); }
     258    bool isInsertionPoint() const { return getFlag(NeedsNodeRenderingTraversalSlowPathFlag) && isInsertionPointNode(); }
    259259    // Returns Node rather than InsertionPoint. Should be used only for language bindings.
    260260    Node* insertionParentForBinding() const;
    261261
    262     bool needsShadowTreeWalker() const;
    263     bool needsShadowTreeWalkerSlow() const;
    264     void setNeedsShadowTreeWalker() { setFlag(NeedsShadowTreeWalkerFlag); }
    265     void resetNeedsShadowTreeWalker() { setFlag(needsShadowTreeWalkerSlow(), NeedsShadowTreeWalkerFlag); }
     262    bool needsNodeRenderingTraversalSlowPath() const;
    266263
    267264    bool inNamedFlow() const { return getFlag(InNamedFlowFlag); }
     
    634631        HasScopedHTMLStyleChildFlag = 1 << 22,
    635632        HasEventTargetDataFlag = 1 << 23,
    636         NeedsShadowTreeWalkerFlag = 1 << 25,
     633        NeedsNodeRenderingTraversalSlowPathFlag = 1 << 25,
    637634        IsInShadowTreeFlag = 1 << 26,
    638635
     
    653650        CreateContainer = DefaultNodeFlags | IsContainerFlag,
    654651        CreateElement = CreateContainer | IsElementFlag,
    655         CreatePseudoElement =  CreateElement | InDocumentFlag | NeedsShadowTreeWalkerFlag,
    656         CreateShadowRoot = CreateContainer | IsDocumentFragmentFlag | NeedsShadowTreeWalkerFlag | IsInShadowTreeFlag,
     652        CreatePseudoElement =  CreateElement | InDocumentFlag | NeedsNodeRenderingTraversalSlowPathFlag,
     653        CreateShadowRoot = CreateContainer | IsDocumentFragmentFlag | NeedsNodeRenderingTraversalSlowPathFlag | IsInShadowTreeFlag,
    657654        CreateDocumentFragment = CreateContainer | IsDocumentFragmentFlag,
    658655        CreateStyledElement = CreateElement | IsStyledElementFlag,
     
    660657        CreateSVGElement = CreateStyledElement | IsSVGFlag | HasCustomStyleResolveCallbacksFlag,
    661658        CreateDocument = CreateContainer | InDocumentFlag,
    662         CreateInsertionPoint = CreateHTMLElement | NeedsShadowTreeWalkerFlag,
     659        CreateInsertionPoint = CreateHTMLElement | NeedsNodeRenderingTraversalSlowPathFlag,
    663660        CreateEditingText = CreateText | IsEditingTextFlag,
    664661    };
     
    678675
    679676    void setHasCustomStyleResolveCallbacks() { setFlag(true, HasCustomStyleResolveCallbacksFlag); }
     677
     678    void setNeedsNodeRenderingTraversalSlowPath(bool flag) { setFlag(flag, NeedsNodeRenderingTraversalSlowPathFlag); }
    680679
    681680    Document* documentInternal() const { return treeScope()->documentScope(); }
  • trunk/Source/WebCore/dom/NodeRenderingTraversal.h

    r154327 r155303  
    11/*
    22 * Copyright (C) 2012 Google Inc. All rights reserved.
     3 * Copyright (C) 2013 Apple Inc. All rights reserved.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    2829#define NodeRenderingTraversal_h
    2930
    30 #include "Element.h"
     31#include "ContainerNode.h"
    3132
    3233namespace WebCore {
    33 
    34 class InsertionPoint;
    3534
    3635namespace NodeRenderingTraversal {
    3736
    3837ContainerNode* parent(const Node*);
    39 ContainerNode* parentSlow(const Node*);
    4038Node* nextSibling(const Node*);
    41 Node* nextSiblingSlow(const Node*);
    4239Node* previousSibling(const Node*);
    43 Node* previousSiblingSlow(const Node*);
    4440
    4541Node* nextInScope(const Node*);
     
    4844Node* lastChildInScope(const Node*);
    4945
     46ContainerNode* parentSlow(const Node*);
     47Node* nextSiblingSlow(const Node*);
     48Node* previousSiblingSlow(const Node*);
     49
    5050inline ContainerNode* parent(const Node* node)
    5151{
    52     if (!node->needsShadowTreeWalker()) {
    53 #ifndef NDEBUG
    54         ASSERT(node->parentNode() == parentSlow(node));
    55 #endif
    56         return node->parentNodeGuaranteedHostFree();
    57     }
     52    if (node->needsNodeRenderingTraversalSlowPath())
     53        return parentSlow(node);
    5854
    59     return parentSlow(node);
     55    ASSERT(node->parentNode() == parentSlow(node));
     56    return node->parentNodeGuaranteedHostFree();
    6057}
    6158
    6259inline Node* nextSibling(const Node* node)
    6360{
    64     if (!node->needsShadowTreeWalker()) {
    65         ASSERT(nextSiblingSlow(node) == node->nextSibling());
    66         return node->nextSibling();
    67     }
     61    if (node->needsNodeRenderingTraversalSlowPath())
     62        return nextSiblingSlow(node);
    6863
    69     return nextSiblingSlow(node);
     64    ASSERT(nextSiblingSlow(node) == node->nextSibling());
     65    return node->nextSibling();
    7066}
    7167
    7268inline Node* previousSibling(const Node* node)
    7369{
    74     if (!node->needsShadowTreeWalker()) {
    75         ASSERT(previousSiblingSlow(node) == node->previousSibling());
    76         return node->previousSibling();
    77     }
     70    if (node->needsNodeRenderingTraversalSlowPath())
     71        return previousSiblingSlow(node);
    7872
    79     return previousSiblingSlow(node);
     73    ASSERT(previousSiblingSlow(node) == node->previousSibling());
     74    return node->previousSibling();
    8075}
    8176
Note: See TracChangeset for help on using the changeset viewer.