Index: Source/core/dom/Document.cpp |
diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp |
index 83fdf6f939b7ef19b529c1958ab6bf90a4be5069..6a4f0e2b59f2e4631bfc56e442dcc7cd3e0cbe94 100644 |
--- a/Source/core/dom/Document.cpp |
+++ b/Source/core/dom/Document.cpp |
@@ -2166,19 +2166,13 @@ |
void Document::prepareForDestruction() |
{ |
- ASSERT(!m_frame || m_frame->tree().childCount() == 0); |
- |
+ m_markers->prepareForDestruction(); |
+ disconnectDescendantFrames(); |
+ |
+ // The process of disconnecting descendant frames could have already detached us. |
if (!isActive()) |
return; |
- ScriptForbiddenScope forbidScript; |
- // We detach the FrameView's custom scroll bars as early as |
- // possible to prevent detach() from messing with the view |
- // such that its scroll bars won't be torn down. |
- // |
- // FIXME: We should revisit this. |
- view()->prepareForDetach(); |
- m_markers->prepareForDestruction(); |
if (LocalDOMWindow* window = this->domWindow()) |
window->willDetachDocumentFromFrame(); |
detach(); |