diff options
-rw-r--r-- | core/java/android/view/ViewAncestor.java | 61 | ||||
-rw-r--r-- | core/tests/coretests/src/android/accessibilityservice/InterrogationActivityTest.java | 15 |
2 files changed, 43 insertions, 33 deletions
diff --git a/core/java/android/view/ViewAncestor.java b/core/java/android/view/ViewAncestor.java index da26aba..0a5b6aa0 100644 --- a/core/java/android/view/ViewAncestor.java +++ b/core/java/android/view/ViewAncestor.java @@ -2321,20 +2321,28 @@ public final class ViewAncestor extends Handler implements ViewParent, handleDispatchSystemUiVisibilityChanged(msg.arg1); } break; case DO_FIND_ACCESSIBLITY_NODE_INFO_BY_ACCESSIBILITY_ID: { - getAccessibilityInteractionController() - .findAccessibilityNodeInfoByAccessibilityIdUiThread(msg); + if (mView != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfoByAccessibilityIdUiThread(msg); + } } break; case DO_PERFORM_ACCESSIBILITY_ACTION: { - getAccessibilityInteractionController() - .perfromAccessibilityActionUiThread(msg); + if (mView != null) { + getAccessibilityInteractionController() + .perfromAccessibilityActionUiThread(msg); + } } break; case DO_FIND_ACCESSIBLITY_NODE_INFO_BY_VIEW_ID: { - getAccessibilityInteractionController() - .findAccessibilityNodeInfoByViewIdUiThread(msg); + if (mView != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfoByViewIdUiThread(msg); + } } break; case DO_FIND_ACCESSIBLITY_NODE_INFO_BY_VIEW_TEXT: { - getAccessibilityInteractionController() - .findAccessibilityNodeInfosByViewTextUiThread(msg); + if (mView != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfosByViewTextUiThread(msg); + } } break; } } @@ -4149,44 +4157,37 @@ public final class ViewAncestor extends Handler implements ViewParent, public void findAccessibilityNodeInfoByAccessibilityId(int accessibilityId, int interactionId, IAccessibilityInteractionConnectionCallback callback) { - final ViewAncestor viewAncestor = mViewAncestor.get(); - if (viewAncestor == null) { - return; - } - getAccessibilityInteractionController() - .findAccessibilityNodeInfoByAccessibilityIdClientThread(accessibilityId, + if (mViewAncestor.get() != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfoByAccessibilityIdClientThread(accessibilityId, interactionId, callback); + } } public void performAccessibilityAction(int accessibilityId, int action, int interactionId, IAccessibilityInteractionConnectionCallback callback) { - final ViewAncestor viewAncestor = mViewAncestor.get(); - if (viewAncestor == null) { - return; + if (mViewAncestor.get() != null) { + getAccessibilityInteractionController() + .performAccessibilityActionClientThread(accessibilityId, action, interactionId, + callback); } - getAccessibilityInteractionController() - .performAccessibilityActionClientThread(accessibilityId, action, interactionId, - callback); } public void findAccessibilityNodeInfoByViewId(int viewId, int interactionId, IAccessibilityInteractionConnectionCallback callback) { - final ViewAncestor viewAncestor = mViewAncestor.get(); - if (viewAncestor == null) { - return; + if (mViewAncestor.get() != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfoByViewIdClientThread(viewId, interactionId, callback); } - getAccessibilityInteractionController() - .findAccessibilityNodeInfoByViewIdClientThread(viewId, interactionId, callback); } public void findAccessibilityNodeInfosByViewText(String text, int interactionId, IAccessibilityInteractionConnectionCallback callback) { - final ViewAncestor viewAncestor = mViewAncestor.get(); - if (viewAncestor == null) { - return; + if (mViewAncestor.get() != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfosByViewTextClientThread(text, interactionId, + callback); } - getAccessibilityInteractionController() - .findAccessibilityNodeInfosByViewTextClientThread(text, interactionId, callback); } } diff --git a/core/tests/coretests/src/android/accessibilityservice/InterrogationActivityTest.java b/core/tests/coretests/src/android/accessibilityservice/InterrogationActivityTest.java index a20cc1f..3260616 100644 --- a/core/tests/coretests/src/android/accessibilityservice/InterrogationActivityTest.java +++ b/core/tests/coretests/src/android/accessibilityservice/InterrogationActivityTest.java @@ -29,7 +29,6 @@ import android.os.SystemClock; import android.provider.Settings; import android.test.ActivityInstrumentationTestCase2; import android.test.suitebuilder.annotation.LargeTest; -import android.util.Log; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; @@ -305,7 +304,14 @@ public class InterrogationActivityTest // focus the view assertTrue(button.performAction(ACTION_FOCUS)); - SystemClock.sleep(200); + + synchronized (sConnection) { + try { + sConnection.wait(500); + } catch (InterruptedException ie) { + /* ignore */ + } + } // check that last event source AccessibilityNodeInfo source = sLastAccessibilityEvent.getSource(); @@ -436,7 +442,10 @@ public class InterrogationActivityTest public void onInterrupt() {} public void onAccessibilityEvent(AccessibilityEvent event) { - sLastAccessibilityEvent= AccessibilityEvent.obtain(event); + sLastAccessibilityEvent = AccessibilityEvent.obtain(event); + synchronized (sConnection) { + sConnection.notifyAll(); + } } }; IAccessibilityManager manager = IAccessibilityManager.Stub.asInterface( |