Service requests can interrupt node prefetching
This is the re re..re-merging of ag/12923546 (where most of that original message is posted below). This includes various bug fixes. Slow prefetch requests would block user interactive requests, creating noticeable sluggishness and unresponsiveness in accessibility services, especially on the web. Let's make it so a user interactive requests stops prefetching. We can't interrupt an API call, but we can stop in between API calls. On the service side, we have to separate the prefetch callbacks from the find callback. And we have to make it asynchronous. It does dispatch intothe main thread, so the AccessibilityCache can remain single threaded. When the calls are interrupted on the application side, returnPendingFindAccessibilityNodeInfosInPrefetch checks the find requests that are waiting in the queue, to see if they can be addressed by the prefetch results. If they can be, we don't have to call into potentially non-performant application code. We don't check requests that have differing prefetch flags (FLAG_INCLUDE_NOT_IMPORTANT_VIEWS, FLAG_REPORT_VIEW_IDS) that would result in different caches. We satisfy at most one pending request. We also make mPendingFindNodeByIdMessages thread-safe and ensure in ActionReplacingCallback we don't return null results. Merged ag/13246536, ag/13256330 Messages should be added to PrivateHandler and mPendingFindNodeIdMessages at the same time to avoid a race condition where we try removing a message from the handler before it's actually enqueued. This was causing double recycling We call into AccessibilityCache from the Binder thread, now that the cache doesn’t call out to the app main thread with a lock(ag/14020225) Added tests to verify AccessibilityInteractionController interactions Test: atest AccessibilityInteractionControllerNodeRequestsTest atest CtsAccessibilityServiceTestCases CtsAccessibilityTestCases CtsUiAutomationTestCases FrameworksServicesTests:com.android.server.accessibility FrameworksCoreTests:com.android.internal.accessibility FrameworksCoreTests:android.view.accessibility Bug: b/184076735 Change-Id: Iaad1b9100655ec86a788ba1c89edd2dd8a7df1f6
Loading
Please register or sign in to comment