Fix autoSizeText failed due to ClassCastException

Add try catch to autoSizeText in case of unexpected exceptions causing
library crash.
Bug: 127137059
Test: ./gradlew test

Change-Id: I65bf0c9539cd4338baa8b407b34e64e7d9648b1c
diff --git a/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextViewAutoSizeHelper.java b/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextViewAutoSizeHelper.java
index b52de5c..e2a8f9b 100644
--- a/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextViewAutoSizeHelper.java
+++ b/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextViewAutoSizeHelper.java
@@ -719,25 +719,31 @@
     @RequiresApi(23)
     private StaticLayout createStaticLayoutForMeasuring(CharSequence text,
             Layout.Alignment alignment, int availableWidth, int maxLines) {
-        // Can use the StaticLayout.Builder (along with TextView params added in or after
-        // API 23) to construct the layout.
-        final TextDirectionHeuristic textDirectionHeuristic = invokeAndReturnWithDefault(
-                mTextView, "getTextDirectionHeuristic",
-                TextDirectionHeuristics.FIRSTSTRONG_LTR);
 
         final StaticLayout.Builder layoutBuilder = StaticLayout.Builder.obtain(
                 text, 0, text.length(),  mTempTextPaint, availableWidth);
 
-        return layoutBuilder.setAlignment(alignment)
+        layoutBuilder.setAlignment(alignment)
                 .setLineSpacing(
                         mTextView.getLineSpacingExtra(),
                         mTextView.getLineSpacingMultiplier())
                 .setIncludePad(mTextView.getIncludeFontPadding())
                 .setBreakStrategy(mTextView.getBreakStrategy())
                 .setHyphenationFrequency(mTextView.getHyphenationFrequency())
-                .setMaxLines(maxLines == -1 ? Integer.MAX_VALUE : maxLines)
-                .setTextDirection(textDirectionHeuristic)
-                .build();
+                .setMaxLines(maxLines == -1 ? Integer.MAX_VALUE : maxLines);
+
+        try {
+            // Can use the StaticLayout.Builder (along with TextView params added in or after
+            // API 23) to construct the layout.
+            final TextDirectionHeuristic textDirectionHeuristic = invokeAndReturnWithDefault(
+                    mTextView, "getTextDirectionHeuristic",
+                    TextDirectionHeuristics.FIRSTSTRONG_LTR);
+            layoutBuilder.setTextDirection(textDirectionHeuristic);
+        } catch (ClassCastException e) {
+            // On some devices this exception happens, details: b/127137059.
+            Log.w(TAG, "Failed to obtain TextDirectionHeuristic, auto size may be incorrect");
+        }
+        return layoutBuilder.build();
     }
 
     @RequiresApi(16)