From cddf5eacb13664100a69266b640089c92ef8b184 Mon Sep 17 00:00:00 2001 From: jonahwilliams Date: Mon, 27 Aug 2018 10:25:46 -0700 Subject: [PATCH 1/3] unconditionally set resource id to empty string --- .../android/io/flutter/view/AccessibilityBridge.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 001c7afcfd145..9ebf3ad84a622 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -144,7 +144,9 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { } AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(mOwner, virtualViewId); - result.setPackageName(mOwner.getContext().getPackageName()); + // Work around for https://github.com/flutter/flutter/issues/2101 + result.setViewIdResourceName(""); + result.setPackageName(mOwner.getContext().getPackageName()); result.setClassName("android.view.View"); result.setSource(mOwner, virtualViewId); result.setFocusable(object.isFocusable()); @@ -529,6 +531,7 @@ boolean performCursorMoveAction( @Override public AccessibilityNodeInfo findFocus(int focus) { + Log.i(TAG, "Focus on " + Integer.toString(focus)); switch (focus) { case AccessibilityNodeInfo.FOCUS_INPUT: { if (mInputFocusedObject != null) @@ -540,6 +543,7 @@ public AccessibilityNodeInfo findFocus(int focus) { return createAccessibilityNodeInfo(mA11yFocusedObject.id); } } + Log.i(TAG, "Did not find focus"); return null; } @@ -875,12 +879,12 @@ private void willRemoveSemanticsObject(SemanticsObject object) { assert mObjects.containsKey(object.id); assert mObjects.get(object.id) == object; object.parent = null; - if (mA11yFocusedObject == object) { + if (mA11yFocusedObject != null && mA11yFocusedObject.id == object.id) { sendAccessibilityEvent(mA11yFocusedObject.id, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED); mA11yFocusedObject = null; } - if (mInputFocusedObject == object) { + if (mInputFocusedObject != null && mInputFocusedObject.id == object.id) { mInputFocusedObject = null; } if (mHoveredObject == object) { From 17b71b9173f93a0f8db8060ad59e8d0ede1af453 Mon Sep 17 00:00:00 2001 From: jonahwilliams Date: Mon, 27 Aug 2018 10:29:27 -0700 Subject: [PATCH 2/3] undo unrelated changes --- .../android/io/flutter/view/AccessibilityBridge.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 9ebf3ad84a622..27e165f99221c 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -145,8 +145,8 @@ public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { AccessibilityNodeInfo result = AccessibilityNodeInfo.obtain(mOwner, virtualViewId); // Work around for https://github.com/flutter/flutter/issues/2101 - result.setViewIdResourceName(""); - result.setPackageName(mOwner.getContext().getPackageName()); + result.setViewIdResourceName(""); + result.setPackageName(mOwner.getContext().getPackageName()); result.setClassName("android.view.View"); result.setSource(mOwner, virtualViewId); result.setFocusable(object.isFocusable()); @@ -543,7 +543,6 @@ public AccessibilityNodeInfo findFocus(int focus) { return createAccessibilityNodeInfo(mA11yFocusedObject.id); } } - Log.i(TAG, "Did not find focus"); return null; } @@ -879,12 +878,12 @@ private void willRemoveSemanticsObject(SemanticsObject object) { assert mObjects.containsKey(object.id); assert mObjects.get(object.id) == object; object.parent = null; - if (mA11yFocusedObject != null && mA11yFocusedObject.id == object.id) { + if (mA11yFocusedObject == object) { sendAccessibilityEvent(mA11yFocusedObject.id, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED); mA11yFocusedObject = null; } - if (mInputFocusedObject != null && mInputFocusedObject.id == object.id) { + if (mInputFocusedObject == object) { mInputFocusedObject = null; } if (mHoveredObject == object) { From 4ddd6d04330a1b7d276159e0ba85cb6d8fc34d35 Mon Sep 17 00:00:00 2001 From: jonahwilliams Date: Mon, 27 Aug 2018 10:30:25 -0700 Subject: [PATCH 3/3] undo unrelated changes --- shell/platform/android/io/flutter/view/AccessibilityBridge.java | 1 - 1 file changed, 1 deletion(-) diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 27e165f99221c..ba15c33428c6b 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -531,7 +531,6 @@ boolean performCursorMoveAction( @Override public AccessibilityNodeInfo findFocus(int focus) { - Log.i(TAG, "Focus on " + Integer.toString(focus)); switch (focus) { case AccessibilityNodeInfo.FOCUS_INPUT: { if (mInputFocusedObject != null)