Changeset 155109 in webkit


Ignore:
Timestamp:
Sep 5, 2013 3:33:05 AM (11 years ago)
Author:
mihnea@adobe.com
Message:

Replace node() calls with generatingNode() for RenderRegion code
https://bugs.webkit.org/show_bug.cgi?id=120397

Reviewed by Darin Adler.

As regions will become anonymous blocks nested inside elements with the flow-from property, a first step
would be to change the calls to node() with calls to generatingNode(). In the case of regions, generatingNode()
will always return an Element* and not a Node*. Therefore, to get rid of toElement() casts, i created
a specific method RenderRegion::generatingElement that will return the generating node as Element.
No new tests as no functional change was introduced.

Original patch by Catalin Badea.

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::collectMatchingRulesForRegion):

  • dom/WebKitNamedFlow.cpp:

(WebCore::WebKitNamedFlow::getRegionsByContent):
(WebCore::WebKitNamedFlow::getRegions):

  • rendering/RenderRegion.cpp:

(WebCore::RenderRegion::regionOversetState):
(WebCore::RenderRegion::setRegionOversetState):
(WebCore::RenderRegion::checkRegionStyle):

  • rendering/RenderRegion.h:

(WebCore::RenderRegion::generatingElement):

  • rendering/RenderTreeAsText.cpp:

(WebCore::writeRenderRegionList): For pseudo-elements as regions, i want to print
{pseudo} instead of {div} marker for the parent.

Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r155108 r155109  
     12013-09-05  Mihnea Ovidenie  <mihnea@adobe.com>
     2
     3        Replace node() calls with generatingNode() for RenderRegion code
     4        https://bugs.webkit.org/show_bug.cgi?id=120397
     5
     6        Reviewed by Darin Adler.
     7
     8        As regions will become anonymous blocks nested inside elements with the flow-from property, a first step
     9        would be to change the calls to node() with calls to generatingNode(). In the case of regions, generatingNode()
     10        will always return an Element* and not a Node*. Therefore, to get rid of toElement() casts, i created
     11        a specific method RenderRegion::generatingElement that will return the generating node as Element.
     12        No new tests as no functional change was introduced.
     13
     14        Original patch by Catalin Badea.
     15
     16        * css/ElementRuleCollector.cpp:
     17        (WebCore::ElementRuleCollector::collectMatchingRulesForRegion):
     18        * dom/WebKitNamedFlow.cpp:
     19        (WebCore::WebKitNamedFlow::getRegionsByContent):
     20        (WebCore::WebKitNamedFlow::getRegions):
     21        * rendering/RenderRegion.cpp:
     22        (WebCore::RenderRegion::regionOversetState):
     23        (WebCore::RenderRegion::setRegionOversetState):
     24        (WebCore::RenderRegion::checkRegionStyle):
     25        * rendering/RenderRegion.h:
     26        (WebCore::RenderRegion::generatingElement):
     27        * rendering/RenderTreeAsText.cpp:
     28        (WebCore::writeRenderRegionList): For pseudo-elements as regions, i want to print
     29        {pseudo} instead of {div} marker for the parent.
     30
    1312013-09-05  Csaba Osztrogonác  <ossy@webkit.org>
    232
  • trunk/Source/WebCore/css/ElementRuleCollector.cpp

    r154887 r155109  
    183183    for (unsigned i = 0; i < size; ++i) {
    184184        const CSSSelector* regionSelector = matchRequest.ruleSet->regionSelectorsAndRuleSets().at(i).selector;
    185         if (checkRegionSelector(regionSelector, toElement(m_regionForStyling->node()))) {
     185        if (checkRegionSelector(regionSelector, m_regionForStyling->generatingElement())) {
    186186            RuleSet* regionRules = matchRequest.ruleSet->regionSelectorsAndRuleSets().at(i).ruleSet.get();
    187187            ASSERT(regionRules);
  • trunk/Source/WebCore/dom/WebKitNamedFlow.cpp

    r154982 r155109  
    141141                continue;
    142142            if (m_parentFlowThread->objectInFlowRegion(contentNode->renderer(), renderRegion))
    143                 regionNodes.append(renderRegion->node());
     143                regionNodes.append(renderRegion->generatingElement());
    144144        }
    145145    }
     
    168168        if (renderRegion->isPseudoElement())
    169169            continue;
    170         regionNodes.append(renderRegion->node());
     170        regionNodes.append(renderRegion->generatingElement());
    171171    }
    172172
  • trunk/Source/WebCore/rendering/RenderRegion.cpp

    r155026 r155109  
    140140RegionOversetState RenderRegion::regionOversetState() const
    141141{
    142     ASSERT(node());
     142    ASSERT(generatingElement());
    143143
    144144    if (!isValid())
    145145        return RegionUndefined;
    146146
    147     if (Element* element = toElement(node()))
    148         return element->regionOversetState();
    149    
    150     return RegionUndefined;
     147    return generatingElement()->regionOversetState();
    151148}
    152149
    153150void RenderRegion::setRegionOversetState(RegionOversetState state)
    154151{
    155     ASSERT(node());
    156 
    157     if (Element* element = toElement(node()))
    158         element->setRegionOversetState(state);
     152    ASSERT(generatingElement());
     153
     154    generatingElement()->setRegionOversetState(state);
    159155}
    160156
     
    232228
    233229    // FIXME: Region styling doesn't work for pseudo elements.
    234     if (node()) {
    235         Element* regionElement = toElement(node());
    236         customRegionStyle = view().document().ensureStyleResolver().checkRegionStyle(regionElement);
    237     }
     230    if (!isPseudoElement())
     231        customRegionStyle = view().document().ensureStyleResolver().checkRegionStyle(generatingElement());
    238232    setHasCustomRegionStyle(customRegionStyle);
    239233    m_flowThread->checkRegionsWithStyling();
  • trunk/Source/WebCore/rendering/RenderRegion.h

    r155026 r155109  
    3636namespace WebCore {
    3737
     38class Element;
    3839struct LayerFragment;
    3940typedef Vector<LayerFragment, 1> LayerFragments;
     
    152153
    153154    LayoutRect rectFlowPortionForBox(const RenderBox*, const LayoutRect&) const;
     155
     156    Element* generatingElement() const { return toElement(RenderObject::generatingNode()); }
    154157
    155158protected:
  • trunk/Source/WebCore/rendering/RenderTreeAsText.cpp

    r154937 r155109  
    670670        writeIndent(ts, indent + 2);
    671671        ts << "RenderRegion";
    672         if (renderRegion->generatingNode()) {
    673             String tagName = getTagName(renderRegion->generatingNode());
     672        if (renderRegion->generatingElement()) {
     673            String tagName = getTagName(renderRegion->node());
    674674            if (!tagName.isEmpty())
    675675                ts << " {" << tagName << "}";
    676             if (renderRegion->generatingNode()->isElementNode() && toElement(renderRegion->generatingNode())->hasID()) {
    677                 Element* element = toElement(renderRegion->generatingNode());
    678                 ts << " #" << element->idForStyleResolution();
    679             }
     676            if (renderRegion->generatingElement()->hasID())
     677                ts << " #" << renderRegion->generatingElement()->idForStyleResolution();
    680678            if (renderRegion->hasLayer())
    681679                ts << " hasLayer";
Note: See TracChangeset for help on using the changeset viewer.