From 9b7d10026670f831fe0052fcc01d29b3e921be1b Mon Sep 17 00:00:00 2001 From: Alexander Surkov Date: Sat, 29 Jan 2011 16:02:02 +0800 Subject: [PATCH] Bug 626667, part1 - getParent shouldn't repair the tree, r=davidb, a=davidb --- accessible/src/base/nsAccessible.cpp | 31 ------------------- accessible/src/base/nsAccessible.h | 2 +- .../src/base/nsApplicationAccessible.cpp | 6 ---- accessible/src/base/nsApplicationAccessible.h | 2 -- .../tests/mochitest/events/test_docload.html | 5 --- 5 files changed, 1 insertion(+), 45 deletions(-) diff --git a/accessible/src/base/nsAccessible.cpp b/accessible/src/base/nsAccessible.cpp index 14a1d773dd4d..0cfb67faf128 100644 --- a/accessible/src/base/nsAccessible.cpp +++ b/accessible/src/base/nsAccessible.cpp @@ -2828,37 +2828,6 @@ nsAccessible::RemoveChild(nsAccessible* aChild) return PR_TRUE; } -nsAccessible* -nsAccessible::GetParent() -{ - if (mParent) - return mParent; - - if (IsDefunct()) - return nsnull; - - // XXX: mParent can be null randomly because supposedly we get layout - // notification and invalidate parent-child relations, this accessible stays - // unattached. This should gone after bug 572951. - NS_WARNING("Bad accessible tree!"); - -#ifdef DEBUG - nsDocAccessible *docAccessible = GetDocAccessible(); - NS_ASSERTION(docAccessible, "No document accessible for valid accessible!"); -#endif - - nsAccessible* parent = GetAccService()->GetContainerAccessible(mContent, - mWeakShell); - NS_ASSERTION(parent, "No accessible parent for valid accessible!"); - if (!parent) - return nsnull; - - // Repair parent-child relations. - parent->EnsureChildren(); - NS_ASSERTION(parent == mParent, "Wrong children repair!"); - return parent; -} - nsAccessible* nsAccessible::GetChildAt(PRUint32 aIndex) { diff --git a/accessible/src/base/nsAccessible.h b/accessible/src/base/nsAccessible.h index beec6ebd57eb..083d04a02897 100644 --- a/accessible/src/base/nsAccessible.h +++ b/accessible/src/base/nsAccessible.h @@ -261,7 +261,7 @@ public: /** * Return parent accessible. */ - virtual nsAccessible* GetParent(); + nsAccessible* GetParent() const { return mParent; } /** * Return child accessible at the given index. diff --git a/accessible/src/base/nsApplicationAccessible.cpp b/accessible/src/base/nsApplicationAccessible.cpp index 665cd07e046d..9e5738961c07 100644 --- a/accessible/src/base/nsApplicationAccessible.cpp +++ b/accessible/src/base/nsApplicationAccessible.cpp @@ -410,12 +410,6 @@ nsApplicationAccessible::InvalidateChildren() // and RemoveChild() method calls. } -nsAccessible* -nsApplicationAccessible::GetParent() -{ - return nsnull; -} - //////////////////////////////////////////////////////////////////////////////// // nsAccessible protected methods diff --git a/accessible/src/base/nsApplicationAccessible.h b/accessible/src/base/nsApplicationAccessible.h index 7d20fa4c3063..ae375260c9a9 100644 --- a/accessible/src/base/nsApplicationAccessible.h +++ b/accessible/src/base/nsApplicationAccessible.h @@ -131,8 +131,6 @@ public: virtual void InvalidateChildren(); - virtual nsAccessible* GetParent(); - protected: // nsAccessible diff --git a/accessible/tests/mochitest/events/test_docload.html b/accessible/tests/mochitest/events/test_docload.html index ae801034ecc8..f0c3416e450f 100644 --- a/accessible/tests/mochitest/events/test_docload.html +++ b/accessible/tests/mochitest/events/test_docload.html @@ -127,11 +127,6 @@ try { docAcc = docAcc.parent; } catch (e) { - // XXX: it may randomaly fail on propertypage accessible of browser's - // tabbbrowser if nsIAccessible::parent returns cached parent only. - // This should gone after bug 572951. - // Error: failed | Can't get parent for [ 'panel1277435313424' , - // role: propertypage] ok(false, "Can't get parent for " + prettyName(docAcc)); throw e; }