Merge "Volume: Hide dialog when motion cancelled, as well as when finished." into tm-qpr-dev am: f597a6c3ec am: fb968542ae

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

Change-Id: Ib7a55ab34e75d9dfb4140e15897dbf534fcff562
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
index 95cc12a..3c7d092 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
@@ -1416,7 +1416,11 @@
             @Override
             public void onAnimationCancel(@NonNull Animator animation) {
                 mInteractionJankMonitor.cancel(CUJ_VOLUME_CONTROL);
-                Log.d(TAG, "onAnimationCancel");
+                Log.i(TAG, "onAnimationCancel");
+
+                // We can only have one animation listener for cancel, so the jank listener should
+                // also call for cleanup.
+                finishDismiss();
             }
 
             @Override
@@ -1525,12 +1529,7 @@
                 .setDuration(mDialogHideAnimationDurationMs)
                 .setInterpolator(new SystemUIInterpolators.LogAccelerateInterpolator())
                 .withEndAction(() -> mHandler.postDelayed(() -> {
-                    mController.notifyVisible(false);
-                    mDialog.dismiss();
-                    tryToRemoveCaptionsTooltip();
-                    mIsAnimatingDismiss = false;
-
-                    hideRingerDrawer();
+                    finishDismiss();
                 }, 50));
         if (!shouldSlideInVolumeTray()) {
             animator.translationX(
@@ -1548,6 +1547,18 @@
         Trace.endSection();
     }
 
+    /**
+     * Clean up and hide volume dialog. Called when animation is finished/cancelled.
+     */
+    private void finishDismiss() {
+        mController.notifyVisible(false);
+        mDialog.dismiss();
+        tryToRemoveCaptionsTooltip();
+        mIsAnimatingDismiss = false;
+
+        hideRingerDrawer();
+    }
+
     private boolean showActiveStreamOnly() {
         return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK)
                 || mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEVISION);