Loading core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -7335,6 +7335,7 @@ package android.app { public final class UiAutomation { method public void adoptShellPermissionIdentity(); method public void adoptShellPermissionIdentity(@Nullable java.lang.String...); method public boolean clearCache(); method @Deprecated public void clearWindowAnimationFrameStats(); method public boolean clearWindowContentFrameStats(int); method public void dropShellPermissionIdentity(); core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -448,6 +448,7 @@ package android.app { method @Deprecated public boolean grantRuntimePermission(String, String, android.os.UserHandle); method public boolean injectInputEvent(@NonNull android.view.InputEvent, boolean, boolean); method public void injectInputEventToInputFilter(@NonNull android.view.InputEvent); method public boolean isNodeInCache(@NonNull android.view.accessibility.AccessibilityNodeInfo); method @Deprecated public boolean revokeRuntimePermission(String, String, android.os.UserHandle); method public void syncInputTransactions(); method public void syncInputTransactions(boolean); Loading core/java/android/app/UiAutomation.java +44 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.app; import android.accessibilityservice.AccessibilityGestureEvent; import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityService.Callbacks; import android.accessibilityservice.AccessibilityService.IAccessibilityServiceClientWrapper; import android.accessibilityservice.AccessibilityServiceInfo; Loading Loading @@ -58,6 +59,7 @@ import android.view.ViewRootImpl; import android.view.Window; import android.view.WindowAnimationFrameStats; import android.view.WindowContentFrameStats; import android.view.accessibility.AccessibilityCache; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityInteractionClient; import android.view.accessibility.AccessibilityNodeInfo; Loading Loading @@ -464,6 +466,48 @@ public final class UiAutomation { mIsDestroyed = true; } /** * Clears the accessibility cache. * * @return {@code true} if the cache was cleared * @see AccessibilityService#clearCache() */ public boolean clearCache() { final int connectionId; synchronized (mLock) { throwIfNotConnectedLocked(); connectionId = mConnectionId; } final AccessibilityCache cache = AccessibilityInteractionClient.getCache(connectionId); if (cache == null) { return false; } cache.clear(); return true; } /** * Checks if {@code node} is in the accessibility cache. * * @param node the node to check. * @return {@code true} if {@code node} is in the cache. * @hide * @see AccessibilityService#isNodeInCache(AccessibilityNodeInfo) */ @TestApi public boolean isNodeInCache(@NonNull AccessibilityNodeInfo node) { final int connectionId; synchronized (mLock) { throwIfNotConnectedLocked(); connectionId = mConnectionId; } final AccessibilityCache cache = AccessibilityInteractionClient.getCache(connectionId); if (cache == null) { return false; } return cache.isNodeInCache(node); } /** * Adopt the permission identity of the shell UID for all permissions. This allows * you to call APIs protected permissions which normal apps cannot hold but are Loading Loading
core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -7335,6 +7335,7 @@ package android.app { public final class UiAutomation { method public void adoptShellPermissionIdentity(); method public void adoptShellPermissionIdentity(@Nullable java.lang.String...); method public boolean clearCache(); method @Deprecated public void clearWindowAnimationFrameStats(); method public boolean clearWindowContentFrameStats(int); method public void dropShellPermissionIdentity();
core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -448,6 +448,7 @@ package android.app { method @Deprecated public boolean grantRuntimePermission(String, String, android.os.UserHandle); method public boolean injectInputEvent(@NonNull android.view.InputEvent, boolean, boolean); method public void injectInputEventToInputFilter(@NonNull android.view.InputEvent); method public boolean isNodeInCache(@NonNull android.view.accessibility.AccessibilityNodeInfo); method @Deprecated public boolean revokeRuntimePermission(String, String, android.os.UserHandle); method public void syncInputTransactions(); method public void syncInputTransactions(boolean); Loading
core/java/android/app/UiAutomation.java +44 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.app; import android.accessibilityservice.AccessibilityGestureEvent; import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityService.Callbacks; import android.accessibilityservice.AccessibilityService.IAccessibilityServiceClientWrapper; import android.accessibilityservice.AccessibilityServiceInfo; Loading Loading @@ -58,6 +59,7 @@ import android.view.ViewRootImpl; import android.view.Window; import android.view.WindowAnimationFrameStats; import android.view.WindowContentFrameStats; import android.view.accessibility.AccessibilityCache; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityInteractionClient; import android.view.accessibility.AccessibilityNodeInfo; Loading Loading @@ -464,6 +466,48 @@ public final class UiAutomation { mIsDestroyed = true; } /** * Clears the accessibility cache. * * @return {@code true} if the cache was cleared * @see AccessibilityService#clearCache() */ public boolean clearCache() { final int connectionId; synchronized (mLock) { throwIfNotConnectedLocked(); connectionId = mConnectionId; } final AccessibilityCache cache = AccessibilityInteractionClient.getCache(connectionId); if (cache == null) { return false; } cache.clear(); return true; } /** * Checks if {@code node} is in the accessibility cache. * * @param node the node to check. * @return {@code true} if {@code node} is in the cache. * @hide * @see AccessibilityService#isNodeInCache(AccessibilityNodeInfo) */ @TestApi public boolean isNodeInCache(@NonNull AccessibilityNodeInfo node) { final int connectionId; synchronized (mLock) { throwIfNotConnectedLocked(); connectionId = mConnectionId; } final AccessibilityCache cache = AccessibilityInteractionClient.getCache(connectionId); if (cache == null) { return false; } return cache.isNodeInCache(node); } /** * Adopt the permission identity of the shell UID for all permissions. This allows * you to call APIs protected permissions which normal apps cannot hold but are Loading