Title: [155303] trunk/Source/WebCore
Revision
155303
Author
[email protected]
Date
2013-09-08 04:30:17 -0700 (Sun, 08 Sep 2013)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (155302 => 155303)


--- trunk/Source/WebCore/ChangeLog	2013-09-08 11:02:24 UTC (rev 155302)
+++ trunk/Source/WebCore/ChangeLog	2013-09-08 11:30:17 UTC (rev 155303)
@@ -1,3 +1,42 @@
+2013-09-08  Antti Koivisto  <[email protected]>
+
+        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):
+
 2013-09-08  Andreas Kling  <[email protected]>
 
         Render{Block,Inline}::lineBoxes() should return a reference.

Modified: trunk/Source/WebCore/dom/ContainerNode.h (155302 => 155303)


--- trunk/Source/WebCore/dom/ContainerNode.h	2013-09-08 11:02:24 UTC (rev 155302)
+++ trunk/Source/WebCore/dom/ContainerNode.h	2013-09-08 11:30:17 UTC (rev 155303)
@@ -220,12 +220,12 @@
     return highest;
 }
 
-inline bool Node::needsShadowTreeWalker() const
+inline bool Node::needsNodeRenderingTraversalSlowPath() const
 {
-    if (getFlag(NeedsShadowTreeWalkerFlag))
+    if (getFlag(NeedsNodeRenderingTraversalSlowPathFlag))
         return true;
     ContainerNode* parent = parentOrShadowHostNode();
-    return parent && parent->getFlag(NeedsShadowTreeWalkerFlag);
+    return parent && parent->getFlag(NeedsNodeRenderingTraversalSlowPathFlag);
 }
 
 inline bool Node::isTreeScope() const

Modified: trunk/Source/WebCore/dom/Element.cpp (155302 => 155303)


--- trunk/Source/WebCore/dom/Element.cpp	2013-09-08 11:02:24 UTC (rev 155302)
+++ trunk/Source/WebCore/dom/Element.cpp	2013-09-08 11:30:17 UTC (rev 155303)
@@ -1408,6 +1408,20 @@
     setNeedsStyleRecalc();
 }
 
+static bool shouldUseNodeRenderingTraversalSlowPath(const Element& element)
+{
+    if (element.isShadowRoot())
+        return true;
+    if (element.isPseudoElement() || element.beforePseudoElement() || element.afterPseudoElement())
+        return true;
+    return element.isInsertionPoint() || element.shadowRoot();
+}
+
+void Element::resetNeedsNodeRenderingTraversalSlowPath()
+{
+    setNeedsNodeRenderingTraversalSlowPath(shouldUseNodeRenderingTraversalSlowPath(*this));
+}
+
 void Element::addShadowRoot(PassRefPtr<ShadowRoot> newShadowRoot)
 {
     ASSERT(!shadowRoot());
@@ -1421,8 +1435,7 @@
 
     ChildNodeInsertionNotifier(this).notify(shadowRoot);
 
-    // Existence of shadow roots requires the host and its children to do traversal using ComposedShadowTreeWalker.
-    setNeedsShadowTreeWalker();
+    resetNeedsNodeRenderingTraversalSlowPath();
 
     // FIXME(94905): ShadowHost should be reattached during recalcStyle.
     // Set some flag here and recreate shadow hosts' renderer in
@@ -2349,13 +2362,13 @@
 void Element::setBeforePseudoElement(PassRefPtr<PseudoElement> element)
 {
     ensureElementRareData().setBeforePseudoElement(element);
-    resetNeedsShadowTreeWalker();
+    resetNeedsNodeRenderingTraversalSlowPath();
 }
 
 void Element::setAfterPseudoElement(PassRefPtr<PseudoElement> element)
 {
     ensureElementRareData().setAfterPseudoElement(element);
-    resetNeedsShadowTreeWalker();
+    resetNeedsNodeRenderingTraversalSlowPath();
 }
 
 static void disconnectPseudoElement(PseudoElement* pseudoElement)
@@ -2374,6 +2387,7 @@
         return;
     disconnectPseudoElement(elementRareData()->beforePseudoElement());
     elementRareData()->setBeforePseudoElement(nullptr);
+    resetNeedsNodeRenderingTraversalSlowPath();
 }
 
 void Element::clearAfterPseudoElement()
@@ -2382,6 +2396,7 @@
         return;
     disconnectPseudoElement(elementRareData()->afterPseudoElement());
     elementRareData()->setAfterPseudoElement(nullptr);
+    resetNeedsNodeRenderingTraversalSlowPath();
 }
 
 // ElementTraversal API

Modified: trunk/Source/WebCore/dom/Element.h (155302 => 155303)


--- trunk/Source/WebCore/dom/Element.h	2013-09-08 11:02:24 UTC (rev 155302)
+++ trunk/Source/WebCore/dom/Element.h	2013-09-08 11:30:17 UTC (rev 155303)
@@ -590,6 +590,7 @@
     void setAfterPseudoElement(PassRefPtr<PseudoElement>);
     void clearBeforePseudoElement();
     void clearAfterPseudoElement();
+    void resetNeedsNodeRenderingTraversalSlowPath();
 
     virtual bool areAuthorShadowsAllowed() const { return true; }
     virtual void didAddUserAgentShadowRoot(ShadowRoot*) { }

Modified: trunk/Source/WebCore/dom/Node.cpp (155302 => 155303)


--- trunk/Source/WebCore/dom/Node.cpp	2013-09-08 11:02:24 UTC (rev 155302)
+++ trunk/Source/WebCore/dom/Node.cpp	2013-09-08 11:30:17 UTC (rev 155303)
@@ -1045,18 +1045,6 @@
         clearFlag(IsInShadowTreeFlag);
 }
 
-bool Node::needsShadowTreeWalkerSlow() const
-{
-    if (isShadowRoot())
-        return true;
-    if (!isElementNode())
-        return false;
-    const Element* asElement = toElement(this);
-    if (asElement->isPseudoElement() || asElement->beforePseudoElement() || asElement->afterPseudoElement())
-        return true;
-    return asElement->isInsertionPoint() || asElement->shadowRoot();
-}
-
 bool Node::isRootEditableElement() const
 {
     return rendererIsEditable() && isElementNode() && (!parentNode() || !parentNode()->rendererIsEditable()

Modified: trunk/Source/WebCore/dom/Node.h (155302 => 155303)


--- trunk/Source/WebCore/dom/Node.h	2013-09-08 11:02:24 UTC (rev 155302)
+++ trunk/Source/WebCore/dom/Node.h	2013-09-08 11:30:17 UTC (rev 155303)
@@ -255,14 +255,11 @@
     bool isTreeScope() const;
     bool isDocumentFragment() const { return getFlag(IsDocumentFragmentFlag); }
     bool isShadowRoot() const { return isDocumentFragment() && isTreeScope(); }
-    bool isInsertionPoint() const { return getFlag(NeedsShadowTreeWalkerFlag) && isInsertionPointNode(); }
+    bool isInsertionPoint() const { return getFlag(NeedsNodeRenderingTraversalSlowPathFlag) && isInsertionPointNode(); }
     // Returns Node rather than InsertionPoint. Should be used only for language bindings.
     Node* insertionParentForBinding() const;
 
-    bool needsShadowTreeWalker() const;
-    bool needsShadowTreeWalkerSlow() const;
-    void setNeedsShadowTreeWalker() { setFlag(NeedsShadowTreeWalkerFlag); }
-    void resetNeedsShadowTreeWalker() { setFlag(needsShadowTreeWalkerSlow(), NeedsShadowTreeWalkerFlag); }
+    bool needsNodeRenderingTraversalSlowPath() const;
 
     bool inNamedFlow() const { return getFlag(InNamedFlowFlag); }
     bool hasCustomStyleResolveCallbacks() const { return getFlag(HasCustomStyleResolveCallbacksFlag); }
@@ -633,7 +630,7 @@
         HasCustomStyleResolveCallbacksFlag = 1 << 21,
         HasScopedHTMLStyleChildFlag = 1 << 22,
         HasEventTargetDataFlag = 1 << 23,
-        NeedsShadowTreeWalkerFlag = 1 << 25,
+        NeedsNodeRenderingTraversalSlowPathFlag = 1 << 25,
         IsInShadowTreeFlag = 1 << 26,
 
         DefaultNodeFlags = IsParsingChildrenFinishedFlag
@@ -652,14 +649,14 @@
         CreateText = DefaultNodeFlags | IsTextFlag,
         CreateContainer = DefaultNodeFlags | IsContainerFlag, 
         CreateElement = CreateContainer | IsElementFlag, 
-        CreatePseudoElement =  CreateElement | InDocumentFlag | NeedsShadowTreeWalkerFlag,
-        CreateShadowRoot = CreateContainer | IsDocumentFragmentFlag | NeedsShadowTreeWalkerFlag | IsInShadowTreeFlag,
+        CreatePseudoElement =  CreateElement | InDocumentFlag | NeedsNodeRenderingTraversalSlowPathFlag,
+        CreateShadowRoot = CreateContainer | IsDocumentFragmentFlag | NeedsNodeRenderingTraversalSlowPathFlag | IsInShadowTreeFlag,
         CreateDocumentFragment = CreateContainer | IsDocumentFragmentFlag,
         CreateStyledElement = CreateElement | IsStyledElementFlag, 
         CreateHTMLElement = CreateStyledElement | IsHTMLFlag,
         CreateSVGElement = CreateStyledElement | IsSVGFlag | HasCustomStyleResolveCallbacksFlag,
         CreateDocument = CreateContainer | InDocumentFlag,
-        CreateInsertionPoint = CreateHTMLElement | NeedsShadowTreeWalkerFlag,
+        CreateInsertionPoint = CreateHTMLElement | NeedsNodeRenderingTraversalSlowPathFlag,
         CreateEditingText = CreateText | IsEditingTextFlag,
     };
     Node(Document*, ConstructionType);
@@ -678,6 +675,8 @@
 
     void setHasCustomStyleResolveCallbacks() { setFlag(true, HasCustomStyleResolveCallbacksFlag); }
 
+    void setNeedsNodeRenderingTraversalSlowPath(bool flag) { setFlag(flag, NeedsNodeRenderingTraversalSlowPathFlag); }
+
     Document* documentInternal() const { return treeScope()->documentScope(); }
     void setTreeScope(TreeScope* scope) { m_treeScope = scope; }
 

Modified: trunk/Source/WebCore/dom/NodeRenderingTraversal.h (155302 => 155303)


--- trunk/Source/WebCore/dom/NodeRenderingTraversal.h	2013-09-08 11:02:24 UTC (rev 155302)
+++ trunk/Source/WebCore/dom/NodeRenderingTraversal.h	2013-09-08 11:30:17 UTC (rev 155303)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -27,56 +28,50 @@
 #ifndef NodeRenderingTraversal_h
 #define NodeRenderingTraversal_h
 
-#include "Element.h"
+#include "ContainerNode.h"
 
 namespace WebCore {
 
-class InsertionPoint;
-
 namespace NodeRenderingTraversal {
 
 ContainerNode* parent(const Node*);
-ContainerNode* parentSlow(const Node*);
 Node* nextSibling(const Node*);
-Node* nextSiblingSlow(const Node*);
 Node* previousSibling(const Node*);
-Node* previousSiblingSlow(const Node*);
 
 Node* nextInScope(const Node*);
 Node* previousInScope(const Node*);
 Node* parentInScope(const Node*);
 Node* lastChildInScope(const Node*);
 
+ContainerNode* parentSlow(const Node*);
+Node* nextSiblingSlow(const Node*);
+Node* previousSiblingSlow(const Node*);
+
 inline ContainerNode* parent(const Node* node)
 {
-    if (!node->needsShadowTreeWalker()) {
-#ifndef NDEBUG
-        ASSERT(node->parentNode() == parentSlow(node));
-#endif
-        return node->parentNodeGuaranteedHostFree();
-    }
+    if (node->needsNodeRenderingTraversalSlowPath())
+        return parentSlow(node);
 
-    return parentSlow(node);
+    ASSERT(node->parentNode() == parentSlow(node));
+    return node->parentNodeGuaranteedHostFree();
 }
 
 inline Node* nextSibling(const Node* node)
 {
-    if (!node->needsShadowTreeWalker()) {
-        ASSERT(nextSiblingSlow(node) == node->nextSibling());
-        return node->nextSibling();
-    }
+    if (node->needsNodeRenderingTraversalSlowPath())
+        return nextSiblingSlow(node);
 
-    return nextSiblingSlow(node);
+    ASSERT(nextSiblingSlow(node) == node->nextSibling());
+    return node->nextSibling();
 }
 
 inline Node* previousSibling(const Node* node)
 {
-    if (!node->needsShadowTreeWalker()) {
-        ASSERT(previousSiblingSlow(node) == node->previousSibling());
-        return node->previousSibling();
-    }
+    if (node->needsNodeRenderingTraversalSlowPath())
+        return previousSiblingSlow(node);
 
-    return previousSiblingSlow(node);
+    ASSERT(previousSiblingSlow(node) == node->previousSibling());
+    return node->previousSibling();
 }
 
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to