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

Commit 73f582ae authored by Winson Chung's avatar Winson Chung Committed by Automerger Merge Worker
Browse files

Merge "Ensure accessibility updates during the recents animation" into sc-dev am: 196985b3

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13932246

Change-Id: Ib2ff0b5f688f7bd1105ed274645fefaf9171148d
parents 6ae2d1bf 196985b3
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -1511,10 +1511,15 @@ final class AccessibilityController {
            IBinder topFocusedWindowToken = null;

            synchronized (mService.mGlobalLock) {
                // Do not send the windows if there is no top focus as
                // the window manager is still looking for where to put it.
                // We will do the work when we get a focus change callback.
                final WindowState topFocusedWindowState = getTopFocusWindow();
                // If there is a recents animation running, then use the animation target as the
                // top window state. Otherwise,do not send the windows if there is no top focus as
                // the window manager is still looking for where to put it. We will do the work when
                // we get a focus change callback.
                final RecentsAnimationController controller =
                        mService.getRecentsAnimationController();
                final WindowState topFocusedWindowState = controller != null
                        ? controller.getTargetAppMainWindow()
                        : getTopFocusWindow();
                if (topFocusedWindowState == null) {
                    if (DEBUG) {
                        Slog.d(LOG_TAG, "top focused window is null, compute it again later");
+11 −5
Original line number Diff line number Diff line
@@ -568,8 +568,9 @@ public class RecentsAnimationController implements DeathRecipient {
                            ? mMinimizedHomeBounds
                            : null;
            final Rect contentInsets;
            if (mTargetActivityRecord != null && mTargetActivityRecord.findMainWindow() != null) {
                contentInsets = mTargetActivityRecord.findMainWindow()
            final WindowState targetAppMainWindow = getTargetAppMainWindow();
            if (targetAppMainWindow != null) {
                contentInsets = targetAppMainWindow
                        .getInsetsStateWithVisibilityOverride()
                        .calculateInsets(mTargetActivityRecord.getBounds(), Type.systemBars(),
                                false /* ignoreVisibility */);
@@ -1004,9 +1005,7 @@ public class RecentsAnimationController implements DeathRecipient {

    boolean updateInputConsumerForApp(InputWindowHandle inputWindowHandle) {
        // Update the input consumer touchable region to match the target app main window
        final WindowState targetAppMainWindow = mTargetActivityRecord != null
                ? mTargetActivityRecord.findMainWindow()
                : null;
        final WindowState targetAppMainWindow = getTargetAppMainWindow();
        if (targetAppMainWindow != null) {
            targetAppMainWindow.getBounds(mTmpRect);
            inputWindowHandle.touchableRegion.set(mTmpRect);
@@ -1026,6 +1025,13 @@ public class RecentsAnimationController implements DeathRecipient {
        return mTargetActivityRecord.windowsCanBeWallpaperTarget();
    }

    WindowState getTargetAppMainWindow() {
        if (mTargetActivityRecord == null) {
            return null;
        }
        return mTargetActivityRecord.findMainWindow();
    }

    boolean isAnimatingTask(Task task) {
        for (int i = mPendingAnimations.size() - 1; i >= 0; i--) {
            if (task == mPendingAnimations.get(i).mTask) {