From e16a5009cc02548266e483ee2456c631914519ac Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Tue, 10 Jun 2014 18:00:12 -0700 Subject: [PATCH] Accessibility window changes not reported. On accessibility service side we were asking only for cached windows but since to optimize performance the system is sending only deltas for windows the service already introspected, new windows were not seen by the accessibility service. bug:15092286 Change-Id: I7e9c360f624c53ff1773c485a8907dc425e3352a --- .../AccessibilityInteractionClient.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/core/java/android/view/accessibility/AccessibilityInteractionClient.java b/core/java/android/view/accessibility/AccessibilityInteractionClient.java index 5b9372d13b8f2..4748402f41ffc 100644 --- a/core/java/android/view/accessibility/AccessibilityInteractionClient.java +++ b/core/java/android/view/accessibility/AccessibilityInteractionClient.java @@ -225,17 +225,11 @@ public final class AccessibilityInteractionClient try { IAccessibilityServiceConnection connection = getConnection(connectionId); if (connection != null) { - List windows = sAccessibilityCache.getWindows(); - if (windows != null) { - if (DEBUG) { - Log.i(LOG_TAG, "Window cache hit"); - } - return windows; - } - if (DEBUG) { - Log.i(LOG_TAG, "Window cache miss"); - } - windows = connection.getWindows(); + // The system is just sending data for windows that we introspected + // and changed but not ones that appeared, so we have to always call + // into the system process. This is less expensice as opposed to + // sending all windows on every window change. + List windows = connection.getWindows(); if (windows != null) { final int windowCount = windows.size(); for (int i = 0; i < windowCount; i++) {