| Index: Source/core/rendering/RenderObject.cpp
|
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp
|
| index 22b8f9ca66bf93bfdce2ba94bb0490a6b8c887f5..5c5b178fc3fc813735e0bdd8586dd01e4a20f601 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,22 @@ void RenderObject::clearRepaintState()
|
| setMayNeedInvalidation(false);
|
| }
|
|
|
| +bool RenderObject::isAllowedToModifyRenderTreeStructure(Document& document)
|
| +{
|
| + return DeprecatedDisableModifyRenderTreeStructureAsserts::canModifyRenderTreeStateInAnyState()
|
| + || document.lifecycle().stateAllowsRenderTreeMutations();
|
| +}
|
| +
|
| +DeprecatedDisableModifyRenderTreeStructureAsserts::DeprecatedDisableModifyRenderTreeStructureAsserts()
|
| + : m_disabler(gModifyRenderTreeStructureAnyState, true)
|
| +{
|
| +}
|
| +
|
| +bool DeprecatedDisableModifyRenderTreeStructureAsserts::canModifyRenderTreeStateInAnyState()
|
| +{
|
| + return gModifyRenderTreeStructureAnyState;
|
| +}
|
| +
|
| } // namespace WebCore
|
|
|
| #ifndef NDEBUG
|
|
|