Fix stalled gesture navigation tutorial.
Touching the screen after completing the gesture removed all callbacks, preventing the tutorial to progess. Added logic to only remove logic if the gesture is incomplete.
Fixes: 198285152
Test: manual, touched screen and attempted all gestures after completing a step
Change-Id: I320b13cd9b7632a9fb722bc10d3d0a96dc111144
diff --git a/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java
index f2402e3..30f9008 100644
--- a/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java
@@ -59,7 +59,7 @@
@Override
public void onBackGestureAttempted(BackGestureResult result) {
- if (mGestureCompleted) {
+ if (isGestureCompleted()) {
return;
}
switch (mTutorialType) {
@@ -101,7 +101,7 @@
@Override
public void onNavBarGestureAttempted(NavBarGestureResult result, PointF finalVelocity) {
- if (mGestureCompleted) {
+ if (isGestureCompleted()) {
return;
}
if (mTutorialType == BACK_NAVIGATION_COMPLETE) {
diff --git a/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialController.java
index 307a8fd..3ad84f0 100644
--- a/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialController.java
@@ -48,7 +48,7 @@
@Override
public void onBackGestureAttempted(BackGestureResult result) {
- if (mGestureCompleted) {
+ if (isGestureCompleted()) {
return;
}
switch (mTutorialType) {
@@ -73,7 +73,7 @@
@Override
public void onNavBarGestureAttempted(NavBarGestureResult result, PointF finalVelocity) {
- if (mGestureCompleted) {
+ if (isGestureCompleted()) {
return;
}
switch (mTutorialType) {
diff --git a/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java
index b38a641..ff1743f 100644
--- a/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java
@@ -55,7 +55,7 @@
@Override
public void onBackGestureAttempted(BackGestureResult result) {
- if (mGestureCompleted) {
+ if (isGestureCompleted()) {
return;
}
switch (mTutorialType) {
@@ -80,7 +80,7 @@
@Override
public void onNavBarGestureAttempted(NavBarGestureResult result, PointF finalVelocity) {
- if (mGestureCompleted) {
+ if (isGestureCompleted()) {
return;
}
switch (mTutorialType) {
diff --git a/quickstep/src/com/android/quickstep/interaction/SwipeUpGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/SwipeUpGestureTutorialController.java
index ce8047e..30430ff 100644
--- a/quickstep/src/com/android/quickstep/interaction/SwipeUpGestureTutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/SwipeUpGestureTutorialController.java
@@ -214,7 +214,7 @@
@Override
public void setNavBarGestureProgress(@Nullable Float displacement) {
- if (mGestureCompleted) {
+ if (isGestureCompleted()) {
return;
}
if (mTutorialType == HOME_NAVIGATION_COMPLETE
@@ -235,7 +235,7 @@
@Override
public void onMotionPaused(boolean unused) {
- if (mGestureCompleted) {
+ if (isGestureCompleted()) {
return;
}
if (mShowTasks) {
diff --git a/quickstep/src/com/android/quickstep/interaction/TutorialController.java b/quickstep/src/com/android/quickstep/interaction/TutorialController.java
index 77bfc31..ef62fd6 100644
--- a/quickstep/src/com/android/quickstep/interaction/TutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/TutorialController.java
@@ -95,7 +95,7 @@
final ImageView mFingerDotView;
private final AlertDialog mSkipTutorialDialog;
- protected boolean mGestureCompleted = false;
+ private boolean mGestureCompleted = false;
// These runnables should be used when posting callbacks to their views and cleared from their
// views before posting new callbacks.
@@ -286,6 +286,10 @@
mFeedbackView.post(mFeedbackViewCallback);
}
+ public boolean isGestureCompleted() {
+ return mGestureCompleted;
+ }
+
void hideFeedback() {
cancelQueuedGestureAnimation();
mFeedbackView.clearAnimation();
diff --git a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
index 52ec9b3..1d78c6b 100644
--- a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
+++ b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
@@ -237,7 +237,7 @@
}
void releaseFeedbackAnimation() {
- if (mTutorialController != null) {
+ if (mTutorialController != null && !mTutorialController.isGestureCompleted()) {
mTutorialController.cancelQueuedGestureAnimation();
}
if (mGestureAnimation != null && mGestureAnimation.isRunning()) {