diff options
author | Svetoslav Ganov <svetoslavganov@google.com> | 2012-02-07 12:05:09 -0800 |
---|---|---|
committer | Svetoslav Ganov <svetoslavganov@google.com> | 2012-02-07 12:05:16 -0800 |
commit | b765db590ff824fb5827fb773b14ac4286ae2774 (patch) | |
tree | d6729f855e23ccfd06845075093b809c20c4da78 /core/java/android/accessibilityservice | |
parent | 064d2d65697ecd95c72e2724cf066f8ad162d240 (diff) | |
download | frameworks_base-b765db590ff824fb5827fb773b14ac4286ae2774.zip frameworks_base-b765db590ff824fb5827fb773b14ac4286ae2774.tar.gz frameworks_base-b765db590ff824fb5827fb773b14ac4286ae2774.tar.bz2 |
Adding a method for retching the root node in UiTestAutomationBridge
bug:5974791
Change-Id: I46a8b6a259ba31f27fcd6a71d06dc34efdb4de76
Diffstat (limited to 'core/java/android/accessibilityservice')
-rw-r--r-- | core/java/android/accessibilityservice/UiTestAutomationBridge.java | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/core/java/android/accessibilityservice/UiTestAutomationBridge.java b/core/java/android/accessibilityservice/UiTestAutomationBridge.java index 9d48efc..616b796 100644 --- a/core/java/android/accessibilityservice/UiTestAutomationBridge.java +++ b/core/java/android/accessibilityservice/UiTestAutomationBridge.java @@ -63,6 +63,8 @@ public class UiTestAutomationBridge { private AccessibilityEvent mLastEvent; + private AccessibilityEvent mLastWindowStateChangeEvent; + private volatile boolean mWaitingForEventDelivery; private volatile boolean mUnprocessedEventAvailable; @@ -138,12 +140,22 @@ public class UiTestAutomationBridge { public void onAccessibilityEvent(AccessibilityEvent event) { synchronized (mLock) { while (true) { + mLastEvent = AccessibilityEvent.obtain(event); + + final int eventType = event.getEventType(); + if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED + || eventType == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) { + if (mLastWindowStateChangeEvent != null) { + mLastWindowStateChangeEvent.recycle(); + } + mLastWindowStateChangeEvent = mLastEvent; + } + if (!mWaitingForEventDelivery) { break; } if (!mUnprocessedEventAvailable) { mUnprocessedEventAvailable = true; - mLastEvent = AccessibilityEvent.obtain(event); mLock.notifyAll(); break; } @@ -409,6 +421,20 @@ public class UiTestAutomationBridge { accessibilityWindowId, accessibilityNodeId, action); } + /** + * Gets the root {@link AccessibilityNodeInfo} in the active window. + * + * @return The root info. + */ + public AccessibilityNodeInfo getRootAccessibilityNodeInfoInActiveWindow() { + synchronized (mLock) { + if (mLastWindowStateChangeEvent != null) { + return mLastWindowStateChangeEvent.getSource(); + } + } + return null; + } + private void ensureValidConnection(int connectionId) { if (connectionId == AccessibilityInteractionClient.NO_ID) { throw new IllegalStateException("UiAutomationService not connected." |