Changeset 117242 in webkit


Ignore:
Timestamp:
May 16, 2012 2:32:02 AM (12 years ago)
Author:
morrita@google.com
Message:

HasCustomWillOrDidRecalcStyleFlag and family should live in a bit.
https://bugs.webkit.org/show_bug.cgi?id=86175

Reviewed by Ryosuke Niwa.

This change unifies following flags into one HasCustomCallbacksFlag.

  • HasCustomWillOrDidRecalcStyleFlag
  • HasCustomStyleForRendererFlag
  • IsFrameOwnerElementFlag

By this change, some callbacks can be called even if there are no override.
So all custom callbacks should just pass these invocations.

No new tests. No behavior change.

  • dom/ContainerNodeAlgorithms.h:

(WebCore::ChildFrameDisconnector::collectDescendant):

  • dom/Element.cpp:

(WebCore::Element::styleForRenderer):
(WebCore::Element::recalcStyle):
(WebCore::Element::willRecalcStyle):
(WebCore):
(WebCore::Element::didRecalcStyle):
(WebCore::Element::customStyleForRenderer):

  • dom/Element.h:

(Element):

  • dom/Node.h:

(WebCore::Node::isFrameOwnerElement):
(WebCore::Node::hasCustomCallbacks):
(WebCore::Node::setHasCustomCallbacks):

  • dom/Text.cpp:

(WebCore::Text::recalcTextStyle):
(WebCore::Text::willRecalcTextStyle):
(WebCore):

  • dom/Text.h:

(Text):

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::HTMLFormControlElement):

  • html/HTMLFrameOwnerElement.cpp:

(WebCore::HTMLFrameOwnerElement::disconnectContentFrame):

  • html/HTMLFrameOwnerElement.h:
  • html/HTMLFrameSetElement.cpp:

(WebCore::HTMLFrameSetElement::HTMLFrameSetElement):

  • html/HTMLIFrameElement.cpp:

(WebCore::HTMLIFrameElement::HTMLIFrameElement):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::HTMLPlugInImageElement):
(WebCore::HTMLPlugInImageElement::documentWillSuspendForPageCache):
(WebCore::HTMLPlugInImageElement::documentDidResumeFromPageCache):
(WebCore::HTMLPlugInImageElement::customStyleForRenderer):

  • html/HTMLPlugInImageElement.h:

(HTMLPlugInImageElement):

  • html/shadow/TextControlInnerElements.cpp:

(WebCore::TextControlInnerElement::TextControlInnerElement):
(WebCore::TextControlInnerElement::customStyleForRenderer):
(WebCore::TextControlInnerTextElement::TextControlInnerTextElement):
(WebCore::TextControlInnerTextElement::customStyleForRenderer):

  • html/shadow/TextControlInnerElements.h:

(TextControlInnerElement):
(TextControlInnerTextElement):

  • html/shadow/TextFieldDecorationElement.cpp:

(WebCore::TextFieldDecorationElement::TextFieldDecorationElement):
(WebCore::TextFieldDecorationElement::customStyleForRenderer):

  • html/shadow/TextFieldDecorationElement.h:

(TextFieldDecorationElement):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::SVGElement):
(WebCore::SVGElement::customStyleForRenderer):

  • svg/SVGElement.h:

(SVGElement):

  • svg/SVGTRefElement.cpp:

(WebCore::SVGShadowText::SVGShadowText):

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::SVGUseElement):

Location:
trunk/Source/WebCore
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r117241 r117242  
     12012-05-16  MORITA Hajime  <morrita@google.com>
     2
     3        HasCustomWillOrDidRecalcStyleFlag and family should live in a bit.
     4        https://bugs.webkit.org/show_bug.cgi?id=86175
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        This change unifies following flags into one HasCustomCallbacksFlag.
     9        - HasCustomWillOrDidRecalcStyleFlag
     10        - HasCustomStyleForRendererFlag
     11        - IsFrameOwnerElementFlag
     12
     13        By this change, some callbacks can be called even if there are no override.
     14        So all custom callbacks should just pass these invocations.
     15
     16        No new tests. No behavior change.
     17
     18        * dom/ContainerNodeAlgorithms.h:
     19        (WebCore::ChildFrameDisconnector::collectDescendant):
     20        * dom/Element.cpp:
     21        (WebCore::Element::styleForRenderer):
     22        (WebCore::Element::recalcStyle):
     23        (WebCore::Element::willRecalcStyle):
     24        (WebCore):
     25        (WebCore::Element::didRecalcStyle):
     26        (WebCore::Element::customStyleForRenderer):
     27        * dom/Element.h:
     28        (Element):
     29        * dom/Node.h:
     30        (WebCore::Node::isFrameOwnerElement):
     31        (WebCore::Node::hasCustomCallbacks):
     32        (WebCore::Node::setHasCustomCallbacks):
     33        * dom/Text.cpp:
     34        (WebCore::Text::recalcTextStyle):
     35        (WebCore::Text::willRecalcTextStyle):
     36        (WebCore):
     37        * dom/Text.h:
     38        (Text):
     39        * html/HTMLFormControlElement.cpp:
     40        (WebCore::HTMLFormControlElement::HTMLFormControlElement):
     41        * html/HTMLFrameOwnerElement.cpp:
     42        (WebCore::HTMLFrameOwnerElement::disconnectContentFrame):
     43        * html/HTMLFrameOwnerElement.h:
     44        * html/HTMLFrameSetElement.cpp:
     45        (WebCore::HTMLFrameSetElement::HTMLFrameSetElement):
     46        * html/HTMLIFrameElement.cpp:
     47        (WebCore::HTMLIFrameElement::HTMLIFrameElement):
     48        * html/HTMLMediaElement.cpp:
     49        (WebCore::HTMLMediaElement::HTMLMediaElement):
     50        * html/HTMLPlugInImageElement.cpp:
     51        (WebCore::HTMLPlugInImageElement::HTMLPlugInImageElement):
     52        (WebCore::HTMLPlugInImageElement::documentWillSuspendForPageCache):
     53        (WebCore::HTMLPlugInImageElement::documentDidResumeFromPageCache):
     54        (WebCore::HTMLPlugInImageElement::customStyleForRenderer):
     55        * html/HTMLPlugInImageElement.h:
     56        (HTMLPlugInImageElement):
     57        * html/shadow/TextControlInnerElements.cpp:
     58        (WebCore::TextControlInnerElement::TextControlInnerElement):
     59        (WebCore::TextControlInnerElement::customStyleForRenderer):
     60        (WebCore::TextControlInnerTextElement::TextControlInnerTextElement):
     61        (WebCore::TextControlInnerTextElement::customStyleForRenderer):
     62        * html/shadow/TextControlInnerElements.h:
     63        (TextControlInnerElement):
     64        (TextControlInnerTextElement):
     65        * html/shadow/TextFieldDecorationElement.cpp:
     66        (WebCore::TextFieldDecorationElement::TextFieldDecorationElement):
     67        (WebCore::TextFieldDecorationElement::customStyleForRenderer):
     68        * html/shadow/TextFieldDecorationElement.h:
     69        (TextFieldDecorationElement):
     70        * svg/SVGElement.cpp:
     71        (WebCore::SVGElement::SVGElement):
     72        (WebCore::SVGElement::customStyleForRenderer):
     73        * svg/SVGElement.h:
     74        (SVGElement):
     75        * svg/SVGTRefElement.cpp:
     76        (WebCore::SVGShadowText::SVGShadowText):
     77        * svg/SVGUseElement.cpp:
     78        (WebCore::SVGUseElement::SVGUseElement):
     79
    1802012-05-16  Yury Semikhatsky  <yurys@chromium.org>
    281
  • trunk/Source/WebCore/dom/ContainerNodeAlgorithms.h

    r116730 r117242  
    304304            continue;
    305305        Element* element = toElement(node);
    306         if (element->isFrameOwnerElement())
     306        if (element->hasCustomCallbacks() && element->isFrameOwnerElement())
    307307            m_list.append(node);
    308308        if (ElementShadow* shadow = element->shadow())
  • trunk/Source/WebCore/dom/Element.cpp

    r117195 r117242  
    10411041}
    10421042
    1043 PassRefPtr<RenderStyle> Element::customStyleForRenderer()
    1044 {
    1045     ASSERT_NOT_REACHED();
    1046     return 0;
    1047 }
    1048 
    10491043PassRefPtr<RenderStyle> Element::styleForRenderer()
    10501044{
    1051     if (hasCustomStyleForRenderer())
    1052         return customStyleForRenderer();
    1053     return document()->styleResolver()->styleForElement(static_cast<Element*>(this));
     1045    if (hasCustomCallbacks()) {
     1046        if (RefPtr<RenderStyle> style = customStyleForRenderer())
     1047            return style.release();
     1048    }
     1049
     1050    return document()->styleResolver()->styleForElement(this);
    10541051}
    10551052
    10561053void Element::recalcStyle(StyleChange change)
    10571054{
    1058     if (hasCustomWillOrDidRecalcStyle()) {
     1055    if (hasCustomCallbacks()) {
    10591056        if (!willRecalcStyle(change))
    10601057            return;
     
    10841081            clearChildNeedsStyleRecalc();
    10851082
    1086             if (hasCustomWillOrDidRecalcStyle())
     1083            if (hasCustomCallbacks())
    10871084                didRecalcStyle(change);
    10881085            return;
     
    11741171    clearChildNeedsStyleRecalc();
    11751172   
    1176     if (hasCustomWillOrDidRecalcStyle())
     1173    if (hasCustomCallbacks())
    11771174        didRecalcStyle(change);
    11781175}
     
    21022099}
    21032100
     2101bool Element::willRecalcStyle(StyleChange)
     2102{
     2103    ASSERT(hasCustomCallbacks());
     2104    return true;
     2105}
     2106
     2107void Element::didRecalcStyle(StyleChange)
     2108{
     2109    ASSERT(hasCustomCallbacks());
     2110}
     2111
     2112
     2113PassRefPtr<RenderStyle> Element::customStyleForRenderer()
     2114{
     2115    ASSERT(hasCustomCallbacks());
     2116    return 0;
     2117}
     2118
     2119
    21042120} // namespace WebCore
  • trunk/Source/WebCore/dom/Element.h

    r117195 r117242  
    423423    virtual void removedFrom(Node*) OVERRIDE;
    424424    virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
    425     virtual bool willRecalcStyle(StyleChange) { return true; }
    426     virtual void didRecalcStyle(StyleChange) { }
     425
     426    virtual bool willRecalcStyle(StyleChange);
     427    virtual void didRecalcStyle(StyleChange);
    427428    virtual PassRefPtr<RenderStyle> customStyleForRenderer();
    428429
  • trunk/Source/WebCore/dom/Node.h

    r117210 r117242  
    215215    virtual bool isAttributeNode() const { return false; }
    216216    virtual bool isCharacterDataNode() const { return false; }
     217    virtual bool isFrameOwnerElement() const { return false; }
    217218    bool isDocumentNode() const;
    218219    bool isShadowRoot() const { return getFlag(IsShadowRootFlag); }
    219220    bool inNamedFlow() const { return getFlag(InNamedFlowFlag); }
    220221    bool hasAttrList() const { return getFlag(HasAttrListFlag); }
    221     bool isFrameOwnerElement() const { return getFlag(IsFrameOwnerElementFlag); }
     222    bool hasCustomCallbacks() const { return getFlag(HasCustomCallbacksFlag); }
    222223
    223224    Node* shadowAncestorNode() const;
     
    687688
    688689        SelfOrAncestorHasDirAutoFlag = 1 << 22,
    689         HasCustomWillOrDidRecalcStyleFlag = 1 << 23,
    690         HasCustomStyleForRendererFlag = 1 << 24,
    691 
    692         HasNameFlag = 1 << 25,
    693 
    694         AttributeStyleDirtyFlag = 1 << 26,
     690
     691        HasNameFlag = 1 << 23,
     692
     693        AttributeStyleDirtyFlag = 1 << 24,
    695694
    696695#if ENABLE(SVG)
     
    699698        DefaultNodeFlags = IsParsingChildrenFinishedFlag | IsStyleAttributeValidFlag,
    700699#endif
    701         InNamedFlowFlag = 1 << 28,
    702         HasAttrListFlag = 1 << 29,
    703         IsFrameOwnerElementFlag = 1 << 30
     700        InNamedFlowFlag = 1 << 26,
     701        HasAttrListFlag = 1 << 27,
     702        HasCustomCallbacksFlag = 1 << 28
    704703    };
    705704
    706     // 2 bits remaining
     705    // 4 bits remaining
    707706
    708707    bool getFlag(NodeFlags mask) const { return m_nodeFlags & mask; }
     
    720719        CreateStyledElement = CreateElement | IsStyledElementFlag,
    721720        CreateHTMLElement = CreateStyledElement | IsHTMLFlag,
    722         CreateFrameOwnerElement = CreateHTMLElement | IsFrameOwnerElementFlag,
     721        CreateFrameOwnerElement = CreateHTMLElement | HasCustomCallbacksFlag,
    723722        CreateSVGElement = CreateStyledElement | IsSVGFlag,
    724723        CreateDocument = CreateContainer | InDocumentFlag
     
    738737    void clearRareData();
    739738
    740     bool hasCustomWillOrDidRecalcStyle() const { return getFlag(HasCustomWillOrDidRecalcStyleFlag); }
    741     void setHasCustomWillOrDidRecalcStyle() { setFlag(true, HasCustomWillOrDidRecalcStyleFlag); }
    742    
    743     bool hasCustomStyleForRenderer() const { return getFlag(HasCustomStyleForRendererFlag); }
    744     void setHasCustomStyleForRenderer() { setFlag(true, HasCustomStyleForRendererFlag); }
    745     void clearHasCustomStyleForRenderer() { clearFlag(HasCustomStyleForRendererFlag); }
     739    void setHasCustomCallbacks() { setFlag(true, HasCustomCallbacksFlag); }
    746740
    747741private:
  • trunk/Source/WebCore/dom/Text.cpp

    r109362 r117242  
    253253void Text::recalcTextStyle(StyleChange change)
    254254{
    255     if (hasCustomWillOrDidRecalcStyle())
     255    if (hasCustomCallbacks())
    256256        willRecalcTextStyle(change);
    257257
     
    291291
    292292    return result;
     293}
     294
     295void Text::willRecalcTextStyle(StyleChange)
     296{
     297    ASSERT_NOT_REACHED();
    293298}
    294299
  • trunk/Source/WebCore/dom/Text.h

    r107509 r117242  
    5454    }
    5555
    56     virtual void willRecalcTextStyle(StyleChange) { ASSERT_NOT_REACHED(); }
     56    virtual void willRecalcTextStyle(StyleChange);
    5757
    5858private:
  • trunk/Source/WebCore/html/HTMLFormControlElement.cpp

    r117195 r117242  
    6464{
    6565    setForm(form ? form : findFormAncestor());
    66     setHasCustomWillOrDidRecalcStyle();
     66    setHasCustomCallbacks();
    6767}
    6868
  • trunk/Source/WebCore/html/HTMLFormControlElement.h

    r117195 r117242  
    128128    virtual bool isMouseFocusable() const;
    129129
    130     virtual void didRecalcStyle(StyleChange);
     130    virtual void didRecalcStyle(StyleChange) OVERRIDE;
    131131
    132132    virtual void dispatchBlurEvent(PassRefPtr<Node> newFocusedNode);
  • trunk/Source/WebCore/html/HTMLFrameOwnerElement.cpp

    r116629 r117242  
    5252void HTMLFrameOwnerElement::disconnectContentFrame()
    5353{
     54    ASSERT(hasCustomCallbacks());
    5455    // This causes an unload event thus cannot be a part of removedFrom().
    5556    if (Frame* frame = contentFrame()) {
  • trunk/Source/WebCore/html/HTMLFrameOwnerElement.h

    r116629 r117242  
    6565
    6666    virtual bool isKeyboardFocusable(KeyboardEvent*) const;
     67    virtual bool isFrameOwnerElement() const OVERRIDE { return true; }
    6768
    6869    Frame* m_contentFrame;
  • trunk/Source/WebCore/html/HTMLFrameSetElement.cpp

    r117195 r117242  
    5757    ASSERT(hasTagName(framesetTag));
    5858   
    59     setHasCustomWillOrDidRecalcStyle();
     59    setHasCustomCallbacks();
    6060}
    6161
  • trunk/Source/WebCore/html/HTMLIFrameElement.cpp

    r117195 r117242  
    4242{
    4343    ASSERT(hasTagName(iframeTag));
    44     setHasCustomWillOrDidRecalcStyle();
     44    setHasCustomCallbacks();
    4545}
    4646
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r117195 r117242  
    280280#endif
    281281
    282     setHasCustomWillOrDidRecalcStyle();
     282    setHasCustomCallbacks();
    283283    addElementToDocumentMap(this, document);
    284284}
  • trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp

    r116687 r117242  
    3333#include "RenderImage.h"
    3434#include "SecurityOrigin.h"
     35#include "StyleResolver.h"
    3536
    3637namespace WebCore {
     
    4647    , m_needsDocumentActivationCallbacks(false)
    4748{
    48     setHasCustomWillOrDidRecalcStyle();
     49    setHasCustomCallbacks();
    4950}
    5051
     
    225226        m_customStyleForPageCache = RenderStyle::clone(renderStyle);
    226227        m_customStyleForPageCache->setDisplay(NONE);
    227         setHasCustomStyleForRenderer();
    228 
    229228        recalcStyle(Force);
    230229    }
     
    237236    if (m_customStyleForPageCache) {
    238237        m_customStyleForPageCache = 0;
    239         clearHasCustomStyleForRenderer();
    240 
    241238        recalcStyle(Force);
    242239    }
     
    247244PassRefPtr<RenderStyle> HTMLPlugInImageElement::customStyleForRenderer()
    248245{
    249     ASSERT(m_customStyleForPageCache);
     246    if (!m_customStyleForPageCache)
     247        return document()->styleResolver()->styleForElement(this);
    250248    return m_customStyleForPageCache;
    251249}
  • trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp

    r114315 r117242  
    5454    : HTMLDivElement(divTag, document)
    5555{
    56     setHasCustomStyleForRenderer();
     56    setHasCustomCallbacks();
    5757}
    5858
     
    7373    : HTMLDivElement(divTag, document)
    7474{
    75     setHasCustomStyleForRenderer();
     75    setHasCustomCallbacks();
    7676}
    7777
  • trunk/Source/WebCore/html/shadow/TextControlInnerElements.h

    r97753 r117242  
    4343protected:
    4444    TextControlInnerElement(Document*);
    45     virtual PassRefPtr<RenderStyle> customStyleForRenderer();
     45    virtual PassRefPtr<RenderStyle> customStyleForRenderer() OVERRIDE;
    4646
    4747private:
     
    5858    TextControlInnerTextElement(Document*);
    5959    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
    60     virtual PassRefPtr<RenderStyle> customStyleForRenderer();
     60    virtual PassRefPtr<RenderStyle> customStyleForRenderer() OVERRIDE;
    6161    virtual bool isMouseFocusable() const { return false; }
    6262};
  • trunk/Source/WebCore/html/shadow/TextFieldDecorationElement.cpp

    r116277 r117242  
    5959{
    6060    ASSERT(decorator);
    61     setHasCustomStyleForRenderer();
     61    setHasCustomCallbacks();
    6262}
    6363
  • trunk/Source/WebCore/svg/SVGElement.cpp

    r117210 r117242  
    5252    : StyledElement(tagName, document, constructionType)
    5353{
    54     setHasCustomStyleForRenderer();
    55     setHasCustomWillOrDidRecalcStyle();
     54    setHasCustomCallbacks();
    5655}
    5756
  • trunk/Source/WebCore/svg/SVGElement.h

    r117195 r117242  
    9292    virtual void updateAnimatedSVGAttribute(const QualifiedName&) const;
    9393 
    94     virtual PassRefPtr<RenderStyle> customStyleForRenderer();
     94    virtual PassRefPtr<RenderStyle> customStyleForRenderer() OVERRIDE;
    9595
    9696    static void synchronizeRequiredFeatures(void* contextElement);
  • trunk/Source/WebCore/svg/SVGTRefElement.cpp

    r117195 r117242  
    130130        : Text(document, data)
    131131    {
    132          setHasCustomWillOrDidRecalcStyle();
     132        setHasCustomCallbacks();
    133133    }
    134134    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
  • trunk/Source/WebCore/svg/SVGUseElement.cpp

    r117195 r117242  
    9191    , m_needsShadowTreeRecreation(false)
    9292{
     93    ASSERT(hasCustomCallbacks());
    9394    ASSERT(hasTagName(SVGNames::useTag));
    9495    registerAnimatedPropertiesForSVGUseElement();
    95 
    96     setHasCustomWillOrDidRecalcStyle();
    9796}
    9897
Note: See TracChangeset for help on using the changeset viewer.