Reverting previous due to bad LayoutTest ChangeLog.
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Apr 2016 10:21:25 +0000 (10:21 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Apr 2016 10:21:25 +0000 (10:21 +0000)
LayoutTests:

* platform/mac/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@199152 268f45cc-cd09-0410-ab3c-d52691b4dbfc

18 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/mac/TestExpectations
Source/WebCore/ChangeLog
Source/WebCore/css/CSSParser.cpp
Source/WebCore/css/CSSPrimitiveValueMappings.h
Source/WebCore/css/CSSValueKeywords.in
Source/WebCore/css/StyleResolver.cpp
Source/WebCore/css/html.css
Source/WebCore/dom/Element.cpp
Source/WebCore/dom/Element.h
Source/WebCore/dom/ElementAndTextDescendantIterator.h
Source/WebCore/dom/ElementRareData.h
Source/WebCore/html/HTMLSlotElement.h
Source/WebCore/rendering/RenderElement.cpp
Source/WebCore/rendering/style/RenderStyleConstants.h
Source/WebCore/style/RenderTreePosition.cpp
Source/WebCore/style/RenderTreeUpdater.cpp
Source/WebCore/style/StyleTreeResolver.cpp

index fb3d40c..2ca64ca 100644 (file)
@@ -1,3 +1,9 @@
+2016-04-07  Antti Koivisto  <antti@apple.com>
+
+        Reverting previous due to bad LayoutTest ChangeLog.
+
+        * platform/mac/TestExpectations:
+
 2016-04-06  Myles C. Maxfield  <mmaxfield@apple.com>
 
         REGRESSION (r188591): thingiverse.com direct messaging UI is not rendered properly
index b39fc11..bdb748c 100644 (file)
@@ -1229,6 +1229,7 @@ webkit.org/b/149128 fast/text/control-characters [ ImageOnlyFailure ]
 
 webkit.org/b/148695 fast/shadow-dom [ Pass ]
 webkit.org/b/149440 fast/shadow-dom/css-scoping-shadow-host-functional-rule.html [ ImageOnlyFailure ]
+webkit.org/b/149441 fast/shadow-dom/css-scoping-shadow-slot-display-override.html [ ImageOnlyFailure ]
 
 # Touch events is not enabled on Mac
 webkit.org/b/149592 fast/shadow-dom/touch-event-ios.html [ Failure ]
index 8dabcf0..a7a7d3a 100644 (file)
@@ -1,3 +1,7 @@
+2016-04-07  Antti Koivisto  <antti@apple.com>
+
+        Reverting previous due to bad LayoutTest ChangeLog.
+
 2016-04-06  Antti Koivisto  <antti@apple.com>
 
         Shadow DOM: Implement display: contents for slots
index c60711a..496f4f9 100644 (file)
@@ -669,8 +669,8 @@ static inline bool isValidKeywordPropertyAndValue(CSSPropertyID propertyId, int
         // inline | block | list-item | inline-block | table |
         // inline-table | table-row-group | table-header-group | table-footer-group | table-row |
         // table-column-group | table-column | table-cell | table-caption | -webkit-box | -webkit-inline-box | none | inherit
-        // flex | -webkit-flex | inline-flex | -webkit-inline-flex | -webkit-grid | -webkit-inline-grid | contents
-        if ((valueID >= CSSValueInline && valueID <= CSSValueContents) || valueID == CSSValueNone)
+        // flex | -webkit-flex | inline-flex | -webkit-inline-flex | -webkit-grid | -webkit-inline-grid
+        if ((valueID >= CSSValueInline && valueID <= CSSValueWebkitInlineFlex) || valueID == CSSValueNone)
             return true;
 #if ENABLE(CSS_GRID_LAYOUT)
         if (valueID == CSSValueWebkitGrid || valueID == CSSValueWebkitInlineGrid)
index 3478818..5b40d20 100644 (file)
@@ -1388,9 +1388,6 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(EDisplay e)
     case NONE:
         m_value.valueID = CSSValueNone;
         break;
-    case CONTENTS:
-        m_value.valueID = CSSValueContents;
-        break;
     }
 }
 
index fb79bf2..396f7f5 100644 (file)
@@ -417,7 +417,6 @@ flex
 -webkit-flex
 inline-flex
 -webkit-inline-flex
-contents
 -webkit-grid
 -webkit-inline-grid
 //none
@@ -1185,7 +1184,7 @@ style
 
 // will-change
 scroll-position
-//contents
+contents
 
 #if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
 // touch-action
index 58475a2..f2f2852 100644 (file)
@@ -723,7 +723,6 @@ static EDisplay equivalentBlockDisplay(EDisplay display, bool isFloating, bool s
     case TABLE_COLUMN:
     case TABLE_CELL:
     case TABLE_CAPTION:
-    case CONTENTS:
         return BLOCK;
     case NONE:
         ASSERT_NOT_REACHED();
@@ -766,15 +765,6 @@ void StyleResolver::adjustRenderStyle(RenderStyle& style, const RenderStyle& par
     style.setOriginalDisplay(style.display());
 
     if (style.display() != NONE) {
-        if (style.display() == CONTENTS) {
-            // FIXME: Enable for all elements.
-            bool elementSupportsDisplayContents = false;
-#if ENABLE(SHADOW_DOM) || ENABLE(DETAILS_ELEMENT)
-            elementSupportsDisplayContents = is<HTMLSlotElement>(e);
-#endif
-            if (!elementSupportsDisplayContents)
-                style.setDisplay(INLINE);
-        }
         // If we have a <td> that specifies a float property, in quirks mode we just drop the float
         // property.
         // Sites also commonly use display:inline/block on <td>s and <table>s. In quirks mode we force
index e756b6c..2b63518 100644 (file)
@@ -1223,10 +1223,6 @@ bdo {
     unicode-bidi: bidi-override;
 }
 
-slot {
-    display: contents;
-}
-
 #if defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS
 applet, embed, object, img {
     -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
index 82cde2c..0e0949d 100644 (file)
@@ -1375,18 +1375,6 @@ ElementStyle Element::resolveStyle(RenderStyle* parentStyle)
     return styleResolver().styleForElement(*this, parentStyle);
 }
 
-bool Element::hasDisplayContents() const
-{
-    return hasRareData() && elementRareData()->hasDisplayContents();
-}
-
-void Element::setHasDisplayContents(bool value)
-{
-    if (hasDisplayContents() == value)
-        return;
-    ensureElementRareData().setHasDisplayContents(value);
-}
-
 // Returns true is the given attribute is an event handler.
 // We consider an event handler any attribute that begins with "on".
 // It is a simple solution that has the advantage of not requiring any
@@ -1490,7 +1478,7 @@ const AtomicString& Element::imageSourceURL() const
 
 bool Element::rendererIsNeeded(const RenderStyle& style)
 {
-    return style.display() != NONE && style.display() != CONTENTS;
+    return style.display() != NONE;
 }
 
 RenderPtr<RenderElement> Element::createElementRenderer(Ref<RenderStyle>&& style, const RenderTreePosition&)
index e16f7de..e7ddf82 100644 (file)
@@ -501,9 +501,6 @@ public:
     StyleResolver& styleResolver();
     ElementStyle resolveStyle(RenderStyle* parentStyle);
 
-    bool hasDisplayContents() const;
-    void setHasDisplayContents(bool);
-
     virtual void isVisibleInViewportChanged() { }
 
     using ContainerNode::setAttributeEventListener;
index f83afe8..3bfcd03 100644 (file)
@@ -50,8 +50,8 @@ public:
     bool operator==(const ElementAndTextDescendantIterator& other) const;
     bool operator!=(const ElementAndTextDescendantIterator& other) const;
 
-    bool operator!() const { return !m_depth; }
-    explicit operator bool() const { return m_depth; }
+    bool operator!() const { return !m_current; }
+    explicit operator bool() const { return m_current; }
 
     void dropAssertions();
 
@@ -115,7 +115,7 @@ inline ElementAndTextDescendantIterator::ElementAndTextDescendantIterator(Contai
 }
 
 inline ElementAndTextDescendantIterator::ElementAndTextDescendantIterator(ContainerNode& root, Node* current)
-    : m_current(current)
+    : m_current(current != &root ? current : nullptr)
 #if !ASSERT_DISABLED
     , m_assertions(m_current)
 #endif
@@ -123,8 +123,6 @@ inline ElementAndTextDescendantIterator::ElementAndTextDescendantIterator(Contai
     if (!m_current)
         return;
     ASSERT(isElementOrText(*m_current));
-    if (m_current == &root)
-        return;
 
     Vector<Node*, 20> ancestorStack;
     auto* ancestor = m_current->parentNode();
@@ -287,7 +285,7 @@ inline const Node* ElementAndTextDescendantIterator::operator->() const
 inline bool ElementAndTextDescendantIterator::operator==(const ElementAndTextDescendantIterator& other) const
 {
     ASSERT(!m_assertions.domTreeHasMutated());
-    return m_current == other.m_current || (!m_depth && !other.m_depth);
+    return m_current == other.m_current;
 }
 
 inline bool ElementAndTextDescendantIterator::operator!=(const ElementAndTextDescendantIterator& other) const
index 7d7c7fc..598391a 100644 (file)
@@ -107,9 +107,6 @@ public:
     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;
@@ -129,7 +126,6 @@ private:
     unsigned m_childrenAffectedByLastChildRules : 1;
     unsigned m_childrenAffectedByBackwardPositionalRules : 1;
     unsigned m_childrenAffectedByPropertyBasedBackwardPositionalRules : 1;
-    unsigned m_hasDisplayContents : 1;
 
     RegionOversetState m_regionOversetState;
 
@@ -170,7 +166,6 @@ inline ElementRareData::ElementRareData(RenderElement* renderer)
     , m_childrenAffectedByLastChildRules(false)
     , m_childrenAffectedByBackwardPositionalRules(false)
     , m_childrenAffectedByPropertyBasedBackwardPositionalRules(false)
-    , m_hasDisplayContents(false)
     , m_regionOversetState(RegionUndefined)
     , m_minimumSizeForResizing(defaultMinimumSizeForResizing())
 {
@@ -198,7 +193,6 @@ inline void ElementRareData::setAfterPseudoElement(RefPtr<PseudoElement>&& pseud
 inline void ElementRareData::resetComputedStyle()
 {
     m_computedStyle = nullptr;
-    m_hasDisplayContents = false;
     setStyleAffectedByEmpty(false);
     setChildIndex(0);
 }
index 8a4484e..c6ac29d 100644 (file)
@@ -53,6 +53,17 @@ private:
     bool m_hasEnqueuedSlotChangeEvent { false };
 };
 
+// Slots have implicit display:contents until it is supported for reals.
+inline bool hasImplicitDisplayContents(const Element& element) { return is<HTMLSlotElement>(element); }
+
+}
+
+#else
+
+namespace WebCore {
+
+inline bool hasImplicitDisplayContents(const Element&) { return false; }
+
 }
 
 #endif
index b16ffc2..3220ddb 100644 (file)
@@ -161,7 +161,6 @@ RenderPtr<RenderElement> RenderElement::createFor(Element& element, Ref<RenderSt
 
     switch (style.get().display()) {
     case NONE:
-    case CONTENTS:
         return nullptr;
     case INLINE:
         return createRenderer<RenderInline>(element, WTFMove(style));
index eb706f6..b9b0dce 100644 (file)
@@ -563,7 +563,6 @@ enum EDisplay {
     TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL,
     TABLE_CAPTION, BOX, INLINE_BOX,
     FLEX, WEBKIT_FLEX, INLINE_FLEX, WEBKIT_INLINE_FLEX,
-    CONTENTS,
 #if ENABLE(CSS_GRID_LAYOUT)
     GRID, INLINE_GRID,
 #endif
index 82e7f2a..ca50036 100644 (file)
@@ -89,7 +89,7 @@ RenderObject* RenderTreePosition::nextSiblingRenderer(const Node& node) const
 
     while (it != end) {
         auto& node = *it;
-        bool hasDisplayContents = is<Element>(node) && downcast<Element>(node).hasDisplayContents();
+        bool hasDisplayContents = is<Element>(node) && hasImplicitDisplayContents(downcast<Element>(node));
         if (hasDisplayContents) {
             it.traverseNext();
             continue;
index 1007c7c..ebecfdc 100644 (file)
@@ -68,7 +68,7 @@ static ContainerNode* findRenderingRoot(ContainerNode& node)
     for (auto& ancestor : composedTreeAncestors(node)) {
         if (ancestor.renderer())
             return &ancestor;
-        if (!ancestor.hasDisplayContents())
+        if (!hasImplicitDisplayContents(ancestor))
             return nullptr;
     }
     return &node.document();
@@ -151,7 +151,7 @@ void RenderTreeUpdater::updateRenderTree(ContainerNode& root)
 
         updateElementRenderer(element, *elementUpdate);
 
-        bool mayHaveRenderedDescendants = element.renderer() || (element.hasDisplayContents() && shouldCreateRenderer(element, renderTreePosition().parent()));
+        bool mayHaveRenderedDescendants = element.renderer() || (hasImplicitDisplayContents(element) && shouldCreateRenderer(element, renderTreePosition().parent()));
         if (!mayHaveRenderedDescendants) {
             it.traverseNextSkippingChildren();
             continue;
@@ -244,10 +244,7 @@ void RenderTreeUpdater::updateElementRenderer(Element& element, const Style::Ele
     if (shouldTearDownRenderers)
         tearDownRenderers(element, TeardownType::KeepHoverAndActive);
 
-    bool hasDisplayContest = update.style && update.style->display() == CONTENTS;
-    element.setHasDisplayContents(hasDisplayContest);
-
-    bool shouldCreateNewRenderer = !element.renderer() && update.style && !hasDisplayContest;
+    bool shouldCreateNewRenderer = !element.renderer() && update.style && !hasImplicitDisplayContents(element);
     if (shouldCreateNewRenderer) {
         if (element.hasCustomStyleResolveCallbacks())
             element.willAttachRenderers();
index 19e1ecd..b16125f 100644 (file)
@@ -172,6 +172,9 @@ static bool affectsRenderedSubtree(Element& element, const RenderStyle& newStyle
         return true;
     if (newStyle.display() != NONE)
         return true;
+    // FIXME: Make 'contents' an actual display property value.
+    if (hasImplicitDisplayContents(element))
+        return true;
     if (element.rendererIsNeeded(newStyle))
         return true;
     if (element.shouldMoveToFlowThread(newStyle))
@@ -373,7 +376,7 @@ void TreeResolver::resolveComposedTree()
         ElementUpdate update;
         update.style = element.renderStyle();
 
-        bool shouldResolve = parent.change >= Inherit || element.needsStyleRecalc() || shouldResolveForPseudoElement || affectedByPreviousSibling || element.hasDisplayContents();
+        bool shouldResolve = parent.change >= Inherit || element.needsStyleRecalc() || shouldResolveForPseudoElement || affectedByPreviousSibling || hasImplicitDisplayContents(element);
         if (shouldResolve) {
 #if PLATFORM(IOS)
             CheckForVisibilityChangeOnRecalcStyle checkForVisibilityChange(&element, element.renderStyle());