| Index: Source/WebCore/dom/Document.cpp
|
| ===================================================================
|
| --- Source/WebCore/dom/Document.cpp (revision 145445)
|
| +++ Source/WebCore/dom/Document.cpp (working copy)
|
| @@ -409,7 +409,6 @@
|
| Document::Document(Frame* frame, const KURL& url, bool isXHTML, bool isHTML)
|
| : ContainerNode(0, CreateDocument)
|
| , TreeScope(this)
|
| - , m_guardRefCount(0)
|
| , m_styleResolverThrowawayTimer(this, &Document::styleResolverThrowawayTimerFired)
|
| , m_lastStyleResolverAccessTime(0)
|
| , m_activeParserCount(0)
|
| @@ -481,8 +480,6 @@
|
| , m_templateDocumentHost(0)
|
| #endif
|
| {
|
| - setTreeScope(this);
|
| -
|
| m_printing = false;
|
| m_paginatedForScreen = false;
|
|
|
| @@ -582,7 +579,7 @@
|
| ASSERT(m_ranges.isEmpty());
|
| ASSERT(!m_styleRecalcTimer.isActive());
|
| ASSERT(!m_parentTreeScope);
|
| - ASSERT(!m_guardRefCount);
|
| + ASSERT(!hasGuardRefCount());
|
|
|
| #if ENABLE(TEMPLATE_ELEMENT)
|
| if (m_templateDocument)
|
| @@ -649,60 +646,40 @@
|
| InspectorCounters::decrementCounter(InspectorCounters::DocumentCounter);
|
| }
|
|
|
| -void Document::removedLastRef()
|
| +void Document::dispose()
|
| {
|
| - ASSERT(!m_deletionHasBegun);
|
| - if (m_guardRefCount) {
|
| - // If removing a child removes the last self-only ref, we don't
|
| - // want the scope to be destructed until after
|
| - // removeDetachedChildren returns, so we guard ourselves with an
|
| - // extra self-only ref.
|
| - guardRef();
|
| -
|
| - // We must make sure not to be retaining any of our children through
|
| - // these extra pointers or we will create a reference cycle.
|
| - m_docType = 0;
|
| - m_focusedNode = 0;
|
| - m_hoverNode = 0;
|
| - m_activeElement = 0;
|
| - m_titleElement = 0;
|
| - m_documentElement = 0;
|
| - m_contextFeatures = ContextFeatures::defaultSwitch();
|
| - m_userActionElements.documentDidRemoveLastRef();
|
| + // We must make sure not to be retaining any of our children through
|
| + // these extra pointers or we will create a reference cycle.
|
| + m_docType = 0;
|
| + m_focusedNode = 0;
|
| + m_hoverNode = 0;
|
| + m_activeElement = 0;
|
| + m_titleElement = 0;
|
| + m_documentElement = 0;
|
| + m_contextFeatures = ContextFeatures::defaultSwitch();
|
| + m_userActionElements.documentDidRemoveLastRef();
|
| #if ENABLE(FULLSCREEN_API)
|
| - m_fullScreenElement = 0;
|
| - m_fullScreenElementStack.clear();
|
| + m_fullScreenElement = 0;
|
| + m_fullScreenElementStack.clear();
|
| #endif
|
|
|
| - detachParser();
|
| + detachParser();
|
|
|
| - // removeDetachedChildren() doesn't always unregister IDs,
|
| - // so tear down scope information upfront to avoid having stale references in the map.
|
| - destroyTreeScopeData();
|
| - removeDetachedChildren();
|
| + // removeDetachedChildren() doesn't always unregister IDs,
|
| + // so tear down scope information upfront to avoid having stale references in the map.
|
| + destroyTreeScopeData();
|
| + removeDetachedChildren();
|
|
|
| - m_markers->detach();
|
| + m_markers->detach();
|
|
|
| - m_cssCanvasElements.clear();
|
| + m_cssCanvasElements.clear();
|
|
|
| #if ENABLE(REQUEST_ANIMATION_FRAME)
|
| - // FIXME: consider using ActiveDOMObject.
|
| - if (m_scriptedAnimationController)
|
| - m_scriptedAnimationController->clearDocumentPointer();
|
| - m_scriptedAnimationController.clear();
|
| + // FIXME: consider using ActiveDOMObject.
|
| + if (m_scriptedAnimationController)
|
| + m_scriptedAnimationController->clearDocumentPointer();
|
| + m_scriptedAnimationController.clear();
|
| #endif
|
| -
|
| -#ifndef NDEBUG
|
| - m_inRemovedLastRefFunction = false;
|
| -#endif
|
| -
|
| - guardDeref();
|
| - } else {
|
| -#ifndef NDEBUG
|
| - m_deletionHasBegun = true;
|
| -#endif
|
| - delete this;
|
| - }
|
| }
|
|
|
| Element* Document::getElementById(const AtomicString& id) const
|
|
|