Loading libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OpenByDefaultDialog.kt +21 −9 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ import android.view.LayoutInflater import android.view.SurfaceControl import android.view.SurfaceControlViewHost import android.view.WindowManager.LayoutParams import android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE import android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL import android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL import android.view.WindowlessWindowManager Loading @@ -40,6 +39,7 @@ import android.widget.ImageView import android.widget.RadioButton import android.widget.TextView import android.window.TaskConstants import com.android.window.flags.Flags import com.android.wm.shell.R import com.android.wm.shell.common.DisplayController import com.android.wm.shell.compatui.DialogAnimationController Loading Loading @@ -107,8 +107,12 @@ internal class OpenByDefaultDialog( appIconView = dialog.requireViewById(R.id.application_icon) appNameView = dialog.requireViewById(R.id.application_name) if (Flags.useInputReportedFocusForAccessibility()) { createDialogWindow() } else { // TODO: ag/34061541 - once landed, can refactor with simpler fix transitions.runOnIdle(this::createDialogWindow) } dialog.setDismissOnClickListener { closeMenu() } dialog.setConfirmButtonClickListener { Loading @@ -117,6 +121,9 @@ internal class OpenByDefaultDialog( } listener.onDialogCreated() if (Flags.useInputReportedFocusForAccessibility()) { viewHost.requestInputFocus(true) } } private fun createDialogWindow() { Loading @@ -126,7 +133,7 @@ internal class OpenByDefaultDialog( taskBounds.width(), taskBounds.height(), TYPE_APPLICATION_PANEL, FLAG_NOT_FOCUSABLE or FLAG_NOT_TOUCH_MODAL, FLAG_NOT_TOUCH_MODAL, PixelFormat.TRANSLUCENT ).apply { token = Binder() Loading @@ -143,6 +150,7 @@ internal class OpenByDefaultDialog( } private fun onAnimationEnded() { if (!Flags.useInputReportedFocusForAccessibility()) { dialog.post { dialog.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) val subHeader: TextView = dialog.requireViewById(R.id.dialog_subheader) Loading @@ -150,6 +158,7 @@ internal class OpenByDefaultDialog( subHeader.requestAccessibilityFocus() } } } private fun initializeRadioButtons() { openInAppButton = dialog.requireViewById(R.id.open_in_app_button) Loading @@ -175,6 +184,9 @@ internal class OpenByDefaultDialog( } private fun closeMenu() { if (Flags.useInputReportedFocusForAccessibility()) { viewHost.requestInputFocus(false) } loadAppInfoJob?.cancel() animationController.startExitAnimation(dialog) { // Release the host and manager after the exit animation Loading libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OpenByDefaultDialogView.kt +4 −1 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.widget.Button import android.widget.RadioButton import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import com.android.window.flags.Flags import com.android.wm.shell.R import com.android.wm.shell.compatui.DialogContainerSupplier Loading Loading @@ -74,8 +75,10 @@ class OpenByDefaultDialogView @JvmOverloads constructor( backgroundDim = background.mutate() backgroundDim.alpha = 128 if (!Flags.useInputReportedFocusForAccessibility()) { setupA11yTraversal() } } // Set up a11y focus so that focus loops through elements within the dialog, instead of going to // elements behind the dialog. Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OpenByDefaultDialog.kt +21 −9 Original line number Diff line number Diff line Loading @@ -31,7 +31,6 @@ import android.view.LayoutInflater import android.view.SurfaceControl import android.view.SurfaceControlViewHost import android.view.WindowManager.LayoutParams import android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE import android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL import android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL import android.view.WindowlessWindowManager Loading @@ -40,6 +39,7 @@ import android.widget.ImageView import android.widget.RadioButton import android.widget.TextView import android.window.TaskConstants import com.android.window.flags.Flags import com.android.wm.shell.R import com.android.wm.shell.common.DisplayController import com.android.wm.shell.compatui.DialogAnimationController Loading Loading @@ -107,8 +107,12 @@ internal class OpenByDefaultDialog( appIconView = dialog.requireViewById(R.id.application_icon) appNameView = dialog.requireViewById(R.id.application_name) if (Flags.useInputReportedFocusForAccessibility()) { createDialogWindow() } else { // TODO: ag/34061541 - once landed, can refactor with simpler fix transitions.runOnIdle(this::createDialogWindow) } dialog.setDismissOnClickListener { closeMenu() } dialog.setConfirmButtonClickListener { Loading @@ -117,6 +121,9 @@ internal class OpenByDefaultDialog( } listener.onDialogCreated() if (Flags.useInputReportedFocusForAccessibility()) { viewHost.requestInputFocus(true) } } private fun createDialogWindow() { Loading @@ -126,7 +133,7 @@ internal class OpenByDefaultDialog( taskBounds.width(), taskBounds.height(), TYPE_APPLICATION_PANEL, FLAG_NOT_FOCUSABLE or FLAG_NOT_TOUCH_MODAL, FLAG_NOT_TOUCH_MODAL, PixelFormat.TRANSLUCENT ).apply { token = Binder() Loading @@ -143,6 +150,7 @@ internal class OpenByDefaultDialog( } private fun onAnimationEnded() { if (!Flags.useInputReportedFocusForAccessibility()) { dialog.post { dialog.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) val subHeader: TextView = dialog.requireViewById(R.id.dialog_subheader) Loading @@ -150,6 +158,7 @@ internal class OpenByDefaultDialog( subHeader.requestAccessibilityFocus() } } } private fun initializeRadioButtons() { openInAppButton = dialog.requireViewById(R.id.open_in_app_button) Loading @@ -175,6 +184,9 @@ internal class OpenByDefaultDialog( } private fun closeMenu() { if (Flags.useInputReportedFocusForAccessibility()) { viewHost.requestInputFocus(false) } loadAppInfoJob?.cancel() animationController.startExitAnimation(dialog) { // Release the host and manager after the exit animation Loading
libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OpenByDefaultDialogView.kt +4 −1 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.widget.Button import android.widget.RadioButton import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import com.android.window.flags.Flags import com.android.wm.shell.R import com.android.wm.shell.compatui.DialogContainerSupplier Loading Loading @@ -74,8 +75,10 @@ class OpenByDefaultDialogView @JvmOverloads constructor( backgroundDim = background.mutate() backgroundDim.alpha = 128 if (!Flags.useInputReportedFocusForAccessibility()) { setupA11yTraversal() } } // Set up a11y focus so that focus loops through elements within the dialog, instead of going to // elements behind the dialog. Loading