Merge "Dismiss lingering volume dialog" into tm-qpr-dev

This commit is contained in:
Behnam Heydarshahi
2023-08-16 13:56:38 +00:00
committed by Android (Google) Code Review

View File

@@ -414,6 +414,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
@Override @Override
public void destroy() { public void destroy() {
Log.d(TAG, "destroy() called");
mController.removeCallback(mControllerCallbackH); mController.removeCallback(mControllerCallbackH);
mHandler.removeCallbacksAndMessages(null); mHandler.removeCallbacksAndMessages(null);
mConfigurationController.removeCallback(this); mConfigurationController.removeCallback(this);
@@ -488,6 +489,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
} }
private void initDialog(int lockTaskModeState) { private void initDialog(int lockTaskModeState) {
Log.d(TAG, "initDialog: called!");
mDialog = new CustomDialog(mContext); mDialog = new CustomDialog(mContext);
initDimens(); initDimens();
@@ -1281,7 +1283,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
} }
protected void tryToRemoveCaptionsTooltip() { protected void tryToRemoveCaptionsTooltip() {
if (mHasSeenODICaptionsTooltip && mODICaptionsTooltipView != null) { if (mHasSeenODICaptionsTooltip && mODICaptionsTooltipView != null && mDialog != null) {
ViewGroup container = mDialog.findViewById(R.id.volume_dialog_container); ViewGroup container = mDialog.findViewById(R.id.volume_dialog_container);
container.removeView(mODICaptionsTooltipView); container.removeView(mODICaptionsTooltipView);
mODICaptionsTooltipView = null; mODICaptionsTooltipView = null;
@@ -1471,8 +1473,16 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
mHandler.removeMessages(H.DISMISS); mHandler.removeMessages(H.DISMISS);
mHandler.removeMessages(H.SHOW); mHandler.removeMessages(H.SHOW);
if (mIsAnimatingDismiss) {
Log.d(TAG, "dismissH: isAnimatingDismiss"); boolean showingStateInconsistent = !mShowing && mDialog != null && mDialog.isShowing();
// If incorrectly assuming dialog is not showing, continue and make the state consistent.
if (showingStateInconsistent) {
Log.d(TAG, "dismissH: volume dialog possible in inconsistent state:"
+ "mShowing=" + mShowing + ", mDialog==null?" + (mDialog == null));
}
if (mIsAnimatingDismiss && !showingStateInconsistent) {
Log.d(TAG, "dismissH: skipping dismiss because isAnimatingDismiss is true"
+ " and showingStateInconsistent is false");
Trace.endSection(); Trace.endSection();
return; return;
} }
@@ -1490,8 +1500,12 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable,
.setDuration(mDialogHideAnimationDurationMs) .setDuration(mDialogHideAnimationDurationMs)
.setInterpolator(new SystemUIInterpolators.LogAccelerateInterpolator()) .setInterpolator(new SystemUIInterpolators.LogAccelerateInterpolator())
.withEndAction(() -> mHandler.postDelayed(() -> { .withEndAction(() -> mHandler.postDelayed(() -> {
mController.notifyVisible(false); if (mController != null) {
mDialog.dismiss(); mController.notifyVisible(false);
}
if (mDialog != null) {
mDialog.dismiss();
}
tryToRemoveCaptionsTooltip(); tryToRemoveCaptionsTooltip();
mIsAnimatingDismiss = false; mIsAnimatingDismiss = false;