Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e16a5009 authored by Svetoslav's avatar Svetoslav Committed by Svetoslav Ganov
Browse files

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
parent 937c4dbb
Loading
Loading
Loading
Loading
+5 −11
Original line number Original line Diff line number Diff line
@@ -225,17 +225,11 @@ public final class AccessibilityInteractionClient
        try {
        try {
            IAccessibilityServiceConnection connection = getConnection(connectionId);
            IAccessibilityServiceConnection connection = getConnection(connectionId);
            if (connection != null) {
            if (connection != null) {
                List<AccessibilityWindowInfo> windows = sAccessibilityCache.getWindows();
                // The system is just sending data for windows that we introspected
                if (windows != null) {
                // and changed but not ones that appeared, so we have to always call
                    if (DEBUG) {
                // into the system process. This is less expensice as opposed to
                        Log.i(LOG_TAG, "Window cache hit");
                // sending all windows on every window change.
                    }
                List<AccessibilityWindowInfo> windows = connection.getWindows();
                    return windows;
                }
                if (DEBUG) {
                    Log.i(LOG_TAG, "Window cache miss");
                }
                windows = connection.getWindows();
                if (windows != null) {
                if (windows != null) {
                    final int windowCount = windows.size();
                    final int windowCount = windows.size();
                    for (int i = 0; i < windowCount; i++) {
                    for (int i = 0; i < windowCount; i++) {