summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Svetoslav Ganov <svetoslavganov@google.com> 2012-10-05 20:04:37 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-10-05 20:04:37 -0700
commitd9c99124d4870361c7c1e28fb78adf245eb1305a (patch)
tree199280b7928a833f12938cdb59b8d8a7611d7f01
parent4d12d5be8fafc7bfe2f677357d326514ad5986e3 (diff)
parentc8860602726d771c69a3fefedfa03419d1c03b1c (diff)
Merge "Incorrect temporary detach of accessibility focused view may lead to a crash." into jb-mr1-dev
-rw-r--r--core/java/android/view/ViewGroup.java2
-rw-r--r--core/java/android/view/ViewRootImpl.java8
2 files changed, 7 insertions, 3 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 726fa28f2ee3..db1c00aeccd2 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -3912,7 +3912,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
* @see #removeDetachedView(View, boolean)
*/
protected void detachViewFromParent(View child) {
- child.clearAccessibilityFocus();
removeFromArray(indexOfChild(child));
}
@@ -3934,7 +3933,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
* @see #removeDetachedView(View, boolean)
*/
protected void detachViewFromParent(int index) {
- getChildAt(index).clearAccessibilityFocus();
removeFromArray(index);
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index be2d5b3c8add..04752832aea0 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -2322,7 +2322,13 @@ public final class ViewRootImpl implements ViewParent,
mAccessibilityFocusedHost.getDrawingRect(bounds);
if (mView instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) mView;
- viewGroup.offsetDescendantRectToMyCoords(mAccessibilityFocusedHost, bounds);
+ try {
+ viewGroup.offsetDescendantRectToMyCoords(mAccessibilityFocusedHost, bounds);
+ } catch (IllegalArgumentException iae) {
+ Log.e(TAG, "Temporary detached view that was neither removed not reattached: "
+ + mAccessibilityFocusedHost);
+ return;
+ }
}
} else {
if (mAccessibilityFocusedVirtualView == null) {