From 1e102378f7bd1d0a0090878209f8fe8844579310 Mon Sep 17 00:00:00 2001 From: "aaronl%netscape.com" Date: Mon, 16 Jun 2003 10:22:40 +0000 Subject: [PATCH] Bug 208265. Accessibility can crash after profile manager window closes. r=kyle, sr=alecf --- accessible/src/base/nsDocAccessible.cpp | 24 +++++++++++++++++++++--- accessible/src/base/nsRootAccessible.cpp | 10 ---------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/accessible/src/base/nsDocAccessible.cpp b/accessible/src/base/nsDocAccessible.cpp index 88d39d91ba6..a3c892adc47 100644 --- a/accessible/src/base/nsDocAccessible.cpp +++ b/accessible/src/base/nsDocAccessible.cpp @@ -569,11 +569,29 @@ void nsDocAccessible::RemoveContentDocListeners() target->RemoveEventListener(NS_LITERAL_STRING("DOMNodeInsertedIntoDocument"), this, PR_TRUE); target->RemoveEventListener(NS_LITERAL_STRING("DOMNodeRemovedFromDocument"), this, PR_TRUE); + if (mScrollWatchTimer) { + mScrollWatchTimer->Cancel(); + mScrollWatchTimer = nsnull; + } + + if (mDocLoadTimer) { + mDocLoadTimer->Cancel(); + mDocLoadTimer = nsnull; + } + nsCOMPtr container; mDocument->GetContainer(getter_AddRefs(container)); - nsCOMPtr commandManager = do_GetInterface(container); - if (commandManager) { - commandManager->RemoveCommandObserver(this, "obs_documentCreated"); + nsCOMPtr docShellTreeItem(do_QueryInterface(container)); + if (!docShellTreeItem) + return; + + PRInt32 itemType; + docShellTreeItem->GetItemType(&itemType); + if (itemType == nsIDocShellTreeItem::typeContent) { + nsCOMPtr commandManager = do_GetInterface(container); + if (commandManager) { + commandManager->RemoveCommandObserver(this, "obs_documentCreated"); + } } } diff --git a/accessible/src/base/nsRootAccessible.cpp b/accessible/src/base/nsRootAccessible.cpp index 323a6835827..98b27a190f3 100644 --- a/accessible/src/base/nsRootAccessible.cpp +++ b/accessible/src/base/nsRootAccessible.cpp @@ -203,16 +203,6 @@ NS_IMETHODIMP nsRootAccessible::RemoveEventListeners() target->RemoveEventListener(NS_LITERAL_STRING("ListitemStateChange"), NS_STATIC_CAST(nsIDOMXULListener*, this), PR_TRUE); } - if (mScrollWatchTimer) { - mScrollWatchTimer->Cancel(); - mScrollWatchTimer = nsnull; - } - - if (mDocLoadTimer) { - mDocLoadTimer->Cancel(); - mDocLoadTimer = nsnull; - } - RemoveContentDocListeners(); if (mCaretAccessible) {