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

Commit c866c63b authored by Roy Chou's avatar Roy Chou Committed by Android (Google) Code Review
Browse files

Revert "chore(magnification): add magnification sysui connection..."

Revert submission 27352312-a11yMagCts

Reason for revert: This approach may have some overheads for client services start up, one potential case is sysui connection taking too much time then the service will not get onServiceConnected and start serving. As b/337800504#comment29

Reverted changes: /q/submissionid:27352312-a11yMagCts

Change-Id: I490fd3d194baab6edfc672a3ae0100b9eec963a5
parent 502de117
Loading
Loading
Loading
Loading
+2 −97
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package android.accessibilityservice;

import static android.accessibilityservice.AccessibilityServiceInfo.CAPABILITY_CAN_CONTROL_MAGNIFICATION;
import static android.accessibilityservice.MagnificationConfig.MAGNIFICATION_MODE_FULLSCREEN;
import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;

@@ -70,8 +69,6 @@ import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
import android.view.accessibility.AccessibilityWindowInfo;
import android.view.inputmethod.EditorInfo;

import androidx.annotation.GuardedBy;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.inputmethod.CancellationGroup;
import com.android.internal.inputmethod.IAccessibilityInputMethodSession;
@@ -643,8 +640,6 @@ public abstract class AccessibilityService extends Service {
        /** The detected gesture information for different displays */
        boolean onGesture(AccessibilityGestureEvent gestureInfo);
        boolean onKeyEvent(KeyEvent event);
        /** Magnification SystemUI connection changed callbacks */
        void onMagnificationSystemUIConnectionChanged(boolean connected);
        /** Magnification changed callbacks for different displays */
        void onMagnificationChanged(int displayId, @NonNull Region region,
                MagnificationConfig config);
@@ -795,6 +790,7 @@ public abstract class AccessibilityService extends Service {
    public static final String KEY_ACCESSIBILITY_SCREENSHOT_TIMESTAMP =
            "screenshot_timestamp";


    /**
     * Annotations for result codes of attaching accessibility overlays.
     *
@@ -841,13 +837,6 @@ public abstract class AccessibilityService extends Service {

    private WindowManager mWindowManager;

    @GuardedBy("mLock")
    private boolean mServiceConnected;
    @GuardedBy("mLock")
    private boolean mMagnificationSystemUIConnected;
    @GuardedBy("mLock")
    private boolean mServiceConnectedNotified;

    /** List of magnification controllers, mapping from displayId -> MagnificationController. */
    private final SparseArray<MagnificationController> mMagnificationControllers =
            new SparseArray<>(0);
@@ -897,14 +886,11 @@ public abstract class AccessibilityService extends Service {
            for (int i = 0; i < mMagnificationControllers.size(); i++) {
                mMagnificationControllers.valueAt(i).onServiceConnectedLocked();
            }
            checkIsMagnificationSystemUIConnectedAlready();
            final AccessibilityServiceInfo info = getServiceInfo();
            if (info != null) {
                updateInputMethod(info);
                mMotionEventSources = info.getMotionEventSources();
            }
            mServiceConnected = true;
            mServiceConnectedNotified = false;
        }
        if (mSoftKeyboardController != null) {
            mSoftKeyboardController.onServiceConnected();
@@ -912,58 +898,8 @@ public abstract class AccessibilityService extends Service {

        // The client gets to handle service connection last, after we've set
        // up any state upon which their code may rely.
        if (android.view.accessibility.Flags
                .waitMagnificationSystemUiConnectionToNotifyServiceConnected()) {
            notifyOnServiceConnectedIfReady();
        } else {
        onServiceConnected();
    }
    }

    private void notifyOnServiceConnectedIfReady() {
        synchronized (mLock) {
            if (mServiceConnectedNotified) {
                return;
            }
            boolean canControlMagnification;
            final AccessibilityServiceInfo info = getServiceInfo();
            if (info != null) {
                int flagMask = CAPABILITY_CAN_CONTROL_MAGNIFICATION;
                canControlMagnification = (info.getCapabilities() & flagMask) == flagMask;
            } else {
                canControlMagnification = false;
            }
            boolean ready = canControlMagnification
                    ? (mServiceConnected && mMagnificationSystemUIConnected)
                    : mServiceConnected;
            if (ready) {
                getMainExecutor().execute(() -> onServiceConnected());
                mServiceConnectedNotified = true;
            }
        }
    }

    @GuardedBy("mLock")
    private void checkIsMagnificationSystemUIConnectedAlready() {
        if (!android.view.accessibility.Flags
                .waitMagnificationSystemUiConnectionToNotifyServiceConnected()) {
            return;
        }
        if (mMagnificationSystemUIConnected) {
            return;
        }
        final IAccessibilityServiceConnection connection =
                AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId);
        if (connection != null) {
            try {
                boolean connected = connection.isMagnificationSystemUIConnected();
                mMagnificationSystemUIConnected = connected;
            } catch (RemoteException re) {
                Log.w(LOG_TAG, "Failed to check magnification system ui connection", re);
                re.rethrowFromSystemServer();
            }
        }
    }

    private void updateInputMethod(AccessibilityServiceInfo info) {
        if (info != null) {
@@ -1424,22 +1360,6 @@ public abstract class AccessibilityService extends Service {
        }
    }

    private void onMagnificationSystemUIConnectionChanged(boolean connected) {
        if (!android.view.accessibility.Flags
                .waitMagnificationSystemUiConnectionToNotifyServiceConnected()) {
            return;
        }

        synchronized (mLock) {
            boolean changed = (mMagnificationSystemUIConnected != connected);
            mMagnificationSystemUIConnected = connected;

            if (changed) {
                notifyOnServiceConnectedIfReady();
            }
        }
    }

    private void onMagnificationChanged(int displayId, @NonNull Region region,
            MagnificationConfig config) {
        MagnificationController controller;
@@ -2902,11 +2822,6 @@ public abstract class AccessibilityService extends Service {
                return AccessibilityService.this.onKeyEvent(event);
            }

            @Override
            public void onMagnificationSystemUIConnectionChanged(boolean connected) {
                AccessibilityService.this.onMagnificationSystemUIConnectionChanged(connected);
            }

            @Override
            public void onMagnificationChanged(int displayId, @NonNull Region region,
                    MagnificationConfig config) {
@@ -3117,16 +3032,6 @@ public abstract class AccessibilityService extends Service {
            });
        }

        @Override
        public void onMagnificationSystemUIConnectionChanged(boolean connected) {
            mExecutor.execute(() -> {
                if (mConnectionId != AccessibilityInteractionClient.NO_ID) {
                    mCallback.onMagnificationSystemUIConnectionChanged(connected);
                }
                return;
            });
        }

        /** Magnification changed callbacks for different displays */
        public void onMagnificationChanged(int displayId, @NonNull Region region,
                MagnificationConfig config) {
+0 −2
Original line number Diff line number Diff line
@@ -48,8 +48,6 @@ import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection;

    void onKeyEvent(in KeyEvent event, int sequence);

    void onMagnificationSystemUIConnectionChanged(boolean connected);

    void onMagnificationChanged(int displayId, in Region region, in MagnificationConfig config);

    void onMotionEvent(in MotionEvent event);
+0 −3
Original line number Diff line number Diff line
@@ -129,9 +129,6 @@ interface IAccessibilityServiceConnection {
    @RequiresNoPermission
    void setMagnificationCallbackEnabled(int displayId, boolean enabled);

    @RequiresNoPermission
    boolean isMagnificationSystemUIConnected();

    @RequiresNoPermission
    boolean setSoftKeyboardShowMode(int showMode);

+0 −5
Original line number Diff line number Diff line
@@ -1968,11 +1968,6 @@ public final class UiAutomation {
                    return false;
                }

                @Override
                public void onMagnificationSystemUIConnectionChanged(boolean connected) {
                    /* do nothing */
                }

                @Override
                public void onMagnificationChanged(int displayId, @NonNull Region region,
                        MagnificationConfig config) {
+0 −4
Original line number Diff line number Diff line
@@ -301,10 +301,6 @@ public abstract class AccessibilityDisplayProxy {
                    return false;
                }

                @Override
                public void onMagnificationSystemUIConnectionChanged(boolean connected) {
                }

                @Override
                public void onMagnificationChanged(int displayId, @NonNull Region region,
                        MagnificationConfig config) {
Loading