diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index fa3c73a26f7be..9a37b0d29028e 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -1489,6 +1489,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, .setDuration(mDialogHideAnimationDurationMs) .setInterpolator(new SystemUIInterpolators.LogAccelerateInterpolator()) .withEndAction(() -> mHandler.postDelayed(() -> { + mController.notifyVisible(false); mDialog.dismiss(); tryToRemoveCaptionsTooltip(); mIsAnimatingDismiss = false; @@ -1499,7 +1500,6 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, animator.setListener(getJankListener(getDialogView(), TYPE_DISMISS, mDialogHideAnimationDurationMs)).start(); checkODICaptionsTooltip(true); - mController.notifyVisible(false); synchronized (mSafetyWarningLock) { if (mSafetyWarning != null) { if (D.BUG) Log.d(TAG, "SafetyWarning dismissed"); diff --git a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java index c3c6975af870a..d419095921b86 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java @@ -16,6 +16,7 @@ package com.android.systemui.volume; +import static com.android.systemui.volume.Events.DISMISS_REASON_UNKNOWN; import static com.android.systemui.volume.VolumeDialogControllerImpl.STREAMS; import static junit.framework.Assert.assertEquals; @@ -342,6 +343,15 @@ public class VolumeDialogImplTest extends SysuiTestCase { assertEquals(mDialog.mVolumeRingerMuteIconDrawableId, R.drawable.ic_volume_ringer_mute); } + @Test + public void testDialogDismissAnimation_notifyVisibleIsNotCalledBeforeAnimation() { + mDialog.dismissH(DISMISS_REASON_UNKNOWN); + // notifyVisible(false) should not be called immediately but only after the dismiss + // animation has ended. + verify(mVolumeDialogController, times(0)).notifyVisible(false); + mDialog.getDialogView().animate().cancel(); + } + /* @Test public void testContentDescriptions() {