Make DialogLaunchAnimator.showFromDialog more lenient

Before this CL, calling DialogLaunchAnimator.showFromDialog from a
Dialog that was not shown using DialogLaunchAnimator (i.e. it was shown
using Dialog.show()) would crash. This CL changes that so that we show
the dialog normally instead.

Bug: 267387248
Test: DialogLaunchAnimatorTest
Change-Id: I52f475822cde1162575f6b09b0abe1c77ca132a4
This commit is contained in:
Jordan Demeulenaere
2023-02-06 11:19:45 +01:00
parent 02cdf72ad3
commit dc5b50c35d
2 changed files with 16 additions and 4 deletions

View File

@@ -304,10 +304,16 @@ constructor(
) {
val view =
openedDialogs.firstOrNull { it.dialog == animateFrom }?.dialogContentWithBackground
?: throw IllegalStateException(
"The animateFrom dialog was not animated using " +
"DialogLaunchAnimator.showFrom(View|Dialog)"
)
if (view == null) {
Log.w(
TAG,
"Showing dialog $dialog normally as the dialog it is shown from was not shown " +
"using DialogLaunchAnimator"
)
dialog.show()
return
}
showFromView(
dialog,
view,

View File

@@ -268,6 +268,12 @@ class DialogLaunchAnimatorTest : SysuiTestCase() {
}
}
@Test
fun showFromDialogDoesNotCrashWhenShownFromRandomDialog() {
val dialog = createDialogAndShowFromDialog(animateFrom = TestDialog(context))
dialog.dismiss()
}
private fun createAndShowDialog(
animator: DialogLaunchAnimator = dialogLaunchAnimator,
): TestDialog {