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

Commit bd80a07d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Ensure InputConsumer is non-null in remaining cases" into sc-dev am: 862224f9

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/15084524

Change-Id: If699c0ba7e4ef2e1bcb8026de6a16ed5fc599c6d
parents dc01385c 862224f9
Loading
Loading
Loading
Loading
+25 −17
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ import android.view.Surface;
import android.view.accessibility.AccessibilityManager;

import androidx.annotation.BinderThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import androidx.annotation.WorkerThread;
@@ -323,10 +324,10 @@ public class TouchInteractionService extends Service implements PluginListener<O
    private RecentsAnimationDeviceState mDeviceState;
    private TaskAnimationManager mTaskAnimationManager;

    private InputConsumer mUncheckedConsumer = InputConsumer.NO_OP;
    private InputConsumer mConsumer = InputConsumer.NO_OP;
    private @NonNull InputConsumer mUncheckedConsumer = InputConsumer.NO_OP;
    private @NonNull InputConsumer mConsumer = InputConsumer.NO_OP;
    private Choreographer mMainChoreographer;
    private InputConsumer mResetGestureInputConsumer;
    private @Nullable ResetGestureInputConsumer mResetGestureInputConsumer;
    private GestureState mGestureState = DEFAULT_STATE;

    private InputMonitorCompat mInputMonitorCompat;
@@ -655,7 +656,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
                // launched while device is locked even after exiting direct boot mode (e.g. camera).
                return createDeviceLockedInputConsumer(newGestureState);
            } else {
                return mResetGestureInputConsumer;
                return getDefaultInputConsumer();
            }
        }

@@ -664,7 +665,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
        InputConsumer base = canStartSystemGesture
                || previousGestureState.isRecentsAnimationRunning()
                        ? newBaseConsumer(previousGestureState, newGestureState, event)
                        : mResetGestureInputConsumer;
                        : getDefaultInputConsumer();
        if (mDeviceState.isGesturalNavMode()) {
            handleOrientationSetup(base);
        }
@@ -726,7 +727,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
            }
        } else {
            if (mDeviceState.isScreenPinningActive()) {
                base = mResetGestureInputConsumer;
                base = getDefaultInputConsumer();
            }

            if (mDeviceState.canTriggerOneHandedAction(event)) {
@@ -768,14 +769,14 @@ public class TouchInteractionService extends Service implements PluginListener<O
            return createOverviewInputConsumer(
                    previousGestureState, gestureState, event, forceOverviewInputConsumer);
        } else if (gestureState.getRunningTask() == null) {
            return mResetGestureInputConsumer;
            return getDefaultInputConsumer();
        } else if (previousGestureState.isRunningAnimationToLauncher()
                || gestureState.getActivityInterface().isResumed()
                || forceOverviewInputConsumer) {
            return createOverviewInputConsumer(
                    previousGestureState, gestureState, event, forceOverviewInputConsumer);
        } else if (mDeviceState.isGestureBlockedActivity(gestureState.getRunningTask())) {
            return mResetGestureInputConsumer;
            return getDefaultInputConsumer();
        } else {
            return createOtherActivityInputConsumer(gestureState, event);
        }
@@ -803,7 +804,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
            return new DeviceLockedInputConsumer(this, mDeviceState, mTaskAnimationManager,
                    gestureState, mInputMonitorCompat);
        } else {
            return mResetGestureInputConsumer;
            return getDefaultInputConsumer();
        }
    }

@@ -812,7 +813,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
            boolean forceOverviewInputConsumer) {
        StatefulActivity activity = gestureState.getActivityInterface().getCreatedActivity();
        if (activity == null) {
            return mResetGestureInputConsumer;
            return getDefaultInputConsumer();
        }

        if (activity.getRootView().hasWindowFocus()
@@ -841,13 +842,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
    }

    private void reset() {
        if (mResetGestureInputConsumer != null) {
            mConsumer = mUncheckedConsumer = mResetGestureInputConsumer;
        } else {
            // mResetGestureInputConsumer isn't initialized until onUserUnlocked(), so reset to
            // NO_OP until then (we never want these to be null).
            mConsumer = mUncheckedConsumer = InputConsumer.NO_OP;
        }
        mConsumer = mUncheckedConsumer = getDefaultInputConsumer();
        mGestureState = DEFAULT_STATE;
        // By default, use batching of the input events, but check receiver before using in the rare
        // case that the monitor was disposed before the swipe settled
@@ -856,6 +851,19 @@ public class TouchInteractionService extends Service implements PluginListener<O
        }
    }

    /**
     * Returns the {@link ResetGestureInputConsumer} if user is unlocked, else NO_OP.
     */
    private @NonNull InputConsumer getDefaultInputConsumer() {
        if (mResetGestureInputConsumer != null) {
            return mResetGestureInputConsumer;
        } else {
            // mResetGestureInputConsumer isn't initialized until onUserUnlocked(), so reset to
            // NO_OP until then (we never want these to be null).
            return InputConsumer.NO_OP;
        }
    }

    private void preloadOverview(boolean fromInit) {
        if (!mDeviceState.isUserUnlocked()) {
            return;