Chromium Code Reviews| Index: Source/core/rendering/RenderObject.cpp |
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp |
| index f96b3e8e279e98f33374b337fd121df94b189e8f..1aed7eebd18233d8582d76c1f4097397b68d6e08 100644 |
| --- a/Source/core/rendering/RenderObject.cpp |
| +++ b/Source/core/rendering/RenderObject.cpp |
| @@ -96,6 +96,12 @@ using namespace std; |
| namespace WebCore { |
| +namespace { |
| + |
| +static bool gModifyRenderTreeStructureAnyState = false; |
| + |
| +} // namespace |
| + |
| using namespace HTMLNames; |
| #ifndef NDEBUG |
| @@ -143,6 +149,8 @@ void RenderObject::operator delete(void* ptr) |
| RenderObject* RenderObject::createObject(Element* element, RenderStyle* style) |
| { |
| + ASSERT(isAllowedToModifyRenderTreeStructure(element->document())); |
| + |
| // Minimal support for content properties replacing an entire element. |
| // Works only if we have exactly one piece of content and it's a URL. |
| // Otherwise acts as if we didn't support this feature. |
| @@ -296,6 +304,8 @@ bool RenderObject::requiresAnonymousTableWrappers(const RenderObject* newChild) |
| void RenderObject::addChild(RenderObject* newChild, RenderObject* beforeChild) |
| { |
| + ASSERT(isAllowedToModifyRenderTreeStructure(document())); |
| + |
| RenderObjectChildList* children = virtualChildren(); |
| ASSERT(children); |
| if (!children) |
| @@ -334,6 +344,8 @@ void RenderObject::addChild(RenderObject* newChild, RenderObject* beforeChild) |
| void RenderObject::removeChild(RenderObject* oldChild) |
| { |
| + ASSERT(isAllowedToModifyRenderTreeStructure(document())); |
| + |
| RenderObjectChildList* children = virtualChildren(); |
| ASSERT(children); |
| if (!children) |
| @@ -3411,6 +3423,20 @@ void RenderObject::clearRepaintState() |
| setMayNeedInvalidation(false); |
| } |
| +bool RenderObject::isAllowedToModifyRenderTreeStructure(Document& document) |
| +{ |
| + return DeprecatedDisableModifyRenderTreeStructureAsserts::canModifyRenderTreeStateInAnyState() |
| + || document.lifecycle().stateAllowsRenderTreeMutations(); |
| +} |
| + |
| +DeprecatedDisableModifyRenderTreeStructureAsserts::DeprecatedDisableModifyRenderTreeStructureAsserts() |
| + : m_disabler(gModifyRenderTreeStructureAnyState, true) { } |
|
esprehn
2014/05/08 05:41:25
These braces are placed wrong.
dsinclair
2014/05/08 19:32:11
Done.
|
| + |
| +bool DeprecatedDisableModifyRenderTreeStructureAsserts::canModifyRenderTreeStateInAnyState() |
| +{ |
| + return gModifyRenderTreeStructureAnyState; |
| +} |
| + |
| } // namespace WebCore |
| #ifndef NDEBUG |