Changeset 154254 in webkit
- Timestamp:
- Aug 18, 2013, 1:01:20 PM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 52 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r154253 r154254 1 2013-08-18 Antti Koivisto <antti@apple.com> 2 3 <https://webkit.org/b/119982> Make Element::attach non-virtual 4 5 Reviewed by Andreas Kling. 6 7 This will give us more future refactoring options. 8 9 * dom/Element.cpp: 10 (WebCore::Element::attach): 11 (WebCore::Element::detach): 12 13 Make non-virtual. Call element type specific custom functions as needed. 14 15 (WebCore::Element::styleForRenderer): 16 (WebCore::Element::willRecalcStyle): 17 (WebCore::Element::didRecalcStyle): 18 (WebCore::Element::willAttachRenderers): 19 (WebCore::Element::didAttachRenderers): 20 (WebCore::Element::willDetachRenderers): 21 (WebCore::Element::didDetachRenderers): 22 23 Add virtual custom callbacks. 24 25 (WebCore::Element::customStyleForRenderer): 26 * dom/Element.h: 27 * dom/Node.h: 28 (WebCore::Node::pseudoId): 29 (WebCore::Node::hasCustomStyleResolveCallbacks): 30 (WebCore::Node::setHasCustomStyleResolveCallbacks): 31 32 Use the existing bit as it largely overlaps. Rename for clarity. 33 34 (WebCore::Node::customPseudoId): 35 * dom/PseudoElement.cpp: 36 (WebCore::PseudoElement::PseudoElement): 37 (WebCore::PseudoElement::didAttachRenderers): 38 * dom/PseudoElement.h: 39 * html/HTMLCanvasElement.cpp: 40 (WebCore::HTMLCanvasElement::HTMLCanvasElement): 41 (WebCore::HTMLCanvasElement::willAttachRenderers): 42 * html/HTMLCanvasElement.h: 43 * html/HTMLFormControlElement.cpp: 44 (WebCore::HTMLFormControlElement::HTMLFormControlElement): 45 (WebCore::HTMLFormControlElement::didAttachRenderers): 46 * html/HTMLFormControlElement.h: 47 * html/HTMLFrameElement.cpp: 48 (WebCore::HTMLFrameElement::HTMLFrameElement): 49 (WebCore::HTMLFrameElement::didAttachRenderers): 50 * html/HTMLFrameElement.h: 51 * html/HTMLFrameElementBase.cpp: 52 (WebCore::HTMLFrameElementBase::HTMLFrameElementBase): 53 (WebCore::HTMLFrameElementBase::didAttachRenderers): 54 * html/HTMLFrameElementBase.h: 55 * html/HTMLFrameSetElement.cpp: 56 (WebCore::HTMLFrameSetElement::HTMLFrameSetElement): 57 (WebCore::HTMLFrameSetElement::willAttachRenderers): 58 * html/HTMLFrameSetElement.h: 59 * html/HTMLIFrameElement.cpp: 60 (WebCore::HTMLIFrameElement::HTMLIFrameElement): 61 * html/HTMLImageElement.cpp: 62 (WebCore::HTMLImageElement::HTMLImageElement): 63 (WebCore::HTMLImageElement::didAttachRenderers): 64 * html/HTMLImageElement.h: 65 * html/HTMLInputElement.cpp: 66 (WebCore::HTMLInputElement::HTMLInputElement): 67 (WebCore::HTMLInputElement::willAttachRenderers): 68 (WebCore::HTMLInputElement::didAttachRenderers): 69 (WebCore::HTMLInputElement::didDetachRenderers): 70 * html/HTMLInputElement.h: 71 * html/HTMLLIElement.cpp: 72 (WebCore::HTMLLIElement::HTMLLIElement): 73 (WebCore::HTMLLIElement::didAttachRenderers): 74 * html/HTMLLIElement.h: 75 * html/HTMLMediaElement.cpp: 76 (WebCore::HTMLMediaElement::HTMLMediaElement): 77 (WebCore::HTMLMediaElement::willAttachRenderers): 78 (WebCore::HTMLMediaElement::didAttachRenderers): 79 * html/HTMLMediaElement.h: 80 * html/HTMLOptGroupElement.cpp: 81 (WebCore::HTMLOptGroupElement::HTMLOptGroupElement): 82 (WebCore::HTMLOptGroupElement::didAttachRenderers): 83 (WebCore::HTMLOptGroupElement::willDetachRenderers): 84 * html/HTMLOptGroupElement.h: 85 * html/HTMLOptionElement.cpp: 86 (WebCore::HTMLOptionElement::HTMLOptionElement): 87 (WebCore::HTMLOptionElement::didAttachRenderers): 88 (WebCore::HTMLOptionElement::willDetachRenderers): 89 * html/HTMLOptionElement.h: 90 * html/HTMLPlugInElement.cpp: 91 (WebCore::HTMLPlugInElement::HTMLPlugInElement): 92 (WebCore::HTMLPlugInElement::willDetachRenderers): 93 * html/HTMLPlugInElement.h: 94 * html/HTMLPlugInImageElement.cpp: 95 (WebCore::HTMLPlugInImageElement::HTMLPlugInImageElement): 96 (WebCore::HTMLPlugInImageElement::didAttachRenderers): 97 (WebCore::HTMLPlugInImageElement::willDetachRenderers): 98 * html/HTMLPlugInImageElement.h: 99 * html/HTMLProgressElement.cpp: 100 (WebCore::HTMLProgressElement::HTMLProgressElement): 101 (WebCore::HTMLProgressElement::didAttachRenderers): 102 * html/HTMLProgressElement.h: 103 * html/HTMLTextAreaElement.cpp: 104 (WebCore::HTMLTextAreaElement::HTMLTextAreaElement): 105 (WebCore::HTMLTextAreaElement::didAttachRenderers): 106 * html/HTMLTextAreaElement.h: 107 * html/HTMLVideoElement.cpp: 108 (WebCore::HTMLVideoElement::HTMLVideoElement): 109 (WebCore::HTMLVideoElement::didAttachRenderers): 110 * html/HTMLVideoElement.h: 111 * html/shadow/InsertionPoint.cpp: 112 (WebCore::InsertionPoint::InsertionPoint): 113 (WebCore::InsertionPoint::willAttachRenderers): 114 (WebCore::InsertionPoint::willDetachRenderers): 115 * html/shadow/InsertionPoint.h: 116 * html/shadow/SliderThumbElement.cpp: 117 (WebCore::SliderThumbElement::SliderThumbElement): 118 (WebCore::SliderThumbElement::willDetachRenderers): 119 * html/shadow/SliderThumbElement.h: 120 * html/shadow/SpinButtonElement.cpp: 121 (WebCore::SpinButtonElement::SpinButtonElement): 122 (WebCore::SpinButtonElement::willDetachRenderers): 123 * html/shadow/SpinButtonElement.h: 124 * html/shadow/TextControlInnerElements.cpp: 125 (WebCore::TextControlInnerElement::TextControlInnerElement): 126 (WebCore::TextControlInnerTextElement::TextControlInnerTextElement): 127 (WebCore::SearchFieldCancelButtonElement::SearchFieldCancelButtonElement): 128 (WebCore::SearchFieldCancelButtonElement::willDetachRenderers): 129 (WebCore::InputFieldSpeechButtonElement::InputFieldSpeechButtonElement): 130 (WebCore::InputFieldSpeechButtonElement::willAttachRenderers): 131 (WebCore::InputFieldSpeechButtonElement::willDetachRenderers): 132 * html/shadow/TextControlInnerElements.h: 133 * style/StyleResolveTree.cpp: 134 (WebCore::Style::resolveTree): 135 * svg/SVGElement.cpp: 136 (WebCore::SVGElement::SVGElement): 137 * svg/SVGImageElement.cpp: 138 (WebCore::SVGImageElement::SVGImageElement): 139 (WebCore::SVGImageElement::didAttachRenderers): 140 * svg/SVGImageElement.h: 141 * svg/SVGUseElement.cpp: 142 (WebCore::SVGUseElement::SVGUseElement): 143 1 144 2013-08-18 Gavin Barraclough <barraclough@apple.com> 2 145 -
trunk/Source/WebCore/dom/Element.cpp
r154249 r154254 1417 1417 { 1418 1418 PostAttachCallbackDisabler callbackDisabler(this); 1419 StyleResolverParentPusher parentPusher(this);1420 1419 WidgetHierarchyUpdatesSuspensionScope suspendWidgetHierarchyUpdates; 1420 1421 if (hasCustomStyleResolveCallbacks()) 1422 willAttachRenderers(); 1421 1423 1422 1424 createRendererIfNeeded(context); … … 1426 1428 1427 1429 updatePseudoElement(BEFORE); 1430 1431 StyleResolverParentPusher parentPusher(this); 1428 1432 1429 1433 // When a shadow root exists, it does the work of attaching the children. … … 1458 1462 } 1459 1463 } 1464 1465 if (hasCustomStyleResolveCallbacks()) 1466 didAttachRenderers(); 1460 1467 } 1461 1468 … … 1485 1492 { 1486 1493 WidgetHierarchyUpdatesSuspensionScope suspendWidgetHierarchyUpdates; 1494 1495 if (hasCustomStyleResolveCallbacks()) 1496 willDetachRenderers(); 1497 1487 1498 unregisterNamedFlowContentNode(); 1488 1499 cancelFocusAppearanceUpdate(); … … 1519 1530 1520 1531 setAttached(false); 1532 1533 if (hasCustomStyleResolveCallbacks()) 1534 didDetachRenderers(); 1521 1535 } 1522 1536 … … 1564 1578 PassRefPtr<RenderStyle> Element::styleForRenderer() 1565 1579 { 1566 if (hasCustomStyle Callbacks()) {1580 if (hasCustomStyleResolveCallbacks()) { 1567 1581 if (RefPtr<RenderStyle> style = customStyleForRenderer()) 1568 1582 return style.release(); … … 3101 3115 bool Element::willRecalcStyle(Style::Change) 3102 3116 { 3103 ASSERT(hasCustomStyle Callbacks());3117 ASSERT(hasCustomStyleResolveCallbacks()); 3104 3118 return true; 3105 3119 } … … 3107 3121 void Element::didRecalcStyle(Style::Change) 3108 3122 { 3109 ASSERT(hasCustomStyleCallbacks()); 3123 ASSERT(hasCustomStyleResolveCallbacks()); 3124 } 3125 3126 void Element::willAttachRenderers() 3127 { 3128 ASSERT(hasCustomStyleResolveCallbacks()); 3129 } 3130 3131 void Element::didAttachRenderers() 3132 { 3133 ASSERT(hasCustomStyleResolveCallbacks()); 3134 } 3135 3136 void Element::willDetachRenderers() 3137 { 3138 ASSERT(hasCustomStyleResolveCallbacks()); 3139 } 3140 3141 void Element::didDetachRenderers() 3142 { 3143 ASSERT(hasCustomStyleResolveCallbacks()); 3110 3144 } 3111 3145 3112 3146 PassRefPtr<RenderStyle> Element::customStyleForRenderer() 3113 3147 { 3114 ASSERT(hasCustomStyle Callbacks());3148 ASSERT(hasCustomStyleResolveCallbacks()); 3115 3149 return 0; 3116 3150 } -
trunk/Source/WebCore/dom/Element.h
r154249 r154254 300 300 AttachContext() : resolvedStyle(0), performingReattach(false) { } 301 301 }; 302 v irtual void attach(const AttachContext& = AttachContext());303 v irtual void detach(const AttachContext& = AttachContext());302 void attach(const AttachContext& = AttachContext()); 303 void detach(const AttachContext& = AttachContext()); 304 304 void reattach(const AttachContext& = AttachContext()); 305 305 void reattachIfAttached(const AttachContext& = AttachContext()); … … 556 556 virtual bool willRecalcStyle(Style::Change); 557 557 virtual void didRecalcStyle(Style::Change); 558 558 559 void updatePseudoElement(PseudoId, Style::Change = Style::NoChange); 559 560 void resetComputedStyle(); … … 674 675 void detachChildren(const AttachContext&); 675 676 677 virtual void willAttachRenderers(); 678 virtual void didAttachRenderers(); 679 virtual void willDetachRenderers(); 680 virtual void didDetachRenderers(); 681 676 682 void createRendererIfNeeded(const AttachContext&); 677 683 -
trunk/Source/WebCore/dom/Node.h
r154165 r154254 239 239 bool isBeforePseudoElement() const { return pseudoId() == BEFORE; } 240 240 bool isAfterPseudoElement() const { return pseudoId() == AFTER; } 241 PseudoId pseudoId() const { return (isElementNode() && hasCustomStyle Callbacks()) ? customPseudoId() : NOPSEUDO; }241 PseudoId pseudoId() const { return (isElementNode() && hasCustomStyleResolveCallbacks()) ? customPseudoId() : NOPSEUDO; } 242 242 243 243 virtual bool isMediaControlElement() const { return false; } … … 267 267 268 268 bool inNamedFlow() const { return getFlag(InNamedFlowFlag); } 269 bool hasCustomStyle Callbacks() const { return getFlag(HasCustomStyleCallbacksFlag); }269 bool hasCustomStyleResolveCallbacks() const { return getFlag(HasCustomStyleResolveCallbacksFlag); } 270 270 271 271 bool isRegisteredWithNamedFlow() const; … … 636 636 InNamedFlowFlag = 1 << 19, 637 637 HasSyntheticAttrChildNodesFlag = 1 << 20, 638 HasCustomStyle CallbacksFlag = 1 << 21,638 HasCustomStyleResolveCallbacksFlag = 1 << 21, 639 639 HasScopedHTMLStyleChildFlag = 1 << 22, 640 640 HasEventTargetDataFlag = 1 << 23, … … 682 682 void clearEventTargetData(); 683 683 684 void setHasCustomStyle Callbacks() { setFlag(true, HasCustomStyleCallbacksFlag); }684 void setHasCustomStyleResolveCallbacks() { setFlag(true, HasCustomStyleResolveCallbacksFlag); } 685 685 686 686 Document* documentInternal() const { return treeScope()->documentScope(); } … … 694 694 virtual PseudoId customPseudoId() const 695 695 { 696 ASSERT(hasCustomStyle Callbacks());696 ASSERT(hasCustomStyleResolveCallbacks()); 697 697 return NOPSEUDO; 698 698 } -
trunk/Source/WebCore/dom/PseudoElement.cpp
r154232 r154254 62 62 { 63 63 ASSERT(pseudoId == BEFORE || pseudoId == AFTER); 64 setHasCustomStyle Callbacks();64 setHasCustomStyleResolveCallbacks(); 65 65 } 66 66 … … 78 78 } 79 79 80 void PseudoElement:: attach(const AttachContext& context)80 void PseudoElement::didAttachRenderers() 81 81 { 82 ASSERT(!renderer());83 84 Element::attach(context);85 86 82 RenderObject* renderer = this->renderer(); 87 83 if (!renderer || !renderer->style()->regionThread().isEmpty()) -
trunk/Source/WebCore/dom/PseudoElement.h
r154232 r154254 47 47 48 48 virtual PassRefPtr<RenderStyle> customStyleForRenderer() OVERRIDE; 49 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;49 virtual void didAttachRenderers() OVERRIDE; 50 50 virtual bool rendererIsNeeded(const NodeRenderingContext&) OVERRIDE; 51 51 -
trunk/Source/WebCore/html/HTMLCanvasElement.cpp
r154192 r154254 81 81 { 82 82 ASSERT(hasTagName(canvasTag)); 83 setHasCustomStyleResolveCallbacks(); 83 84 } 84 85 … … 121 122 } 122 123 123 void HTMLCanvasElement:: attach(const AttachContext& context)124 void HTMLCanvasElement::willAttachRenderers() 124 125 { 125 126 setIsInCanvasSubtree(true); 126 HTMLElement::attach(context);127 127 } 128 128 -
trunk/Source/WebCore/html/HTMLCanvasElement.h
r154033 r154254 148 148 virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; 149 149 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); 150 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;150 virtual void willAttachRenderers() OVERRIDE; 151 151 virtual bool areAuthorShadowsAllowed() const OVERRIDE; 152 152 -
trunk/Source/WebCore/html/HTMLFormControlElement.cpp
r154178 r154254 64 64 { 65 65 setForm(form ? form : findFormAncestor()); 66 setHasCustomStyle Callbacks();66 setHasCustomStyleResolveCallbacks(); 67 67 } 68 68 … … 209 209 } 210 210 211 void HTMLFormControlElement::attach(const AttachContext& context) 212 { 213 PostAttachCallbackDisabler disabler(this); 214 215 HTMLElement::attach(context); 216 211 void HTMLFormControlElement::didAttachRenderers() 212 { 217 213 // The call to updateFromElement() needs to go after the call through 218 214 // to the base class's attach() because that can sometimes do a close -
trunk/Source/WebCore/html/HTMLFormControlElement.h
r153783 r154254 112 112 virtual void requiredAttributeChanged(); 113 113 virtual void disabledAttributeChanged(); 114 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;114 virtual void didAttachRenderers() OVERRIDE; 115 115 virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE; 116 116 virtual void removedFrom(ContainerNode*) OVERRIDE; -
trunk/Source/WebCore/html/HTMLFrameElement.cpp
r151282 r154254 41 41 { 42 42 ASSERT(hasTagName(frameTag)); 43 setHasCustomStyleResolveCallbacks(); 43 44 } 44 45 … … 73 74 } 74 75 75 void HTMLFrameElement:: attach(const AttachContext& context)76 void HTMLFrameElement::didAttachRenderers() 76 77 { 77 HTMLFrameElementBase::attach(context); 78 78 HTMLFrameElementBase::didAttachRenderers(); 79 79 if (HTMLFrameSetElement* frameSetElement = containingFrameSetElement(this)) { 80 80 if (!m_frameBorderSet) -
trunk/Source/WebCore/html/HTMLFrameElement.h
r151282 r154254 40 40 HTMLFrameElement(const QualifiedName&, Document*); 41 41 42 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;42 virtual void didAttachRenderers() OVERRIDE; 43 43 44 44 virtual bool rendererIsNeeded(const NodeRenderingContext&); -
trunk/Source/WebCore/html/HTMLFrameElementBase.cpp
r154142 r154254 52 52 , m_viewSource(false) 53 53 { 54 setHasCustomStyleResolveCallbacks(); 54 55 } 55 56 … … 173 174 } 174 175 175 void HTMLFrameElementBase::attach(const AttachContext& context) 176 { 177 HTMLFrameOwnerElement::attach(context); 178 176 void HTMLFrameElementBase::didAttachRenderers() 177 { 179 178 if (RenderPart* part = renderPart()) { 180 179 if (Frame* frame = contentFrame()) -
trunk/Source/WebCore/html/HTMLFrameElementBase.h
r152889 r154254 53 53 virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE; 54 54 virtual void didNotifySubtreeInsertions(ContainerNode*) OVERRIDE; 55 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;55 virtual void didAttachRenderers() OVERRIDE; 56 56 57 57 private: -
trunk/Source/WebCore/html/HTMLFrameSetElement.cpp
r154142 r154254 57 57 { 58 58 ASSERT(hasTagName(framesetTag)); 59 60 setHasCustomStyleCallbacks(); 59 setHasCustomStyleResolveCallbacks(); 61 60 } 62 61 … … 166 165 } 167 166 168 void HTMLFrameSetElement:: attach(const AttachContext& context)167 void HTMLFrameSetElement::willAttachRenderers() 169 168 { 170 169 // Inherit default settings from parent frameset 171 170 // FIXME: This is not dynamic. 172 171 for (ContainerNode* node = parentNode(); node; node = node->parentNode()) { 173 if (node->hasTagName(framesetTag)) { 174 HTMLFrameSetElement* frameset = static_cast<HTMLFrameSetElement*>(node); 175 if (!m_frameborderSet) 176 m_frameborder = frameset->hasFrameBorder(); 177 if (m_frameborder) { 178 if (!m_borderSet) 179 m_border = frameset->border(); 180 if (!m_borderColorSet) 181 m_borderColorSet = frameset->hasBorderColor(); 182 } 183 if (!m_noresize) 184 m_noresize = frameset->noResize(); 185 break; 186 } 187 } 188 189 HTMLElement::attach(context); 172 if (!node->hasTagName(framesetTag)) 173 continue; 174 HTMLFrameSetElement* frameset = static_cast<HTMLFrameSetElement*>(node); 175 if (!m_frameborderSet) 176 m_frameborder = frameset->hasFrameBorder(); 177 if (m_frameborder) { 178 if (!m_borderSet) 179 m_border = frameset->border(); 180 if (!m_borderColorSet) 181 m_borderColorSet = frameset->hasBorderColor(); 182 } 183 if (!m_noresize) 184 m_noresize = frameset->noResize(); 185 } 190 186 } 191 187 -
trunk/Source/WebCore/html/HTMLFrameSetElement.h
r153783 r154254 72 72 virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStylePropertySet*) OVERRIDE; 73 73 74 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;74 virtual void willAttachRenderers() OVERRIDE; 75 75 virtual bool rendererIsNeeded(const NodeRenderingContext&); 76 76 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); -
trunk/Source/WebCore/html/HTMLIFrameElement.cpp
r153796 r154254 43 43 { 44 44 ASSERT(hasTagName(iframeTag)); 45 setHasCustomStyle Callbacks();45 setHasCustomStyleResolveCallbacks(); 46 46 } 47 47 -
trunk/Source/WebCore/html/HTMLImageElement.cpp
r154106 r154254 53 53 { 54 54 ASSERT(hasTagName(imgTag)); 55 setHasCustomStyleResolveCallbacks(); 55 56 if (form) 56 57 form->registerImgElement(this); … … 185 186 } 186 187 187 void HTMLImageElement:: attach(const AttachContext& context)188 { 189 HTMLElement::attach(context);190 191 if ( renderer() && renderer()->isImage() && !m_imageLoader.hasPendingBeforeLoadEvent()) {192 RenderImage* renderImage = toRenderImage(renderer());193 RenderImageResource* renderImageResource = renderImage->imageResource();194 if (renderImageResource->hasImage())195 return;196 re nderImageResource->setCachedImage(m_imageLoader.image());197 198 // If we have no image at all because we have no src attribute, set 199 // image height and width for the alt text instead.200 if (!m_imageLoader.image() && !renderImageResource->cachedImage())201 renderImage->setImageSizeForAltText();202 }188 void HTMLImageElement::didAttachRenderers() 189 { 190 if (!renderer() || !renderer()->isImage()) 191 return; 192 if (m_imageLoader.hasPendingBeforeLoadEvent()) 193 return; 194 RenderImage* renderImage = toRenderImage(renderer()); 195 RenderImageResource* renderImageResource = renderImage->imageResource(); 196 if (renderImageResource->hasImage()) 197 return; 198 renderImageResource->setCachedImage(m_imageLoader.image()); 199 200 // If we have no image at all because we have no src attribute, set 201 // image height and width for the alt text instead. 202 if (!m_imageLoader.image() && !renderImageResource->cachedImage()) 203 renderImage->setImageSizeForAltText(); 203 204 } 204 205 -
trunk/Source/WebCore/html/HTMLImageElement.h
r153772 r154254 91 91 virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStylePropertySet*) OVERRIDE; 92 92 93 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;93 virtual void didAttachRenderers() OVERRIDE; 94 94 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); 95 95 -
trunk/Source/WebCore/html/HTMLInputElement.cpp
r154106 r154254 136 136 { 137 137 ASSERT(hasTagName(inputTag) || hasTagName(isindexTag)); 138 setHasCustomStyleResolveCallbacks(); 138 139 } 139 140 … … 796 797 } 797 798 798 void HTMLInputElement::attach(const AttachContext& context) 799 { 800 PostAttachCallbackDisabler disabler(this); 801 799 void HTMLInputElement::willAttachRenderers() 800 { 802 801 if (!m_hasType) 803 802 updateType(); 804 805 HTMLTextFormControlElement::attach(context); 803 } 804 805 void HTMLInputElement::didAttachRenderers() 806 { 807 HTMLTextFormControlElement::didAttachRenderers(); 806 808 807 809 m_inputType->attach(); … … 811 813 } 812 814 813 void HTMLInputElement::detach(const AttachContext& context) 814 { 815 HTMLTextFormControlElement::detach(context); 815 void HTMLInputElement::didDetachRenderers() 816 { 816 817 setFormControlValueMatchesRenderer(false); 817 818 m_inputType->detach(); -
trunk/Source/WebCore/html/HTMLInputElement.h
r153647 r154254 190 190 virtual bool rendererIsNeeded(const NodeRenderingContext&); 191 191 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); 192 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE; 192 virtual void willAttachRenderers() OVERRIDE; 193 virtual void didAttachRenderers() OVERRIDE; 194 virtual void didDetachRenderers() OVERRIDE; 193 195 194 196 // FIXME: For isActivatedSubmit and setActivatedSubmit, we should use the NVI-idiom here by making … … 352 354 353 355 virtual void copyNonAttributePropertiesFromElement(const Element&); 354 355 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;356 356 357 357 virtual bool appendFormData(FormDataList&, bool); -
trunk/Source/WebCore/html/HTMLLIElement.cpp
r151282 r154254 39 39 { 40 40 ASSERT(hasTagName(liTag)); 41 setHasCustomStyleResolveCallbacks(); 41 42 } 42 43 … … 86 87 } 87 88 88 void HTMLLIElement:: attach(const AttachContext& context)89 void HTMLLIElement::didAttachRenderers() 89 90 { 90 ASSERT(!attached()); 91 if (!renderer() || !renderer()->isListItem()) 92 return; 93 RenderListItem* listItemRenderer = toRenderListItem(renderer()); 91 94 92 HTMLElement::attach(context); 95 // Find the enclosing list node. 96 Element* listNode = 0; 97 Element* current = this; 98 while (!listNode) { 99 current = current->parentElement(); 100 if (!current) 101 break; 102 if (current->hasTagName(ulTag) || current->hasTagName(olTag)) 103 listNode = current; 104 } 93 105 94 if (renderer() && renderer()->isListItem()) { 95 RenderListItem* listItemRenderer = toRenderListItem(renderer()); 106 // If we are not in a list, tell the renderer so it can position us inside. 107 // We don't want to change our style to say "inside" since that would affect nested nodes. 108 if (!listNode) 109 listItemRenderer->setNotInList(true); 96 110 97 // Find the enclosing list node. 98 Element* listNode = 0; 99 Element* current = this; 100 while (!listNode) { 101 current = current->parentElement(); 102 if (!current) 103 break; 104 if (current->hasTagName(ulTag) || current->hasTagName(olTag)) 105 listNode = current; 106 } 107 108 // If we are not in a list, tell the renderer so it can position us inside. 109 // We don't want to change our style to say "inside" since that would affect nested nodes. 110 if (!listNode) 111 listItemRenderer->setNotInList(true); 112 113 parseValue(fastGetAttribute(valueAttr)); 114 } 111 parseValue(fastGetAttribute(valueAttr)); 115 112 } 116 113 -
trunk/Source/WebCore/html/HTMLLIElement.h
r151282 r154254 40 40 virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStylePropertySet*) OVERRIDE; 41 41 42 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;42 virtual void didAttachRenderers() OVERRIDE; 43 43 44 44 void parseValue(const AtomicString&); -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r154225 r154254 328 328 { 329 329 LOG(Media, "HTMLMediaElement::HTMLMediaElement"); 330 setHasCustomStyleResolveCallbacks(); 331 330 332 document->registerForMediaVolumeCallbacks(this); 331 333 document->registerForPrivateBrowsingStateChangedCallbacks(this); … … 336 338 } 337 339 338 setHasCustomStyleCallbacks();339 340 addElementToDocumentMap(this, document); 340 341 … … 632 633 } 633 634 634 void HTMLMediaElement:: attach(const AttachContext& context)635 void HTMLMediaElement::willAttachRenderers() 635 636 { 636 637 ASSERT(!attached()); … … 639 640 m_needWidgetUpdate = true; 640 641 #endif 641 642 HTMLElement::attach(context); 643 642 } 643 644 void HTMLMediaElement::didAttachRenderers() 645 { 644 646 if (renderer()) 645 647 renderer()->updateFromElement(); -
trunk/Source/WebCore/html/HTMLMediaElement.h
r154201 r154254 387 387 virtual void finishParsingChildren(); 388 388 virtual bool isURLAttribute(const Attribute&) const OVERRIDE; 389 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE; 389 virtual void willAttachRenderers() OVERRIDE; 390 virtual void didAttachRenderers() OVERRIDE; 390 391 391 392 virtual void didMoveToNewDocument(Document* oldDocument) OVERRIDE; -
trunk/Source/WebCore/html/HTMLOptGroupElement.cpp
r153926 r154254 43 43 { 44 44 ASSERT(hasTagName(optgroupTag)); 45 setHasCustomStyle Callbacks();45 setHasCustomStyleResolveCallbacks(); 46 46 } 47 47 … … 92 92 } 93 93 94 void HTMLOptGroupElement:: attach(const AttachContext& context)94 void HTMLOptGroupElement::didAttachRenderers() 95 95 { 96 HTMLElement::attach(context);97 96 // If after attaching nothing called styleForRenderer() on this node we 98 97 // manually cache the value. This happens if our parent doesn't have a … … 102 101 } 103 102 104 void HTMLOptGroupElement:: detach(const AttachContext& context)103 void HTMLOptGroupElement::willDetachRenderers() 105 104 { 106 105 m_style.clear(); 107 HTMLElement::detach(context);108 106 } 109 107 -
trunk/Source/WebCore/html/HTMLOptGroupElement.h
r152353 r154254 47 47 virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; 48 48 virtual bool rendererIsNeeded(const NodeRenderingContext&) { return false; } 49 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;50 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;49 virtual void didAttachRenderers() OVERRIDE; 50 virtual void willDetachRenderers() OVERRIDE; 51 51 52 52 virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0); -
trunk/Source/WebCore/html/HTMLOptionElement.cpp
r153926 r154254 57 57 { 58 58 ASSERT(hasTagName(optionTag)); 59 setHasCustomStyle Callbacks();59 setHasCustomStyleResolveCallbacks(); 60 60 } 61 61 … … 91 91 } 92 92 93 void HTMLOptionElement::attach(const AttachContext& context) 94 { 95 HTMLElement::attach(context); 93 void HTMLOptionElement::didAttachRenderers() 94 { 96 95 // If after attaching nothing called styleForRenderer() on this node we 97 96 // manually cache the value. This happens if our parent doesn't have a … … 101 100 } 102 101 103 void HTMLOptionElement:: detach(const AttachContext& context)102 void HTMLOptionElement::willDetachRenderers() 104 103 { 105 104 m_style.clear(); 106 HTMLElement::detach(context);107 105 } 108 106 -
trunk/Source/WebCore/html/HTMLOptionElement.h
r153783 r154254 72 72 virtual bool isFocusable() const OVERRIDE; 73 73 virtual bool rendererIsNeeded(const NodeRenderingContext&) { return false; } 74 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;75 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;74 virtual void didAttachRenderers() OVERRIDE; 75 virtual void willDetachRenderers() OVERRIDE; 76 76 77 77 virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; -
trunk/Source/WebCore/html/HTMLPlugInElement.cpp
r154192 r154254 62 62 , m_displayState(Playing) 63 63 { 64 setHasCustomStyleResolveCallbacks(); 64 65 } 65 66 … … 94 95 } 95 96 96 void HTMLPlugInElement:: detach(const AttachContext& context)97 void HTMLPlugInElement::willDetachRenderers() 97 98 { 98 99 m_instance.clear(); … … 110 111 } 111 112 #endif 112 113 HTMLFrameOwnerElement::detach(context);114 113 } 115 114 -
trunk/Source/WebCore/html/HTMLPlugInElement.h
r151599 r154254 84 84 HTMLPlugInElement(const QualifiedName& tagName, Document*); 85 85 86 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;86 virtual void willDetachRenderers() OVERRIDE; 87 87 virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE; 88 88 virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStylePropertySet*) OVERRIDE; -
trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp
r154201 r154254 116 116 , m_snapshotDecision(SnapshotNotYetDecided) 117 117 { 118 setHasCustomStyle Callbacks();118 setHasCustomStyleResolveCallbacks(); 119 119 } 120 120 … … 232 232 } 233 233 234 void HTMLPlugInImageElement::attach(const AttachContext& context) 235 { 236 PostAttachCallbackDisabler disabler(this); 237 238 bool isImage = isImageType(); 239 240 if (!isImage) 234 void HTMLPlugInImageElement::didAttachRenderers() 235 { 236 if (!isImageType()) { 241 237 queuePostAttachCallback(&HTMLPlugInImageElement::updateWidgetCallback, this); 242 243 HTMLPlugInElement::attach(context); 244 245 if (isImage && renderer() && !useFallbackContent()) { 246 if (!m_imageLoader) 247 m_imageLoader = adoptPtr(new HTMLImageLoader(this)); 248 m_imageLoader->updateFromElement(); 249 } 250 } 251 252 void HTMLPlugInImageElement::detach(const AttachContext& context) 253 { 254 // FIXME: Because of the insanity that is HTMLPlugInImageElement::recalcStyle, 238 return; 239 } 240 if (!renderer() || useFallbackContent()) 241 return; 242 if (!m_imageLoader) 243 m_imageLoader = adoptPtr(new HTMLImageLoader(this)); 244 m_imageLoader->updateFromElement(); 245 } 246 247 void HTMLPlugInImageElement::willDetachRenderers() 248 { 249 // FIXME: Because of the insanity that is HTMLPlugInImageElement::willRecalcStyle, 255 250 // we can end up detaching during an attach() call, before we even have a 256 251 // renderer. In that case, don't mark the widget for update. 257 if (attached() && renderer() && !useFallbackContent()) 258 // Update the widget the next time we attach (detaching destroys the plugin). 259 setNeedsWidgetUpdate(true); 260 HTMLPlugInElement::detach(context); 252 if (!attached() || !renderer()) 253 return; 254 if (useFallbackContent()) 255 return; 256 // Update the widget the next time we attach (detaching destroys the plugin). 257 setNeedsWidgetUpdate(true); 258 259 HTMLPlugInElement::willDetachRenderers(); 261 260 } 262 261 -
trunk/Source/WebCore/html/HTMLPlugInImageElement.h
r153783 r154254 110 110 111 111 static void updateWidgetCallback(Node*, unsigned = 0); 112 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;113 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;112 virtual void didAttachRenderers() OVERRIDE; 113 virtual void willDetachRenderers() OVERRIDE; 114 114 115 115 bool allowedToLoadFrameURL(const String& url); -
trunk/Source/WebCore/html/HTMLProgressElement.cpp
r151947 r154254 46 46 { 47 47 ASSERT(hasTagName(progressTag)); 48 setHasCustomStyleResolveCallbacks(); 48 49 } 49 50 … … 92 93 } 93 94 94 void HTMLProgressElement:: attach(const AttachContext& context)95 void HTMLProgressElement::didAttachRenderers() 95 96 { 96 LabelableElement::attach(context);97 97 if (RenderProgress* render = renderProgress()) 98 98 render->updateFromElement(); -
trunk/Source/WebCore/html/HTMLProgressElement.h
r151282 r154254 61 61 virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; 62 62 63 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;63 virtual void didAttachRenderers() OVERRIDE; 64 64 65 65 void didElementStateChange(); -
trunk/Source/WebCore/html/HTMLTextAreaElement.cpp
r154240 r154254 98 98 ASSERT(hasTagName(textareaTag)); 99 99 setFormControlValueMatchesRenderer(true); 100 setHasCustomStyleResolveCallbacks(); 100 101 } 101 102 … … 516 517 } 517 518 518 void HTMLTextAreaElement:: attach(const AttachContext& context)519 { 520 HTMLTextFormControlElement:: attach(context);519 void HTMLTextAreaElement::didAttachRenderers() 520 { 521 HTMLTextFormControlElement::didAttachRenderers(); 521 522 fixPlaceholderRenderer(m_placeholder, innerTextElement()); 522 523 } -
trunk/Source/WebCore/html/HTMLTextAreaElement.h
r152353 r154254 112 112 113 113 virtual bool shouldUseInputMethod() OVERRIDE; 114 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;114 virtual void didAttachRenderers() OVERRIDE; 115 115 virtual bool matchesReadOnlyPseudoClass() const OVERRIDE; 116 116 virtual bool matchesReadWritePseudoClass() const OVERRIDE; -
trunk/Source/WebCore/html/HTMLVideoElement.cpp
r154142 r154254 52 52 { 53 53 ASSERT(hasTagName(videoTag)); 54 setHasCustomStyleResolveCallbacks(); 54 55 if (document->settings()) 55 56 m_defaultPosterURL = document->settings()->defaultVideoPosterURL(); … … 75 76 #endif 76 77 77 void HTMLVideoElement:: attach(const AttachContext& context)78 { 79 HTMLMediaElement:: attach(context);78 void HTMLVideoElement::didAttachRenderers() 79 { 80 HTMLMediaElement::didAttachRenderers(); 80 81 81 82 #if !ENABLE(PLUGIN_PROXY_FOR_VIDEO) -
trunk/Source/WebCore/html/HTMLVideoElement.h
r152614 r154254 79 79 virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); 80 80 #endif 81 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;81 virtual void didAttachRenderers() OVERRIDE; 82 82 virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE; 83 83 virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE; -
trunk/Source/WebCore/html/shadow/InsertionPoint.cpp
r154165 r154254 46 46 , m_hasDistribution(false) 47 47 { 48 setHasCustomStyleResolveCallbacks(); 48 49 } 49 50 … … 52 53 } 53 54 54 void InsertionPoint:: attach(const AttachContext& context)55 void InsertionPoint::willAttachRenderers() 55 56 { 56 57 if (ShadowRoot* shadowRoot = containingShadowRoot()) … … 64 65 } 65 66 if (current->isElementNode()) 66 toElement(current)->attach(context); 67 } 68 HTMLElement::attach(context); 69 } 70 71 void InsertionPoint::detach(const AttachContext& context) 67 toElement(current)->attach(); 68 } 69 } 70 71 void InsertionPoint::willDetachRenderers() 72 72 { 73 73 if (ShadowRoot* shadowRoot = containingShadowRoot()) … … 80 80 } 81 81 if (current->isElementNode()) 82 toElement(current)->detach(context); 83 } 84 HTMLElement::detach(context); 82 toElement(current)->detach(); 83 } 85 84 } 86 85 -
trunk/Source/WebCore/html/shadow/InsertionPoint.h
r154106 r154254 66 66 void setResetStyleInheritance(bool); 67 67 68 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;69 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;68 virtual void willAttachRenderers() OVERRIDE; 69 virtual void willDetachRenderers() OVERRIDE; 70 70 71 71 bool shouldUseFallbackElements() const; -
trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp
r154178 r154254 207 207 // -------------------------------- 208 208 209 SliderThumbElement::SliderThumbElement(Document* document) 210 : HTMLDivElement(HTMLNames::divTag, document) 211 , m_inDragMode(false) 212 { 213 setHasCustomStyleResolveCallbacks(); 214 } 215 209 216 void SliderThumbElement::setPositionFromValue() 210 217 { … … 386 393 } 387 394 388 void SliderThumbElement:: detach(const AttachContext& context)395 void SliderThumbElement::willDetachRenderers() 389 396 { 390 397 if (m_inDragMode) { … … 392 399 frame->eventHandler().setCapturingMouseEventsNode(0); 393 400 } 394 HTMLDivElement::detach(context);395 401 } 396 402 -
trunk/Source/WebCore/html/shadow/SliderThumbElement.h
r151947 r154254 55 55 virtual bool willRespondToMouseMoveEvents() OVERRIDE; 56 56 virtual bool willRespondToMouseClickEvents() OVERRIDE; 57 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;57 virtual void willDetachRenderers() OVERRIDE; 58 58 virtual const AtomicString& shadowPseudoId() const; 59 59 HTMLInputElement* hostInput() const; … … 73 73 bool m_inDragMode; 74 74 }; 75 76 inline SliderThumbElement::SliderThumbElement(Document* document)77 : HTMLDivElement(HTMLNames::divTag, document)78 , m_inDragMode(false)79 {80 }81 75 82 76 inline PassRefPtr<SliderThumbElement> SliderThumbElement::create(Document* document) -
trunk/Source/WebCore/html/shadow/SpinButtonElement.cpp
r154178 r154254 51 51 , m_repeatingTimer(this, &SpinButtonElement::repeatingTimerFired) 52 52 { 53 setHasCustomStyleResolveCallbacks(); 53 54 } 54 55 … … 64 65 } 65 66 66 void SpinButtonElement:: detach(const AttachContext& context)67 void SpinButtonElement::willDetachRenderers() 67 68 { 68 69 releaseCapture(); 69 HTMLDivElement::detach(context);70 70 } 71 71 -
trunk/Source/WebCore/html/shadow/SpinButtonElement.h
r151282 r154254 71 71 72 72 virtual const AtomicString& shadowPseudoId() const; 73 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;73 virtual void willDetachRenderers() OVERRIDE; 74 74 virtual bool isSpinButtonElement() const { return true; } 75 75 virtual bool isDisabledFormControl() const OVERRIDE { return shadowHost() && shadowHost()->isDisabledFormControl(); } -
trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp
r154178 r154254 66 66 : HTMLDivElement(divTag, document) 67 67 { 68 setHasCustomStyle Callbacks();68 setHasCustomStyleResolveCallbacks(); 69 69 } 70 70 … … 85 85 : HTMLDivElement(divTag, document) 86 86 { 87 setHasCustomStyle Callbacks();87 setHasCustomStyleResolveCallbacks(); 88 88 } 89 89 … … 183 183 , m_capturing(false) 184 184 { 185 setHasCustomStyleResolveCallbacks(); 185 186 } 186 187 … … 196 197 } 197 198 198 void SearchFieldCancelButtonElement:: detach(const AttachContext& context)199 void SearchFieldCancelButtonElement::willDetachRenderers() 199 200 { 200 201 if (m_capturing) { … … 202 203 frame->eventHandler().setCapturingMouseEventsNode(0); 203 204 } 204 HTMLDivElement::detach(context); 205 } 206 205 } 207 206 208 207 void SearchFieldCancelButtonElement::defaultEventHandler(Event* event) … … 265 264 , m_listenerId(0) 266 265 { 266 setHasCustomStyleResolveCallbacks(); 267 267 } 268 268 … … 405 405 } 406 406 407 void InputFieldSpeechButtonElement:: attach(const AttachContext& context)407 void InputFieldSpeechButtonElement::willAttachRenderers() 408 408 { 409 409 ASSERT(!m_listenerId); 410 410 if (SpeechInput* input = SpeechInput::from(document()->page())) 411 411 m_listenerId = input->registerListener(this); 412 HTMLDivElement::attach(context); 413 } 414 415 void InputFieldSpeechButtonElement::detach(const AttachContext& context) 412 } 413 414 void InputFieldSpeechButtonElement::willDetachRenderers() 416 415 { 417 416 if (m_capturing) { … … 426 425 m_listenerId = 0; 427 426 } 428 429 HTMLDivElement::detach(context);430 427 } 431 428 -
trunk/Source/WebCore/html/shadow/TextControlInnerElements.h
r151282 r154254 92 92 SearchFieldCancelButtonElement(Document*); 93 93 virtual const AtomicString& shadowPseudoId() const; 94 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;94 virtual void willDetachRenderers() OVERRIDE; 95 95 virtual bool isMouseFocusable() const OVERRIDE { return false; } 96 96 … … 113 113 virtual ~InputFieldSpeechButtonElement(); 114 114 115 virtual void detach();116 115 virtual void defaultEventHandler(Event*); 117 116 virtual bool willRespondToMouseClickEvents(); … … 132 131 virtual const AtomicString& shadowPseudoId() const; 133 132 virtual bool isMouseFocusable() const OVERRIDE { return false; } 134 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE; 133 virtual void willAttachRenderers() OVERRIDE; 134 virtual void willDetachRenderera) OVERRIDE; 135 135 136 136 137 bool m_capturing; -
trunk/Source/WebCore/style/StyleResolveTree.cpp
r154106 r154254 221 221 ASSERT(change != Detach); 222 222 223 if (current->hasCustomStyle Callbacks()) {223 if (current->hasCustomStyleResolveCallbacks()) { 224 224 if (!current->willRecalcStyle(change)) 225 225 return; … … 280 280 current->clearChildNeedsStyleRecalc(); 281 281 282 if (current->hasCustomStyle Callbacks())282 if (current->hasCustomStyleResolveCallbacks()) 283 283 current->didRecalcStyle(change); 284 284 } -
trunk/Source/WebCore/svg/SVGElement.cpp
r154165 r154254 54 54 : StyledElement(tagName, document, constructionType) 55 55 { 56 setHasCustomStyle Callbacks();56 setHasCustomStyleResolveCallbacks(); 57 57 } 58 58 -
trunk/Source/WebCore/svg/SVGImageElement.cpp
r152526 r154254 67 67 ASSERT(isSVGImageElement(this)); 68 68 registerAnimatedPropertiesForSVGImageElement(); 69 setHasCustomStyleResolveCallbacks(); 69 70 } 70 71 … … 194 195 } 195 196 196 void SVGImageElement::attach(const AttachContext& context) 197 { 198 SVGGraphicsElement::attach(context); 199 197 void SVGImageElement::didAttachRenderers() 198 { 200 199 if (RenderSVGImage* imageObj = toRenderSVGImage(renderer())) { 201 200 if (imageObj->imageResource()->hasImage()) -
trunk/Source/WebCore/svg/SVGImageElement.h
r152524 r154254 52 52 virtual void svgAttributeChanged(const QualifiedName&); 53 53 54 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;54 virtual void didAttachRenderers() OVERRIDE; 55 55 virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE; 56 56 -
trunk/Source/WebCore/svg/SVGUseElement.cpp
r154106 r154254 93 93 , m_svgLoadEventTimer(this, &SVGElement::svgLoadEventTimerFired) 94 94 { 95 ASSERT(hasCustomStyle Callbacks());95 ASSERT(hasCustomStyleResolveCallbacks()); 96 96 ASSERT(hasTagName(SVGNames::useTag)); 97 97 registerAnimatedPropertiesForSVGUseElement();
Note:
See TracChangeset
for help on using the changeset viewer.