Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42c17888 authored by Jordan Demeulenaere's avatar Jordan Demeulenaere
Browse files

Fix dialog accessibility issues.

This CL fixes some accessibility issues that would happen with dialogs
launched by the DialogLaunchAnimator. See bugs for more info.

Bug: 204944038
Bug: 208951968
Bug: 208951526
Fixes: 204944038
Fixes: 208951968
Fixes: 208951526
Test: Manual
Change-Id: I35b12a6e2bb2c4ae8556178fb634deb963457db6
parent 7339a87b
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -299,6 +299,13 @@ private class AnimatedDialog(
            fullscreenTransparentBackground.setOnClickListener { dialog.dismiss() }
            dialogContentWithBackground.isClickable = true

            // Make sure the transparent and dialog backgrounds are not focusable by accessibility
            // features.
            fullscreenTransparentBackground.importantForAccessibility =
                View.IMPORTANT_FOR_ACCESSIBILITY_NO
            dialogContentWithBackground.importantForAccessibility =
                View.IMPORTANT_FOR_ACCESSIBILITY_NO

            fullscreenTransparentBackground.addView(
                dialogContentWithBackground,
                FrameLayout.LayoutParams(
@@ -342,8 +349,10 @@ private class AnimatedDialog(
                ?.color
                ?.defaultColor ?: Color.BLACK

        // Make the background view invisible until we start the animation.
        dialogContentWithBackground.visibility = View.INVISIBLE
        // Make the background view invisible until we start the animation. We use the transition
        // visibility like GhostView does so that we don't mess up with the accessibility tree (see
        // b/204944038#comment17).
        dialogContentWithBackground.setTransitionVisibility(View.INVISIBLE)

        // Make sure the dialog is visible instantly and does not do any window animation.
        window.attributes.windowAnimations = R.style.Animation_LaunchAnimation
+9 −1
Original line number Diff line number Diff line
@@ -186,7 +186,11 @@ open class GhostedViewLaunchAnimatorController(
                // Making the ghost view invisible will make the ghosted view visible, so order is
                // important here.
                ghostView.visibility = View.INVISIBLE
                ghostedView.visibility = View.INVISIBLE

                // Make the ghosted view invisible again. We use the transition visibility like
                // GhostView does so that we don't mess up with the accessibility tree (see
                // b/204944038#comment17).
                ghostedView.setTransitionVisibility(View.INVISIBLE)
                backgroundView.visibility = View.INVISIBLE
            }
            return
@@ -257,6 +261,10 @@ open class GhostedViewLaunchAnimatorController(

        GhostView.removeGhost(ghostedView)
        launchContainerOverlay.remove(backgroundView)

        // Make sure that the view is considered VISIBLE by accessibility by first making it
        // INVISIBLE then VISIBLE (see b/204944038#comment17 for more info).
        ghostedView.visibility = View.INVISIBLE
        ghostedView.visibility = View.VISIBLE
        ghostedView.invalidate()
    }