AutoSize TextView - upgrade CTS testAutoSizeCallers_setMaxLines

Port test introduced in support library
(Change-Id: I0769114c9f24566ca7feb7dad378a1f6b34b6f07)
to make sure that autosize plays well with maxlines. This
is an upgrade over the previous version.

Bug: 62525860
Test: cts-tradefed run cts-dev -m CtsWidgetTestCases -t
      android.widget.cts.TextViewTest#testAutoSizeCallers_setMaxLines

Change-Id: I9f9f57030247ae7db7a9d5dbd617310a71035f72
diff --git a/tests/tests/widget/src/android/widget/cts/TextViewTest.java b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
index b2c2cd4..9680ce2 100644
--- a/tests/tests/widget/src/android/widget/cts/TextViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
@@ -6966,11 +6966,53 @@
     public void testAutoSizeCallers_setMaxLines() throws Throwable {
         final TextView autoSizeTextView = prepareAndRetrieveAutoSizeTestData(
                 R.id.textview_autosize_uniform, false);
-        final float initialTextSize = autoSizeTextView.getTextSize();
-        mActivityRule.runOnUiThread(() -> autoSizeTextView.setMaxLines(1));
+        // Configure layout params and auto-size both in pixels to dodge flakiness on different
+        // devices.
+        final LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
+                200, 200);
+        final String text = "one\ntwo\nthree\nfour\nfive\nsix\nseven\neight\nnine\nten";
+        mActivityRule.runOnUiThread(() -> {
+            autoSizeTextView.setLayoutParams(layoutParams);
+            autoSizeTextView.setAutoSizeTextTypeUniformWithConfiguration(
+                    1 /* autoSizeMinTextSize */,
+                    5000 /* autoSizeMaxTextSize */,
+                    1 /* autoSizeStepGranularity */,
+                    TypedValue.COMPLEX_UNIT_PX);
+            autoSizeTextView.setText(text);
+        });
         mInstrumentation.waitForIdleSync();
 
-        assertTrue(autoSizeTextView.getTextSize() < initialTextSize);
+        float initialSize = 0;
+        for (int i = 1; i < 10; i++) {
+            final int maxLines = i;
+            mActivityRule.runOnUiThread(() -> autoSizeTextView.setMaxLines(maxLines));
+            mInstrumentation.waitForIdleSync();
+            float expectedSmallerSize = autoSizeTextView.getTextSize();
+            if (i == 1) {
+                initialSize = expectedSmallerSize;
+            }
+
+            mActivityRule.runOnUiThread(() -> autoSizeTextView.setMaxLines(maxLines + 1));
+            mInstrumentation.waitForIdleSync();
+            assertTrue(expectedSmallerSize <= autoSizeTextView.getTextSize());
+        }
+        assertTrue(initialSize < autoSizeTextView.getTextSize());
+
+        initialSize = Integer.MAX_VALUE;
+        for (int i = 10; i > 1; i--) {
+            final int maxLines = i;
+            mActivityRule.runOnUiThread(() -> autoSizeTextView.setMaxLines(maxLines));
+            mInstrumentation.waitForIdleSync();
+            float expectedLargerSize = autoSizeTextView.getTextSize();
+            if (i == 10) {
+                initialSize = expectedLargerSize;
+            }
+
+            mActivityRule.runOnUiThread(() -> autoSizeTextView.setMaxLines(maxLines - 1));
+            mInstrumentation.waitForIdleSync();
+            assertTrue(expectedLargerSize >= autoSizeTextView.getTextSize());
+        }
+        assertTrue(initialSize > autoSizeTextView.getTextSize());
     }
 
     @Test