Title: [217599] trunk
Revision
217599
Author
[email protected]
Date
2017-05-31 05:18:24 -0700 (Wed, 31 May 2017)

Log Message

Use the rare data's RenderStyle for display: contents.
https://bugs.webkit.org/show_bug.cgi?id=172721

Patch by Emilio Cobos Álvarez <[email protected]> on 2017-05-31
Reviewed by Antti Koivisto.

No new tests, no behavior change.

* dom/Element.cpp:
(WebCore::Element::hasDisplayContents):
(WebCore::Element::storeDisplayContentsStyle):
* dom/Element.h:
* dom/ElementRareData.h:
(WebCore::ElementRareData::ElementRareData):
* style/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateElementRenderer):
* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveComposedTree):

Modified Paths

Diff

Modified: trunk/LayoutTests/editing/execCommand/justify-right-then-indent-with-problematic-body-expected.txt (217598 => 217599)


--- trunk/LayoutTests/editing/execCommand/justify-right-then-indent-with-problematic-body-expected.txt	2017-05-31 12:04:41 UTC (rev 217598)
+++ trunk/LayoutTests/editing/execCommand/justify-right-then-indent-with-problematic-body-expected.txt	2017-05-31 12:18:24 UTC (rev 217599)
@@ -1,2 +1,3 @@
 Pass.
 WebKit didn't Crash.
+

Modified: trunk/Source/WebCore/ChangeLog (217598 => 217599)


--- trunk/Source/WebCore/ChangeLog	2017-05-31 12:04:41 UTC (rev 217598)
+++ trunk/Source/WebCore/ChangeLog	2017-05-31 12:18:24 UTC (rev 217599)
@@ -1,3 +1,23 @@
+2017-05-31  Emilio Cobos Álvarez  <[email protected]>
+
+        Use the rare data's RenderStyle for display: contents.
+        https://bugs.webkit.org/show_bug.cgi?id=172721
+
+        Reviewed by Antti Koivisto.
+
+        No new tests, no behavior change.
+
+        * dom/Element.cpp:
+        (WebCore::Element::hasDisplayContents):
+        (WebCore::Element::storeDisplayContentsStyle):
+        * dom/Element.h:
+        * dom/ElementRareData.h:
+        (WebCore::ElementRareData::ElementRareData):
+        * style/RenderTreeUpdater.cpp:
+        (WebCore::RenderTreeUpdater::updateElementRenderer):
+        * style/StyleTreeResolver.cpp:
+        (WebCore::Style::TreeResolver::resolveComposedTree):
+
 2017-05-31  Per Arne Vollan  <[email protected]>
 
         LayoutTest media/video-orientation.html is failing

Modified: trunk/Source/WebCore/dom/Element.cpp (217598 => 217599)


--- trunk/Source/WebCore/dom/Element.cpp	2017-05-31 12:04:41 UTC (rev 217598)
+++ trunk/Source/WebCore/dom/Element.cpp	2017-05-31 12:18:24 UTC (rev 217599)
@@ -1468,14 +1468,17 @@
 
 bool Element::hasDisplayContents() const
 {
-    return hasRareData() && elementRareData()->hasDisplayContents();
+    if (renderer() || !hasRareData())
+        return false;
+    const RenderStyle* style = elementRareData()->computedStyle();
+    return style && style->display() == CONTENTS;
 }
 
-void Element::setHasDisplayContents(bool value)
+void Element::storeDisplayContentsStyle(std::unique_ptr<RenderStyle> style)
 {
-    if (hasDisplayContents() == value)
-        return;
-    ensureElementRareData().setHasDisplayContents(value);
+    ASSERT(style && style->display() == CONTENTS);
+    ASSERT(!renderer());
+    ensureElementRareData().setComputedStyle(WTFMove(style));
 }
 
 // Returns true is the given attribute is an event handler.

Modified: trunk/Source/WebCore/dom/Element.h (217598 => 217599)


--- trunk/Source/WebCore/dom/Element.h	2017-05-31 12:04:41 UTC (rev 217598)
+++ trunk/Source/WebCore/dom/Element.h	2017-05-31 12:18:24 UTC (rev 217599)
@@ -544,7 +544,7 @@
     void invalidateStyleAndRenderersForSubtree();
 
     bool hasDisplayContents() const;
-    void setHasDisplayContents(bool);
+    void storeDisplayContentsStyle(std::unique_ptr<RenderStyle>);
 
     using ContainerNode::setAttributeEventListener;
     void setAttributeEventListener(const AtomicString& eventType, const QualifiedName& attributeName, const AtomicString& value);

Modified: trunk/Source/WebCore/dom/ElementRareData.h (217598 => 217599)


--- trunk/Source/WebCore/dom/ElementRareData.h	2017-05-31 12:04:41 UTC (rev 217598)
+++ trunk/Source/WebCore/dom/ElementRareData.h	2017-05-31 12:18:24 UTC (rev 217599)
@@ -118,9 +118,6 @@
     bool hasPendingResources() const { return m_hasPendingResources; }
     void setHasPendingResources(bool has) { m_hasPendingResources = has; }
 
-    bool hasDisplayContents() const { return m_hasDisplayContents; }
-    void setHasDisplayContents(bool value) { m_hasDisplayContents = value; }
-
 private:
     int m_tabIndex;
     unsigned short m_childIndex;
@@ -141,7 +138,6 @@
     unsigned m_childrenAffectedByLastChildRules : 1;
     unsigned m_childrenAffectedByBackwardPositionalRules : 1;
     unsigned m_childrenAffectedByPropertyBasedBackwardPositionalRules : 1;
-    unsigned m_hasDisplayContents : 1;
     unsigned m_isNamedFlowContentElement : 1;
 
     RegionOversetState m_regionOversetState;
@@ -185,7 +181,6 @@
     , m_childrenAffectedByLastChildRules(false)
     , m_childrenAffectedByBackwardPositionalRules(false)
     , m_childrenAffectedByPropertyBasedBackwardPositionalRules(false)
-    , m_hasDisplayContents(false)
     , m_isNamedFlowContentElement(false)
     , m_regionOversetState(RegionUndefined)
     , m_minimumSizeForResizing(defaultMinimumSizeForResizing())

Modified: trunk/Source/WebCore/style/RenderTreeUpdater.cpp (217598 => 217599)


--- trunk/Source/WebCore/style/RenderTreeUpdater.cpp	2017-05-31 12:04:41 UTC (rev 217598)
+++ trunk/Source/WebCore/style/RenderTreeUpdater.cpp	2017-05-31 12:18:24 UTC (rev 217599)
@@ -269,7 +269,10 @@
 
     bool hasDisplayContents = update.style->display() == CONTENTS;
     if (hasDisplayContents != element.hasDisplayContents()) {
-        element.setHasDisplayContents(hasDisplayContents);
+        if (!hasDisplayContents)
+            element.resetComputedStyle();
+        else
+            element.storeDisplayContentsStyle(RenderStyle::clonePtr(*update.style));
         // Render tree position needs to be recomputed as rendering siblings may be found from the display:contents subtree.
         renderTreePosition().invalidateNextSibling();
     }

Modified: trunk/Source/WebCore/style/StyleTreeResolver.cpp (217598 => 217599)


--- trunk/Source/WebCore/style/StyleTreeResolver.cpp	2017-05-31 12:04:41 UTC (rev 217598)
+++ trunk/Source/WebCore/style/StyleTreeResolver.cpp	2017-05-31 12:18:24 UTC (rev 217599)
@@ -421,7 +421,8 @@
 
         bool shouldResolve = shouldResolveElement(element, parent.change) || affectedByPreviousSibling;
         if (shouldResolve) {
-            element.resetComputedStyle();
+            if (!element.hasDisplayContents())
+                element.resetComputedStyle();
             element.resetStyleRelations();
 
             if (element.hasCustomStyleResolveCallbacks())
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to