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

Commit 9e717f1b authored by Daniel Norman's avatar Daniel Norman Committed by Android (Google) Code Review
Browse files

Merge "Adds a UiAutomation#clearCache() to be consistent with A11yService."

parents dd2e6e8c d5125f31
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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();
+1 −0
Original line number Diff line number Diff line
@@ -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);
+44 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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