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

Commit 86733be8 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Revert "3/ Add input consumer to capture touches during a Recents transition"

This reverts commit fc78fe9a.

Breaks presubmits
parent f6401c02
Loading
Loading
Loading
Loading
+3 −5
Original line number Original line Diff line number Diff line
@@ -98,13 +98,11 @@ public interface WindowManager extends ViewManager {
    int DOCKED_BOTTOM = 4;
    int DOCKED_BOTTOM = 4;


    /** @hide */
    /** @hide */
    String INPUT_CONSUMER_PIP = "pip_input_consumer";
    final static String INPUT_CONSUMER_PIP = "pip_input_consumer";
    /** @hide */
    /** @hide */
    String INPUT_CONSUMER_NAVIGATION = "nav_input_consumer";
    final static String INPUT_CONSUMER_NAVIGATION = "nav_input_consumer";
    /** @hide */
    /** @hide */
    String INPUT_CONSUMER_WALLPAPER = "wallpaper_input_consumer";
    final static String INPUT_CONSUMER_WALLPAPER = "wallpaper_input_consumer";
    /** @hide */
    String INPUT_CONSUMER_RECENTS_ANIMATION = "recents_animation_input_consumer";


    /**
    /**
     * Not set up for a transition.
     * Not set up for a transition.
+4 −24
Original line number Original line Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.server.wm;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManager.INPUT_CONSUMER_NAVIGATION;
import static android.view.WindowManager.INPUT_CONSUMER_NAVIGATION;
import static android.view.WindowManager.INPUT_CONSUMER_PIP;
import static android.view.WindowManager.INPUT_CONSUMER_PIP;
import static android.view.WindowManager.INPUT_CONSUMER_RECENTS_ANIMATION;
import static android.view.WindowManager.INPUT_CONSUMER_WALLPAPER;
import static android.view.WindowManager.INPUT_CONSUMER_WALLPAPER;
import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_DISABLE_WALLPAPER_TOUCH_EVENTS;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_DISABLE_WALLPAPER_TOUCH_EVENTS;
@@ -87,7 +86,6 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
    private boolean mAddInputConsumerHandle;
    private boolean mAddInputConsumerHandle;
    private boolean mAddPipInputConsumerHandle;
    private boolean mAddPipInputConsumerHandle;
    private boolean mAddWallpaperInputConsumerHandle;
    private boolean mAddWallpaperInputConsumerHandle;
    private boolean mAddRecentsAnimationInputConsumerHandle;
    private boolean mDisableWallpaperTouchEvents;
    private boolean mDisableWallpaperTouchEvents;
    private final Rect mTmpRect = new Rect();
    private final Rect mTmpRect = new Rect();
    private final UpdateInputForAllWindowsConsumer mUpdateInputForAllWindowsConsumer =
    private final UpdateInputForAllWindowsConsumer mUpdateInputForAllWindowsConsumer =
@@ -614,7 +612,7 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
        InputConsumerImpl navInputConsumer;
        InputConsumerImpl navInputConsumer;
        InputConsumerImpl pipInputConsumer;
        InputConsumerImpl pipInputConsumer;
        InputConsumerImpl wallpaperInputConsumer;
        InputConsumerImpl wallpaperInputConsumer;
        InputConsumerImpl recentsAnimationInputConsumer;
        Rect pipTouchableBounds;
        boolean inDrag;
        boolean inDrag;
        WallpaperController wallpaperController;
        WallpaperController wallpaperController;


@@ -624,13 +622,11 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
            navInputConsumer = getInputConsumer(INPUT_CONSUMER_NAVIGATION, DEFAULT_DISPLAY);
            navInputConsumer = getInputConsumer(INPUT_CONSUMER_NAVIGATION, DEFAULT_DISPLAY);
            pipInputConsumer = getInputConsumer(INPUT_CONSUMER_PIP, DEFAULT_DISPLAY);
            pipInputConsumer = getInputConsumer(INPUT_CONSUMER_PIP, DEFAULT_DISPLAY);
            wallpaperInputConsumer = getInputConsumer(INPUT_CONSUMER_WALLPAPER, DEFAULT_DISPLAY);
            wallpaperInputConsumer = getInputConsumer(INPUT_CONSUMER_WALLPAPER, DEFAULT_DISPLAY);
            recentsAnimationInputConsumer = getInputConsumer(INPUT_CONSUMER_RECENTS_ANIMATION,
                    DEFAULT_DISPLAY);
            mAddInputConsumerHandle = navInputConsumer != null;
            mAddInputConsumerHandle = navInputConsumer != null;
            mAddPipInputConsumerHandle = pipInputConsumer != null;
            mAddPipInputConsumerHandle = pipInputConsumer != null;
            mAddWallpaperInputConsumerHandle = wallpaperInputConsumer != null;
            mAddWallpaperInputConsumerHandle = wallpaperInputConsumer != null;
            mAddRecentsAnimationInputConsumerHandle = recentsAnimationInputConsumer != null;
            mTmpRect.setEmpty();
            mTmpRect.setEmpty();
            pipTouchableBounds = mAddPipInputConsumerHandle ? mTmpRect : null;
            mDisableWallpaperTouchEvents = false;
            mDisableWallpaperTouchEvents = false;
            this.inDrag = inDrag;
            this.inDrag = inDrag;
            wallpaperController = mService.mRoot.mWallpaperController;
            wallpaperController = mService.mRoot.mWallpaperController;
@@ -663,28 +659,12 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
            final boolean hasFocus = w == mInputFocus;
            final boolean hasFocus = w == mInputFocus;
            final boolean isVisible = w.isVisibleLw();
            final boolean isVisible = w.isVisibleLw();


            if (mAddRecentsAnimationInputConsumerHandle) {
                final RecentsAnimationController recentsAnimationController =
                        mService.getRecentsAnimationController();
                if (recentsAnimationController != null
                        && recentsAnimationController.hasInputConsumerForApp(w.mAppToken)) {
                    if (recentsAnimationController.updateInputConsumerForApp(
                            recentsAnimationInputConsumer, hasFocus)) {
                        addInputWindowHandle(recentsAnimationInputConsumer.mWindowHandle);
                        mAddRecentsAnimationInputConsumerHandle = false;
                    }
                    // Skip adding the window below regardless of whether there is an input consumer
                    // to handle it
                    return;
                }
            }

            if (w.inPinnedWindowingMode()) {
            if (w.inPinnedWindowingMode()) {
                if (mAddPipInputConsumerHandle
                if (mAddPipInputConsumerHandle
                        && (inputWindowHandle.layer <= pipInputConsumer.mWindowHandle.layer)) {
                        && (inputWindowHandle.layer <= pipInputConsumer.mWindowHandle.layer)) {
                    // Update the bounds of the Pip input consumer to match the window bounds.
                    // Update the bounds of the Pip input consumer to match the window bounds.
                    w.getBounds(mTmpRect);
                    w.getBounds(pipTouchableBounds);
                    pipInputConsumer.mWindowHandle.touchableRegion.set(mTmpRect);
                    pipInputConsumer.mWindowHandle.touchableRegion.set(pipTouchableBounds);
                    addInputWindowHandle(pipInputConsumer.mWindowHandle);
                    addInputWindowHandle(pipInputConsumer.mWindowHandle);
                    mAddPipInputConsumerHandle = false;
                    mAddPipInputConsumerHandle = false;
                }
                }
+12 −24
Original line number Original line Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.server.wm;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
import static android.view.WindowManager.INPUT_CONSUMER_RECENTS_ANIMATION;
import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
@@ -75,8 +74,6 @@ public class RecentsAnimationController {
    // enabled for it to start intercepting touch events.
    // enabled for it to start intercepting touch events.
    private boolean mInputConsumerEnabled;
    private boolean mInputConsumerEnabled;


    private Rect mTmpRect = new Rect();

    public interface RecentsAnimationCallbacks {
    public interface RecentsAnimationCallbacks {
        void onAnimationFinished(boolean moveHomeToTop);
        void onAnimationFinished(boolean moveHomeToTop);
    }
    }
@@ -266,7 +263,6 @@ public class RecentsAnimationController {


        mService.mInputMonitor.updateInputWindowsLw(true /*force*/);
        mService.mInputMonitor.updateInputWindowsLw(true /*force*/);
        mService.scheduleAnimationLocked();
        mService.scheduleAnimationLocked();
        mService.destroyInputConsumer(INPUT_CONSUMER_RECENTS_ANIMATION);
    }
    }


    void checkAnimationReady(WallpaperController wallpaperController) {
    void checkAnimationReady(WallpaperController wallpaperController) {
@@ -285,33 +281,21 @@ public class RecentsAnimationController {
                && isHomeAppOverWallpaper();
                && isHomeAppOverWallpaper();
    }
    }


    boolean hasInputConsumerForApp(AppWindowToken appToken) {
    boolean isHomeAppOverWallpaper() {
        return mInputConsumerEnabled && isAnimatingApp(appToken);
        if (mHomeAppToken == null) {
    }

    boolean updateInputConsumerForApp(InputConsumerImpl recentsAnimationInputConsumer,
            boolean hasFocus) {
        // Update the input consumer touchable region to match the home app main window
        final WindowState homeAppMainWindow = mHomeAppToken != null
                ? mHomeAppToken.findMainWindow()
                : null;
        if (homeAppMainWindow != null) {
            homeAppMainWindow.getBounds(mTmpRect);
            recentsAnimationInputConsumer.mWindowHandle.hasFocus = hasFocus;
            recentsAnimationInputConsumer.mWindowHandle.touchableRegion.set(mTmpRect);
            return true;
        }
            return false;
            return false;
        }
        }
        return mHomeAppToken.windowsCanBeWallpaperTarget();
    }


    private boolean isHomeAppOverWallpaper() {
    WindowState getHomeAppMainWindow() {
        if (mHomeAppToken == null) {
        if (mHomeAppToken == null) {
            return false;
            return null;
        }
        }
        return mHomeAppToken.windowsCanBeWallpaperTarget();
        return mHomeAppToken.findMainWindow();
    }
    }


    private boolean isAnimatingApp(AppWindowToken appToken) {
    boolean isAnimatingApp(AppWindowToken appToken) {
        for (int i = mPendingAnimations.size() - 1; i >= 0; i--) {
        for (int i = mPendingAnimations.size() - 1; i >= 0; i--) {
            final Task task = mPendingAnimations.get(i).mTask;
            final Task task = mPendingAnimations.get(i).mTask;
            for (int j = task.getChildCount() - 1; j >= 0; j--) {
            for (int j = task.getChildCount() - 1; j >= 0; j--) {
@@ -324,6 +308,10 @@ public class RecentsAnimationController {
        return false;
        return false;
    }
    }


    boolean isInputConsumerEnabled() {
        return mInputConsumerEnabled;
    }

    private class TaskAnimationAdapter implements AnimationAdapter {
    private class TaskAnimationAdapter implements AnimationAdapter {


        private Task mTask;
        private Task mTask;