diff --git a/tests/autofillservice/res/layout/view_attribute_test_activity.xml b/tests/autofillservice/res/layout/view_attribute_test_activity.xml
index da27150..e383d6c 100644
--- a/tests/autofillservice/res/layout/view_attribute_test_activity.xml
+++ b/tests/autofillservice/res/layout/view_attribute_test_activity.xml
@@ -50,11 +50,11 @@
     <TextView android:id="@+id/textViewNoHint" android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
     <TextView android:id="@+id/textViewHintCustom" android:layout_width="wrap_content"
-        android:layout_height="wrap_content" android:autofillHint="@string/new_password_label" />
+        android:layout_height="wrap_content" android:autofillHints="@string/new_password_label" />
     <TextView android:id="@+id/textViewPassword" android:layout_width="wrap_content"
-        android:layout_height="wrap_content" android:autofillHint="password" />
+        android:layout_height="wrap_content" android:autofillHints="password" />
     <TextView android:id="@+id/textViewPhoneName" android:layout_width="wrap_content"
-        android:layout_height="wrap_content" android:autofillHint=" phone, username     " />
+        android:layout_height="wrap_content" android:autofillHints=" phone, username     " />
     <TextView android:id="@+id/textViewHintsFromArray" android:layout_width="wrap_content"
-        android:layout_height="wrap_content" android:autofillHint="@array/cc_expiration_values" />
+        android:layout_height="wrap_content" android:autofillHints="@array/cc_expiration_values" />
 </LinearLayout>
diff --git a/tests/autofillservice/src/android/autofillservice/cts/ViewAttributesTest.java b/tests/autofillservice/src/android/autofillservice/cts/ViewAttributesTest.java
index 7776758..54b474e 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/ViewAttributesTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/ViewAttributesTest.java
@@ -266,30 +266,30 @@
 
     @Test
     public void checkTextViewNoHint() {
-        assertThat(mActivity.findViewById(R.id.textViewNoHint).getAutofillHint()).isNull();
+        assertThat(mActivity.findViewById(R.id.textViewNoHint).getAutofillHints()).isNull();
     }
 
     @Test
     public void checkTextViewHintCustom() {
-        assertThat(mActivity.findViewById(R.id.textViewHintCustom).getAutofillHint()).isEqualTo(
+        assertThat(mActivity.findViewById(R.id.textViewHintCustom).getAutofillHints()).isEqualTo(
                 new String[]{mActivity.getString(R.string.new_password_label)});
     }
 
     @Test
     public void checkTextViewPassword() {
-        assertThat(mActivity.findViewById(R.id.textViewPassword).getAutofillHint()).isEqualTo(
+        assertThat(mActivity.findViewById(R.id.textViewPassword).getAutofillHints()).isEqualTo(
                 new String[]{View.AUTOFILL_HINT_PASSWORD});
     }
 
     @Test
     public void checkTextViewPhoneName() {
-        assertThat(mActivity.findViewById(R.id.textViewPhoneName).getAutofillHint()).isEqualTo(
+        assertThat(mActivity.findViewById(R.id.textViewPhoneName).getAutofillHints()).isEqualTo(
                 new String[]{View.AUTOFILL_HINT_PHONE, View.AUTOFILL_HINT_USERNAME});
     }
 
     @Test
     public void checkTextViewHintsFromArray() {
-        assertThat(mActivity.findViewById(R.id.textViewHintsFromArray).getAutofillHint()).isEqualTo(
+        assertThat(mActivity.findViewById(R.id.textViewHintsFromArray).getAutofillHints()).isEqualTo(
                 new String[]{"yesterday", "today", "tomorrow", "never"});
     }
 
@@ -297,24 +297,24 @@
     public void checkSetAutoFill() {
         View v = mActivity.findViewById(R.id.textViewNoHint);
 
-        v.setAutofillHint(null);
-        assertThat(v.getAutofillHint()).isNull();
+        v.setAutofillHints(null);
+        assertThat(v.getAutofillHints()).isNull();
 
-        v.setAutofillHint(new String[0]);
-        assertThat(v.getAutofillHint()).isNull();
+        v.setAutofillHints(new String[0]);
+        assertThat(v.getAutofillHints()).isNull();
 
-        v.setAutofillHint(new String[]{View.AUTOFILL_HINT_PASSWORD});
-        assertThat(v.getAutofillHint()).isEqualTo(new String[]{View.AUTOFILL_HINT_PASSWORD});
+        v.setAutofillHints(new String[]{View.AUTOFILL_HINT_PASSWORD});
+        assertThat(v.getAutofillHints()).isEqualTo(new String[]{View.AUTOFILL_HINT_PASSWORD});
 
-        v.setAutofillHint(new String[]{"custom", "value"});
-        assertThat(v.getAutofillHint()).isEqualTo(new String[]{"custom", "value"});
+        v.setAutofillHints(new String[]{"custom", "value"});
+        assertThat(v.getAutofillHints()).isEqualTo(new String[]{"custom", "value"});
 
-        v.setAutofillHint("more", "values");
-        assertThat(v.getAutofillHint()).isEqualTo(new String[]{"more", "values"});
+        v.setAutofillHints("more", "values");
+        assertThat(v.getAutofillHints()).isEqualTo(new String[]{"more", "values"});
 
-        v.setAutofillHint(
+        v.setAutofillHints(
                 new String[]{View.AUTOFILL_HINT_PASSWORD, View.AUTOFILL_HINT_EMAIL_ADDRESS});
-        assertThat(v.getAutofillHint()).isEqualTo(new String[]{View.AUTOFILL_HINT_PASSWORD,
+        assertThat(v.getAutofillHints()).isEqualTo(new String[]{View.AUTOFILL_HINT_PASSWORD,
                 View.AUTOFILL_HINT_EMAIL_ADDRESS});
     }
 
