summaryrefslogtreecommitdiffstats
path: root/core/java/android/accessibilityservice
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2012-02-07 12:05:09 -0800
committerSvetoslav Ganov <svetoslavganov@google.com>2012-02-07 12:05:16 -0800
commitb765db590ff824fb5827fb773b14ac4286ae2774 (patch)
treed6729f855e23ccfd06845075093b809c20c4da78 /core/java/android/accessibilityservice
parent064d2d65697ecd95c72e2724cf066f8ad162d240 (diff)
downloadframeworks_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.java28
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."