From c967deaa2d52abf2ffcf101f3ee0f23c593b6959 Mon Sep 17 00:00:00 2001 From: Riccardo Cipolleschi Date: Thu, 17 Oct 2024 16:08:03 +0100 Subject: [PATCH] Revert "Fix Android AlertFragment Title Accessibility (#45395)" This reverts commit 80a3ed7d0c9b0ecd0cce6045672453887b5efbaf. --- .../ReactAndroid/build.gradle.kts | 1 - .../react/modules/dialog/AlertFragment.java | 62 ++----------------- .../views/alert/layout/alert_title_layout.xml | 22 ------- 3 files changed, 5 insertions(+), 80 deletions(-) delete mode 100644 packages/react-native/ReactAndroid/src/main/res/views/alert/layout/alert_title_layout.xml diff --git a/packages/react-native/ReactAndroid/build.gradle.kts b/packages/react-native/ReactAndroid/build.gradle.kts index 336079752f8ed3..52acc4c084e234 100644 --- a/packages/react-native/ReactAndroid/build.gradle.kts +++ b/packages/react-native/ReactAndroid/build.gradle.kts @@ -557,7 +557,6 @@ android { listOf( "src/main/res/devsupport", "src/main/res/shell", - "src/main/res/views/alert", "src/main/res/views/modal", "src/main/res/views/uimanager")) java.exclude("com/facebook/react/processing") diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/AlertFragment.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/AlertFragment.java index 7a8eb59d0f9e96..b16dd49ba078cf 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/AlertFragment.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/dialog/AlertFragment.java @@ -12,20 +12,11 @@ import android.content.Context; import android.content.DialogInterface; import android.content.res.TypedArray; -import android.os.Build; import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.TextView; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; -import androidx.core.view.AccessibilityDelegateCompat; -import androidx.core.view.ViewCompat; -import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import androidx.fragment.app.DialogFragment; -import com.facebook.infer.annotation.Assertions; import com.facebook.infer.annotation.Nullsafe; -import com.facebook.react.R; /** A fragment used to display the dialog. */ @Nullsafe(Nullsafe.Mode.LOCAL) @@ -75,55 +66,15 @@ private static boolean isAppCompatTheme(Context activityContext) { return isAppCompat; } - /** - * Creates a custom dialog title View that has the role of "Heading" and focusable for - * accessibility purposes. - * - * @returns accessible TextView title - */ - private static View getAccessibleTitle(Context activityContext, String titleText) { - LayoutInflater inflater = LayoutInflater.from(activityContext); - - // This layout matches the sizing and styling of AlertDialog's title_template (minus the icon) - // since the whole thing gets tossed out when setting a custom title - View titleContainer = inflater.inflate(R.layout.alert_title_layout, null); - - TextView accessibleTitle = - Assertions.assertNotNull(titleContainer.findViewById(R.id.alert_title)); - accessibleTitle.setText(titleText); - accessibleTitle.setFocusable(true); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - accessibleTitle.setAccessibilityHeading(true); - } else { - ViewCompat.setAccessibilityDelegate( - accessibleTitle, - new AccessibilityDelegateCompat() { - @Override - public void onInitializeAccessibilityNodeInfo( - View view, AccessibilityNodeInfoCompat info) { - super.onInitializeAccessibilityNodeInfo(accessibleTitle, info); - info.setHeading(true); - } - }); - } - - return titleContainer; - } - /** * Creates a dialog compatible only with AppCompat activities. This function should be kept in * sync with {@link createAppDialog}. */ private static Dialog createAppCompatDialog( Context activityContext, Bundle arguments, DialogInterface.OnClickListener fragment) { - AlertDialog.Builder builder = new AlertDialog.Builder(activityContext); + AlertDialog.Builder builder = + new AlertDialog.Builder(activityContext).setTitle(arguments.getString(ARG_TITLE)); - if (arguments.containsKey(ARG_TITLE)) { - String title = Assertions.assertNotNull(arguments.getString(ARG_TITLE)); - View accessibleTitle = getAccessibleTitle(activityContext, title); - builder.setCustomTitle(accessibleTitle); - } if (arguments.containsKey(ARG_BUTTON_POSITIVE)) { builder.setPositiveButton(arguments.getString(ARG_BUTTON_POSITIVE), fragment); } @@ -154,13 +105,10 @@ private static Dialog createAppCompatDialog( @Deprecated(since = "0.75.0", forRemoval = true) private static Dialog createAppDialog( Context activityContext, Bundle arguments, DialogInterface.OnClickListener fragment) { - android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(activityContext); + android.app.AlertDialog.Builder builder = + new android.app.AlertDialog.Builder(activityContext) + .setTitle(arguments.getString(ARG_TITLE)); - if (arguments.containsKey(ARG_TITLE)) { - String title = Assertions.assertNotNull(arguments.getString(ARG_TITLE)); - View accessibleTitle = getAccessibleTitle(activityContext, title); - builder.setCustomTitle(accessibleTitle); - } if (arguments.containsKey(ARG_BUTTON_POSITIVE)) { builder.setPositiveButton(arguments.getString(ARG_BUTTON_POSITIVE), fragment); } diff --git a/packages/react-native/ReactAndroid/src/main/res/views/alert/layout/alert_title_layout.xml b/packages/react-native/ReactAndroid/src/main/res/views/alert/layout/alert_title_layout.xml deleted file mode 100644 index 0677d76b4b0601..00000000000000 --- a/packages/react-native/ReactAndroid/src/main/res/views/alert/layout/alert_title_layout.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - -