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

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

Change-Id: If699c0ba7e4ef2e1bcb8026de6a16ed5fc599c6d
This commit is contained in:
TreeHugger Robot
2021-06-24 01:18:03 +00:00
committed by Automerger Merge Worker
@@ -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;