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

Commit 132cb267 authored by Ryan Lin's avatar Ryan Lin Committed by Android (Google) Code Review
Browse files

Merge "Fix incorrect IME visibility when the IME window is hidden"

parents be98750a 47044ac7
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ final class AccessibilityController {
            new SparseArray<>();
    private SparseArray<IBinder> mFocusedWindow = new SparseArray<>();
    private int mFocusedDisplay = -1;

    private boolean mIsImeVisible = false;
    // Set to true if initializing window population complete.
    private boolean mAllObserversInitialized = true;

@@ -490,15 +490,19 @@ final class AccessibilityController {
        }
    }

    void onImeSurfaceShownChanged(WindowState windowState, boolean shown) {
    void updateImeVisibilityIfNeeded(int displayId, boolean shown) {
        if (mAccessibilityTracing.isTracingEnabled(FLAGS_MAGNIFICATION_CALLBACK)) {
            mAccessibilityTracing.logTrace(TAG + ".onImeSurfaceShownChanged",
                    FLAGS_MAGNIFICATION_CALLBACK, "windowState=" + windowState + ";shown=" + shown);
            mAccessibilityTracing.logTrace(TAG + ".updateImeVisibilityIfNeeded",
                    FLAGS_MAGNIFICATION_CALLBACK, "displayId=" + displayId + ";shown=" + shown);
        }
        final int displayId = windowState.getDisplayId();
        if (mIsImeVisible == shown) {
            return;
        }

        mIsImeVisible = shown;
        final DisplayMagnifier displayMagnifier = mDisplayMagnifiers.get(displayId);
        if (displayMagnifier != null) {
            displayMagnifier.onImeSurfaceShownChanged(shown);
            displayMagnifier.notifyImeWindowVisibilityChanged(shown);
        }
    }

@@ -767,9 +771,9 @@ final class AccessibilityController {
            }
        }

        void onImeSurfaceShownChanged(boolean shown) {
        void notifyImeWindowVisibilityChanged(boolean shown) {
            if (mAccessibilityTracing.isTracingEnabled(FLAGS_MAGNIFICATION_CALLBACK)) {
                mAccessibilityTracing.logTrace(LOG_TAG + ".onImeSurfaceShownChanged",
                mAccessibilityTracing.logTrace(LOG_TAG + ".notifyImeWindowVisibilityChanged",
                        FLAGS_MAGNIFICATION_CALLBACK, "shown=" + shown);
            }
            mHandler.obtainMessage(MyHandler.MESSAGE_NOTIFY_IME_WINDOW_VISIBILITY_CHANGED,
+7 −0
Original line number Diff line number Diff line
@@ -1909,6 +1909,13 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        if (mRemoteInsetsControlTarget != null) {
            mRemoteInsetsControlTarget.notifyInsetsChanged();
        }
        // In Accessibility side, we need to know what magnification mode is activated while IME
        // is opened for logging metrics.
        if (mWmService.mAccessibilityController.hasCallbacks()) {
            final boolean isImeShow = mImeControlTarget != null
                    && mImeControlTarget.getRequestedVisibility(ITYPE_IME);
            mWmService.mAccessibilityController.updateImeVisibilityIfNeeded(mDisplayId, isImeShow);
        }
    }

    /**
+0 −3
Original line number Diff line number Diff line
@@ -3421,9 +3421,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
        if (mAttrs.type >= FIRST_SYSTEM_WINDOW && mAttrs.type != TYPE_TOAST) {
            mWmService.mAtmService.mActiveUids.onNonAppSurfaceVisibilityChanged(mOwnerUid, shown);
        }
        if (mIsImWindow && mWmService.mAccessibilityController.hasCallbacks()) {
            mWmService.mAccessibilityController.onImeSurfaceShownChanged(this, shown);
        }
    }

    private void logExclusionRestrictions(int side) {