Changeset 217599 in webkit


Ignore:
Timestamp:
May 31, 2017 5:18:24 AM (7 years ago)
Author:
commit-queue@webkit.org
Message:

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

Patch by Emilio Cobos Álvarez <ecobos@igalia.com> 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):

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/editing/execCommand/justify-right-then-indent-with-problematic-body-expected.txt

    r209756 r217599  
    11Pass.
    22WebKit didn't Crash.
     3
  • trunk/Source/WebCore/ChangeLog

    r217594 r217599  
     12017-05-31  Emilio Cobos Álvarez  <ecobos@igalia.com>
     2
     3        Use the rare data's RenderStyle for display: contents.
     4        https://bugs.webkit.org/show_bug.cgi?id=172721
     5
     6        Reviewed by Antti Koivisto.
     7
     8        No new tests, no behavior change.
     9
     10        * dom/Element.cpp:
     11        (WebCore::Element::hasDisplayContents):
     12        (WebCore::Element::storeDisplayContentsStyle):
     13        * dom/Element.h:
     14        * dom/ElementRareData.h:
     15        (WebCore::ElementRareData::ElementRareData):
     16        * style/RenderTreeUpdater.cpp:
     17        (WebCore::RenderTreeUpdater::updateElementRenderer):
     18        * style/StyleTreeResolver.cpp:
     19        (WebCore::Style::TreeResolver::resolveComposedTree):
     20
    1212017-05-31  Per Arne Vollan  <pvollan@apple.com>
    222
  • trunk/Source/WebCore/dom/Element.cpp

    r217576 r217599  
    14691469bool Element::hasDisplayContents() const
    14701470{
    1471     return hasRareData() && elementRareData()->hasDisplayContents();
    1472 }
    1473 
    1474 void Element::setHasDisplayContents(bool value)
    1475 {
    1476     if (hasDisplayContents() == value)
    1477         return;
    1478     ensureElementRareData().setHasDisplayContents(value);
     1471    if (renderer() || !hasRareData())
     1472        return false;
     1473    const RenderStyle* style = elementRareData()->computedStyle();
     1474    return style && style->display() == CONTENTS;
     1475}
     1476
     1477void Element::storeDisplayContentsStyle(std::unique_ptr<RenderStyle> style)
     1478{
     1479    ASSERT(style && style->display() == CONTENTS);
     1480    ASSERT(!renderer());
     1481    ensureElementRareData().setComputedStyle(WTFMove(style));
    14791482}
    14801483
  • trunk/Source/WebCore/dom/Element.h

    r217576 r217599  
    545545
    546546    bool hasDisplayContents() const;
    547     void setHasDisplayContents(bool);
     547    void storeDisplayContentsStyle(std::unique_ptr<RenderStyle>);
    548548
    549549    using ContainerNode::setAttributeEventListener;
  • trunk/Source/WebCore/dom/ElementRareData.h

    r217477 r217599  
    118118    bool hasPendingResources() const { return m_hasPendingResources; }
    119119    void setHasPendingResources(bool has) { m_hasPendingResources = has; }
    120 
    121     bool hasDisplayContents() const { return m_hasDisplayContents; }
    122     void setHasDisplayContents(bool value) { m_hasDisplayContents = value; }
    123120
    124121private:
     
    142139    unsigned m_childrenAffectedByBackwardPositionalRules : 1;
    143140    unsigned m_childrenAffectedByPropertyBasedBackwardPositionalRules : 1;
    144     unsigned m_hasDisplayContents : 1;
    145141    unsigned m_isNamedFlowContentElement : 1;
    146142
     
    186182    , m_childrenAffectedByBackwardPositionalRules(false)
    187183    , m_childrenAffectedByPropertyBasedBackwardPositionalRules(false)
    188     , m_hasDisplayContents(false)
    189184    , m_isNamedFlowContentElement(false)
    190185    , m_regionOversetState(RegionUndefined)
  • trunk/Source/WebCore/style/RenderTreeUpdater.cpp

    r216631 r217599  
    270270    bool hasDisplayContents = update.style->display() == CONTENTS;
    271271    if (hasDisplayContents != element.hasDisplayContents()) {
    272         element.setHasDisplayContents(hasDisplayContents);
     272        if (!hasDisplayContents)
     273            element.resetComputedStyle();
     274        else
     275            element.storeDisplayContentsStyle(RenderStyle::clonePtr(*update.style));
    273276        // Render tree position needs to be recomputed as rendering siblings may be found from the display:contents subtree.
    274277        renderTreePosition().invalidateNextSibling();
  • trunk/Source/WebCore/style/StyleTreeResolver.cpp

    r216631 r217599  
    422422        bool shouldResolve = shouldResolveElement(element, parent.change) || affectedByPreviousSibling;
    423423        if (shouldResolve) {
    424             element.resetComputedStyle();
     424            if (!element.hasDisplayContents())
     425                element.resetComputedStyle();
    425426            element.resetStyleRelations();
    426427
Note: See TracChangeset for help on using the changeset viewer.