Title: [209802] trunk/Source/WebCore
Revision
209802
Author
[email protected]
Date
2016-12-14 08:06:50 -0800 (Wed, 14 Dec 2016)

Log Message

Make Style::Update const in RenderTreeUpdater
https://bugs.webkit.org/show_bug.cgi?id=165845

Reviewed by Andreas Kling.

Moving style away from unique_ptrs leaves them in weird state.

* style/RenderTreeUpdater.cpp:
(WebCore::findRenderingRoots):
(WebCore::RenderTreeUpdater::commit):
(WebCore::RenderTreeUpdater::updateElementRenderer):

    Clone the style instead of moving it. This is not meaningfully more expensive.
    Remove null checks, style is never null.

* style/RenderTreeUpdater.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (209801 => 209802)


--- trunk/Source/WebCore/ChangeLog	2016-12-14 16:04:30 UTC (rev 209801)
+++ trunk/Source/WebCore/ChangeLog	2016-12-14 16:06:50 UTC (rev 209802)
@@ -1,3 +1,22 @@
+2016-12-14  Antti Koivisto  <[email protected]>
+
+        Make Style::Update const in RenderTreeUpdater
+        https://bugs.webkit.org/show_bug.cgi?id=165845
+
+        Reviewed by Andreas Kling.
+
+        Moving style away from unique_ptrs leaves them in weird state.
+
+        * style/RenderTreeUpdater.cpp:
+        (WebCore::findRenderingRoots):
+        (WebCore::RenderTreeUpdater::commit):
+        (WebCore::RenderTreeUpdater::updateElementRenderer):
+
+            Clone the style instead of moving it. This is not meaningfully more expensive.
+            Remove null checks, style is never null.
+
+        * style/RenderTreeUpdater.h:
+
 2016-12-13  Yusuke Suzuki  <[email protected]>
 
         Use JSValue::toWTFString instead of calling toString(exec) and value(exec)

Modified: trunk/Source/WebCore/style/RenderTreeUpdater.cpp (209801 => 209802)


--- trunk/Source/WebCore/style/RenderTreeUpdater.cpp	2016-12-14 16:04:30 UTC (rev 209801)
+++ trunk/Source/WebCore/style/RenderTreeUpdater.cpp	2016-12-14 16:06:50 UTC (rev 209802)
@@ -93,7 +93,7 @@
     return &node.document();
 }
 
-static ListHashSet<ContainerNode*> findRenderingRoots(Style::Update& update)
+static ListHashSet<ContainerNode*> findRenderingRoots(const Style::Update& update)
 {
     ListHashSet<ContainerNode*> renderingRoots;
     for (auto* root : update.roots()) {
@@ -105,7 +105,7 @@
     return renderingRoots;
 }
 
-void RenderTreeUpdater::commit(std::unique_ptr<Style::Update> styleUpdate)
+void RenderTreeUpdater::commit(std::unique_ptr<const Style::Update> styleUpdate)
 {
     ASSERT(&m_document == &styleUpdate->document());
 
@@ -247,7 +247,7 @@
     return false;
 }
 
-void RenderTreeUpdater::updateElementRenderer(Element& element, Style::ElementUpdate& update)
+void RenderTreeUpdater::updateElementRenderer(Element& element, const Style::ElementUpdate& update)
 {
 #if PLATFORM(IOS)
     CheckForVisibilityChange checkForVisibilityChange(element);
@@ -257,7 +257,7 @@
     if (shouldTearDownRenderers)
         tearDownRenderers(element, TeardownType::KeepHoverAndActive);
 
-    bool hasDisplayContents = update.style && update.style->display() == CONTENTS;
+    bool hasDisplayContents = update.style->display() == CONTENTS;
     if (hasDisplayContents != element.hasDisplayContents()) {
         element.setHasDisplayContents(hasDisplayContents);
         // Render tree position needs to be recomputed as rendering siblings may be found from the display:contents subtree.
@@ -264,11 +264,11 @@
         renderTreePosition().invalidateNextSibling();
     }
 
-    bool shouldCreateNewRenderer = !element.renderer() && update.style && !hasDisplayContents;
+    bool shouldCreateNewRenderer = !element.renderer() && !hasDisplayContents;
     if (shouldCreateNewRenderer) {
         if (element.hasCustomStyleResolveCallbacks())
             element.willAttachRenderers();
-        createRenderer(element, WTFMove(*update.style));
+        createRenderer(element, RenderStyle::clone(*update.style));
         invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded(element);
         return;
     }
@@ -278,19 +278,19 @@
     auto& renderer = *element.renderer();
 
     if (update.recompositeLayer) {
-        renderer.setStyle(WTFMove(*update.style), StyleDifferenceRecompositeLayer);
+        renderer.setStyle(RenderStyle::clone(*update.style), StyleDifferenceRecompositeLayer);
         return;
     }
 
     if (update.change == Style::NoChange) {
         if (pseudoStyleCacheIsInvalid(&renderer, update.style.get()) || (parent().styleChange == Style::Force && renderer.requiresForcedStyleRecalcPropagation())) {
-            renderer.setStyle(WTFMove(*update.style), StyleDifferenceEqual);
+            renderer.setStyle(RenderStyle::clone(*update.style), StyleDifferenceEqual);
             return;
         }
         return;
     }
 
-    renderer.setStyle(WTFMove(*update.style), StyleDifferenceEqual);
+    renderer.setStyle(RenderStyle::clone(*update.style), StyleDifferenceEqual);
 }
 
 #if ENABLE(CSS_REGIONS)

Modified: trunk/Source/WebCore/style/RenderTreeUpdater.h (209801 => 209802)


--- trunk/Source/WebCore/style/RenderTreeUpdater.h	2016-12-14 16:04:30 UTC (rev 209801)
+++ trunk/Source/WebCore/style/RenderTreeUpdater.h	2016-12-14 16:06:50 UTC (rev 209802)
@@ -46,7 +46,7 @@
 public:
     RenderTreeUpdater(Document&);
 
-    void commit(std::unique_ptr<Style::Update>);
+    void commit(std::unique_ptr<const Style::Update>);
 
     enum class TeardownType { Normal, KeepHoverAndActive };
     static void tearDownRenderers(Element&, TeardownType = TeardownType::Normal);
@@ -55,7 +55,7 @@
 private:
     void updateRenderTree(ContainerNode& root);
     void updateTextRenderer(Text&);
-    void updateElementRenderer(Element&, Style::ElementUpdate&);
+    void updateElementRenderer(Element&, const Style::ElementUpdate&);
     void createRenderer(Element&, RenderStyle&&);
     void invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded(Node&);
     void updateBeforeOrAfterPseudoElement(Element&, PseudoId);
@@ -76,7 +76,7 @@
     void popParentsToDepth(unsigned depth);
 
     Document& m_document;
-    std::unique_ptr<Style::Update> m_styleUpdate;
+    std::unique_ptr<const Style::Update> m_styleUpdate;
 
     Vector<Parent> m_parentStack;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to