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

Commit 3ea30b6f authored by Daniel Norman's avatar Daniel Norman
Browse files

Removes set/clearTestBrailleDisplayController APIs.

AccessibilityService callers of getBrailleDisplayController() can
instead use injection to replace the default BrailleDisplayController
with a fake for integration testing, rather than relying on a platform
API like this to set the replacement.

Bug: 326097646
Test: n/a
Change-Id: I0f9ff0182390debbc0952c8019a0cec7506a5044
parent dd8353a6
Loading
Loading
Loading
Loading
+0 −2
Original line number Original line Diff line number Diff line
@@ -3350,7 +3350,6 @@ package android.accessibilityservice {
    method @FlaggedApi("android.view.accessibility.a11y_overlay_callbacks") public void attachAccessibilityOverlayToWindow(int, @NonNull android.view.SurfaceControl, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.IntConsumer);
    method @FlaggedApi("android.view.accessibility.a11y_overlay_callbacks") public void attachAccessibilityOverlayToWindow(int, @NonNull android.view.SurfaceControl, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.IntConsumer);
    method public boolean clearCache();
    method public boolean clearCache();
    method public boolean clearCachedSubtree(@NonNull android.view.accessibility.AccessibilityNodeInfo);
    method public boolean clearCachedSubtree(@NonNull android.view.accessibility.AccessibilityNodeInfo);
    method @FlaggedApi("android.view.accessibility.braille_display_hid") public void clearTestBrailleDisplayController();
    method public final void disableSelf();
    method public final void disableSelf();
    method public final boolean dispatchGesture(@NonNull android.accessibilityservice.GestureDescription, @Nullable android.accessibilityservice.AccessibilityService.GestureResultCallback, @Nullable android.os.Handler);
    method public final boolean dispatchGesture(@NonNull android.accessibilityservice.GestureDescription, @Nullable android.accessibilityservice.AccessibilityService.GestureResultCallback, @Nullable android.os.Handler);
    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
    method public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
@@ -3386,7 +3385,6 @@ package android.accessibilityservice {
    method public boolean setCacheEnabled(boolean);
    method public boolean setCacheEnabled(boolean);
    method public void setGestureDetectionPassthroughRegion(int, @NonNull android.graphics.Region);
    method public void setGestureDetectionPassthroughRegion(int, @NonNull android.graphics.Region);
    method public final void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
    method public final void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
    method @FlaggedApi("android.view.accessibility.braille_display_hid") public void setTestBrailleDisplayController(@NonNull android.accessibilityservice.BrailleDisplayController);
    method public void setTouchExplorationPassthroughRegion(int, @NonNull android.graphics.Region);
    method public void setTouchExplorationPassthroughRegion(int, @NonNull android.graphics.Region);
    method public void takeScreenshot(int, @NonNull java.util.concurrent.Executor, @NonNull android.accessibilityservice.AccessibilityService.TakeScreenshotCallback);
    method public void takeScreenshot(int, @NonNull java.util.concurrent.Executor, @NonNull android.accessibilityservice.AccessibilityService.TakeScreenshotCallback);
    method public void takeScreenshotOfWindow(int, @NonNull java.util.concurrent.Executor, @NonNull android.accessibilityservice.AccessibilityService.TakeScreenshotCallback);
    method public void takeScreenshotOfWindow(int, @NonNull java.util.concurrent.Executor, @NonNull android.accessibilityservice.AccessibilityService.TakeScreenshotCallback);
+0 −38
Original line number Original line Diff line number Diff line
@@ -81,7 +81,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.RetentionPolicy;
import java.util.Collections;
import java.util.Collections;
import java.util.List;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
import java.util.function.Consumer;
import java.util.function.IntConsumer;
import java.util.function.IntConsumer;
@@ -853,7 +852,6 @@ public abstract class AccessibilityService extends Service {
    private final SparseArray<AccessibilityButtonController> mAccessibilityButtonControllers =
    private final SparseArray<AccessibilityButtonController> mAccessibilityButtonControllers =
            new SparseArray<>(0);
            new SparseArray<>(0);
    private BrailleDisplayController mBrailleDisplayController;
    private BrailleDisplayController mBrailleDisplayController;
    private BrailleDisplayController mTestBrailleDisplayController;


    private int mGestureStatusCallbackSequence;
    private int mGestureStatusCallbackSequence;


@@ -3650,46 +3648,10 @@ public abstract class AccessibilityService extends Service {
    public BrailleDisplayController getBrailleDisplayController() {
    public BrailleDisplayController getBrailleDisplayController() {
        BrailleDisplayController.checkApiFlagIsEnabled();
        BrailleDisplayController.checkApiFlagIsEnabled();
        synchronized (mLock) {
        synchronized (mLock) {
            if (mTestBrailleDisplayController != null) {
                return mTestBrailleDisplayController;
            }

            if (mBrailleDisplayController == null) {
            if (mBrailleDisplayController == null) {
                mBrailleDisplayController = new BrailleDisplayControllerImpl(this, mLock);
                mBrailleDisplayController = new BrailleDisplayControllerImpl(this, mLock);
            }
            }
            return mBrailleDisplayController;
            return mBrailleDisplayController;
        }
        }
    }
    }

    /**
     * Set the {@link BrailleDisplayController} implementation that will be returned by
     * {@link #getBrailleDisplayController}, to allow this accessibility service to test its
     * interaction with BrailleDisplayController without requiring a real Braille display.
     *
     * <p>For full test fidelity, ensure that this test-only implementation follows the same
     * behavior specified in the documentation for {@link BrailleDisplayController}, including
     * thrown exceptions.
     *
     * @param controller A test-only implementation of {@link BrailleDisplayController}.
     */
    @FlaggedApi(android.view.accessibility.Flags.FLAG_BRAILLE_DISPLAY_HID)
    public void setTestBrailleDisplayController(@NonNull BrailleDisplayController controller) {
        BrailleDisplayController.checkApiFlagIsEnabled();
        Objects.requireNonNull(controller);
        synchronized (mLock) {
            mTestBrailleDisplayController = controller;
        }
    }

    /**
     * Clears the {@link BrailleDisplayController} previously set by
     * {@link #setTestBrailleDisplayController}.
     */
    @FlaggedApi(android.view.accessibility.Flags.FLAG_BRAILLE_DISPLAY_HID)
    public void clearTestBrailleDisplayController() {
        BrailleDisplayController.checkApiFlagIsEnabled();
        synchronized (mLock) {
            mTestBrailleDisplayController = null;
        }
    }
}
}