Merge "Rename PromptContentListItem to PromptContentItem." into main
diff --git a/core/api/current.txt b/core/api/current.txt
index 0210fc3b..6fe0769d 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -18753,21 +18753,21 @@
method @Nullable public java.security.Signature getSignature();
}
- @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public interface PromptContentListItem {
+ @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public interface PromptContentItem {
}
- @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public final class PromptContentListItemBulletedText implements android.os.Parcelable android.hardware.biometrics.PromptContentListItem {
- ctor public PromptContentListItemBulletedText(@NonNull CharSequence);
+ @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public final class PromptContentItemBulletedText implements android.os.Parcelable android.hardware.biometrics.PromptContentItem {
+ ctor public PromptContentItemBulletedText(@NonNull CharSequence);
method public int describeContents();
method public void writeToParcel(@NonNull android.os.Parcel, int);
- field @NonNull public static final android.os.Parcelable.Creator<android.hardware.biometrics.PromptContentListItemBulletedText> CREATOR;
+ field @NonNull public static final android.os.Parcelable.Creator<android.hardware.biometrics.PromptContentItemBulletedText> CREATOR;
}
- @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public final class PromptContentListItemPlainText implements android.os.Parcelable android.hardware.biometrics.PromptContentListItem {
- ctor public PromptContentListItemPlainText(@NonNull CharSequence);
+ @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public final class PromptContentItemPlainText implements android.os.Parcelable android.hardware.biometrics.PromptContentItem {
+ ctor public PromptContentItemPlainText(@NonNull CharSequence);
method public int describeContents();
method public void writeToParcel(@NonNull android.os.Parcel, int);
- field @NonNull public static final android.os.Parcelable.Creator<android.hardware.biometrics.PromptContentListItemPlainText> CREATOR;
+ field @NonNull public static final android.os.Parcelable.Creator<android.hardware.biometrics.PromptContentItemPlainText> CREATOR;
}
@FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public interface PromptContentView {
@@ -18776,7 +18776,7 @@
@FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public final class PromptVerticalListContentView implements android.os.Parcelable android.hardware.biometrics.PromptContentView {
method public int describeContents();
method @Nullable public CharSequence getDescription();
- method @NonNull public java.util.List<android.hardware.biometrics.PromptContentListItem> getListItems();
+ method @NonNull public java.util.List<android.hardware.biometrics.PromptContentItem> getListItems();
method public static int getMaxEachItemCharacterNumber();
method public static int getMaxItemCount();
method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -18785,7 +18785,8 @@
public static final class PromptVerticalListContentView.Builder {
ctor public PromptVerticalListContentView.Builder();
- method @NonNull public android.hardware.biometrics.PromptVerticalListContentView.Builder addListItem(@NonNull android.hardware.biometrics.PromptContentListItem);
+ method @NonNull public android.hardware.biometrics.PromptVerticalListContentView.Builder addListItem(@NonNull android.hardware.biometrics.PromptContentItem);
+ method @NonNull public android.hardware.biometrics.PromptVerticalListContentView.Builder addListItem(@NonNull android.hardware.biometrics.PromptContentItem, int);
method @NonNull public android.hardware.biometrics.PromptVerticalListContentView build();
method @NonNull public android.hardware.biometrics.PromptVerticalListContentView.Builder setDescription(@NonNull CharSequence);
}
diff --git a/core/java/android/hardware/biometrics/PromptContentListItem.java b/core/java/android/hardware/biometrics/PromptContentItem.java
similarity index 88%
rename from core/java/android/hardware/biometrics/PromptContentListItem.java
rename to core/java/android/hardware/biometrics/PromptContentItem.java
index fa3783d..c47b37a 100644
--- a/core/java/android/hardware/biometrics/PromptContentListItem.java
+++ b/core/java/android/hardware/biometrics/PromptContentItem.java
@@ -21,9 +21,9 @@
import android.annotation.FlaggedApi;
/**
- * A list item shown on {@link PromptVerticalListContentView}.
+ * An item shown on {@link PromptContentView}.
*/
@FlaggedApi(FLAG_CUSTOM_BIOMETRIC_PROMPT)
-public interface PromptContentListItem {
+public interface PromptContentItem {
}
diff --git a/core/java/android/hardware/biometrics/PromptContentListItemBulletedText.java b/core/java/android/hardware/biometrics/PromptContentItemBulletedText.java
similarity index 75%
rename from core/java/android/hardware/biometrics/PromptContentListItemBulletedText.java
rename to core/java/android/hardware/biometrics/PromptContentItemBulletedText.java
index c31f8a6..c5e5a80 100644
--- a/core/java/android/hardware/biometrics/PromptContentListItemBulletedText.java
+++ b/core/java/android/hardware/biometrics/PromptContentItemBulletedText.java
@@ -27,7 +27,7 @@
* A list item with bulleted text shown on {@link PromptVerticalListContentView}.
*/
@FlaggedApi(FLAG_CUSTOM_BIOMETRIC_PROMPT)
-public final class PromptContentListItemBulletedText implements PromptContentListItemParcelable {
+public final class PromptContentItemBulletedText implements PromptContentItemParcelable {
private final CharSequence mText;
/**
@@ -35,7 +35,7 @@
*
* @param text The text of this list item.
*/
- public PromptContentListItemBulletedText(@NonNull CharSequence text) {
+ public PromptContentItemBulletedText(@NonNull CharSequence text) {
mText = text;
}
@@ -67,15 +67,15 @@
* @see Parcelable.Creator
*/
@NonNull
- public static final Creator<PromptContentListItemBulletedText> CREATOR = new Creator<>() {
+ public static final Creator<PromptContentItemBulletedText> CREATOR = new Creator<>() {
@Override
- public PromptContentListItemBulletedText createFromParcel(Parcel in) {
- return new PromptContentListItemBulletedText(in.readCharSequence());
+ public PromptContentItemBulletedText createFromParcel(Parcel in) {
+ return new PromptContentItemBulletedText(in.readCharSequence());
}
@Override
- public PromptContentListItemBulletedText[] newArray(int size) {
- return new PromptContentListItemBulletedText[size];
+ public PromptContentItemBulletedText[] newArray(int size) {
+ return new PromptContentItemBulletedText[size];
}
};
}
diff --git a/core/java/android/hardware/biometrics/PromptContentListItemParcelable.java b/core/java/android/hardware/biometrics/PromptContentItemParcelable.java
similarity index 79%
rename from core/java/android/hardware/biometrics/PromptContentListItemParcelable.java
rename to core/java/android/hardware/biometrics/PromptContentItemParcelable.java
index 15271f0..668912cf 100644
--- a/core/java/android/hardware/biometrics/PromptContentListItemParcelable.java
+++ b/core/java/android/hardware/biometrics/PromptContentItemParcelable.java
@@ -22,9 +22,9 @@
import android.os.Parcelable;
/**
- * A parcelable {@link PromptContentListItem}.
+ * A parcelable {@link PromptContentItem}.
*/
@FlaggedApi(FLAG_CUSTOM_BIOMETRIC_PROMPT)
-sealed interface PromptContentListItemParcelable extends PromptContentListItem, Parcelable
- permits PromptContentListItemPlainText, PromptContentListItemBulletedText {
+sealed interface PromptContentItemParcelable extends PromptContentItem, Parcelable
+ permits PromptContentItemPlainText, PromptContentItemBulletedText {
}
diff --git a/core/java/android/hardware/biometrics/PromptContentListItemPlainText.java b/core/java/android/hardware/biometrics/PromptContentItemPlainText.java
similarity index 76%
rename from core/java/android/hardware/biometrics/PromptContentListItemPlainText.java
rename to core/java/android/hardware/biometrics/PromptContentItemPlainText.java
index d72a758..6434c59 100644
--- a/core/java/android/hardware/biometrics/PromptContentListItemPlainText.java
+++ b/core/java/android/hardware/biometrics/PromptContentItemPlainText.java
@@ -27,7 +27,7 @@
* A list item with plain text shown on {@link PromptVerticalListContentView}.
*/
@FlaggedApi(FLAG_CUSTOM_BIOMETRIC_PROMPT)
-public final class PromptContentListItemPlainText implements PromptContentListItemParcelable {
+public final class PromptContentItemPlainText implements PromptContentItemParcelable {
private final CharSequence mText;
/**
@@ -35,7 +35,7 @@
*
* @param text The text of this list item.
*/
- public PromptContentListItemPlainText(@NonNull CharSequence text) {
+ public PromptContentItemPlainText(@NonNull CharSequence text) {
mText = text;
}
@@ -67,15 +67,15 @@
* @see Parcelable.Creator
*/
@NonNull
- public static final Creator<PromptContentListItemPlainText> CREATOR = new Creator<>() {
+ public static final Creator<PromptContentItemPlainText> CREATOR = new Creator<>() {
@Override
- public PromptContentListItemPlainText createFromParcel(Parcel in) {
- return new PromptContentListItemPlainText(in.readCharSequence());
+ public PromptContentItemPlainText createFromParcel(Parcel in) {
+ return new PromptContentItemPlainText(in.readCharSequence());
}
@Override
- public PromptContentListItemPlainText[] newArray(int size) {
- return new PromptContentListItemPlainText[size];
+ public PromptContentItemPlainText[] newArray(int size) {
+ return new PromptContentItemPlainText[size];
}
};
}
diff --git a/core/java/android/hardware/biometrics/PromptVerticalListContentView.java b/core/java/android/hardware/biometrics/PromptVerticalListContentView.java
index f3cb189..f3e6290 100644
--- a/core/java/android/hardware/biometrics/PromptVerticalListContentView.java
+++ b/core/java/android/hardware/biometrics/PromptVerticalListContentView.java
@@ -40,9 +40,9 @@
* .setSubTitle(...)
* .setContentView(new PromptVerticalListContentView.Builder()
* .setDescription("test description")
- * .addListItem(new PromptContentListItemPlainText("test item 1"))
- * .addListItem(new PromptContentListItemPlainText("test item 2"))
- * .addListItem(new PromptContentListItemBulletedText("test item 3"))
+ * .addListItem(new PromptContentItemPlainText("test item 1"))
+ * .addListItem(new PromptContentItemPlainText("test item 2"))
+ * .addListItem(new PromptContentItemBulletedText("test item 3"))
* .build())
* .build();
* </pre>
@@ -51,11 +51,11 @@
public final class PromptVerticalListContentView implements PromptContentViewParcelable {
private static final int MAX_ITEM_NUMBER = 20;
private static final int MAX_EACH_ITEM_CHARACTER_NUMBER = 640;
- private final List<PromptContentListItemParcelable> mContentList;
+ private final List<PromptContentItemParcelable> mContentList;
private final CharSequence mDescription;
private PromptVerticalListContentView(
- @NonNull List<PromptContentListItemParcelable> contentList,
+ @NonNull List<PromptContentItemParcelable> contentList,
@NonNull CharSequence description) {
mContentList = contentList;
mDescription = description;
@@ -63,8 +63,8 @@
private PromptVerticalListContentView(Parcel in) {
mContentList = in.readArrayList(
- PromptContentListItemParcelable.class.getClassLoader(),
- PromptContentListItemParcelable.class);
+ PromptContentItemParcelable.class.getClassLoader(),
+ PromptContentItemParcelable.class);
mDescription = in.readCharSequence();
}
@@ -94,13 +94,13 @@
}
/**
- * Gets the list of ListItem on the content view, as set by
- * {@link PromptVerticalListContentView.Builder#addListItem(PromptContentListItem)}.
+ * Gets the list of items on the content view, as set by
+ * {@link PromptVerticalListContentView.Builder#addListItem(PromptContentItem)}.
*
* @return The item list on the content view.
*/
@NonNull
- public List<PromptContentListItem> getListItems() {
+ public List<PromptContentItem> getListItems() {
return new ArrayList<>(mContentList);
}
@@ -142,7 +142,7 @@
* A builder that collects arguments to be shown on the vertical list view.
*/
public static final class Builder {
- private final List<PromptContentListItemParcelable> mContentList = new ArrayList<>();
+ private final List<PromptContentItemParcelable> mContentList = new ArrayList<>();
private CharSequence mDescription;
/**
@@ -159,28 +159,50 @@
/**
* Optional: Adds a list item in the current row. Maximum {@value MAX_ITEM_NUMBER} items in
- * total.
+ * total. The maximum length for each item is {@value MAX_EACH_ITEM_CHARACTER_NUMBER}
+ * characters.
*
* @param listItem The list item view to display
* @return This builder.
*/
@NonNull
- public Builder addListItem(@NonNull PromptContentListItem listItem) {
+ public Builder addListItem(@NonNull PromptContentItem listItem) {
if (doesListItemExceedsCharLimit(listItem)) {
throw new IllegalStateException(
"The character number of list item exceeds "
+ MAX_EACH_ITEM_CHARACTER_NUMBER);
}
- mContentList.add((PromptContentListItemParcelable) listItem);
+ mContentList.add((PromptContentItemParcelable) listItem);
return this;
}
- private boolean doesListItemExceedsCharLimit(PromptContentListItem listItem) {
- if (listItem instanceof PromptContentListItemPlainText) {
- return ((PromptContentListItemPlainText) listItem).getText().length()
+
+ /**
+ * Optional: Adds a list item in the current row. Maximum {@value MAX_ITEM_NUMBER} items in
+ * total. The maximum length for each item is {@value MAX_EACH_ITEM_CHARACTER_NUMBER}
+ * characters.
+ *
+ * @param listItem The list item view to display
+ * @param index The position at which to add the item
+ * @return This builder.
+ */
+ @NonNull
+ public Builder addListItem(@NonNull PromptContentItem listItem, int index) {
+ if (doesListItemExceedsCharLimit(listItem)) {
+ throw new IllegalStateException(
+ "The character number of list item exceeds "
+ + MAX_EACH_ITEM_CHARACTER_NUMBER);
+ }
+ mContentList.add(index, (PromptContentItemParcelable) listItem);
+ return this;
+ }
+
+ private boolean doesListItemExceedsCharLimit(PromptContentItem listItem) {
+ if (listItem instanceof PromptContentItemPlainText) {
+ return ((PromptContentItemPlainText) listItem).getText().length()
> MAX_EACH_ITEM_CHARACTER_NUMBER;
- } else if (listItem instanceof PromptContentListItemBulletedText) {
- return ((PromptContentListItemBulletedText) listItem).getText().length()
+ } else if (listItem instanceof PromptContentItemBulletedText) {
+ return ((PromptContentItemBulletedText) listItem).getText().length()
> MAX_EACH_ITEM_CHARACTER_NUMBER;
} else {
return false;
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricCustomizedViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricCustomizedViewBinder.kt
index 22b02da..16e7f05 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricCustomizedViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricCustomizedViewBinder.kt
@@ -20,9 +20,9 @@
import android.content.res.Resources
import android.content.res.Resources.Theme
import android.graphics.Paint
-import android.hardware.biometrics.PromptContentListItem
-import android.hardware.biometrics.PromptContentListItemBulletedText
-import android.hardware.biometrics.PromptContentListItemPlainText
+import android.hardware.biometrics.PromptContentItem
+import android.hardware.biometrics.PromptContentItemBulletedText
+import android.hardware.biometrics.PromptContentItemPlainText
import android.hardware.biometrics.PromptContentView
import android.hardware.biometrics.PromptVerticalListContentView
import android.text.SpannableString
@@ -111,21 +111,21 @@
return inflater.inflate(R.layout.biometric_prompt_content_row_layout, null) as LinearLayout
}
-private fun PromptContentListItem.doesExceedMaxLinesIfTwoColumn(
+private fun PromptContentItem.doesExceedMaxLinesIfTwoColumn(
resources: Resources,
): Boolean {
val passedInText: CharSequence =
when (this) {
- is PromptContentListItemPlainText -> text
- is PromptContentListItemBulletedText -> text
+ is PromptContentItemPlainText -> text
+ is PromptContentItemBulletedText -> text
else -> {
- throw IllegalStateException("No such ListItem: $this")
+ throw IllegalStateException("No such PromptContentItem: $this")
}
}
when (this) {
- is PromptContentListItemPlainText,
- is PromptContentListItemBulletedText -> {
+ is PromptContentItemPlainText,
+ is PromptContentItemBulletedText -> {
val dialogMargin =
resources.getDimensionPixelSize(R.dimen.biometric_dialog_border_padding)
val halfDialogWidth =
@@ -155,12 +155,12 @@
return numLines > maxLines
}
else -> {
- throw IllegalStateException("No such ListItem: $this")
+ throw IllegalStateException("No such PromptContentItem: $this")
}
}
}
-private fun PromptContentListItem.toView(
+private fun PromptContentItem.toView(
resources: Resources,
inflater: LayoutInflater,
theme: Theme,
@@ -171,10 +171,10 @@
textView.layoutParams = lp
when (this) {
- is PromptContentListItemPlainText -> {
+ is PromptContentItemPlainText -> {
textView.text = text
}
- is PromptContentListItemBulletedText -> {
+ is PromptContentItemBulletedText -> {
val bulletedText = SpannableString(text)
val span =
BulletSpan(
@@ -186,25 +186,25 @@
textView.text = bulletedText
}
else -> {
- throw IllegalStateException("No such ListItem: $this")
+ throw IllegalStateException("No such PromptContentItem: $this")
}
}
return textView
}
-private fun PromptContentListItem.getListItemPadding(resources: Resources): Int {
+private fun PromptContentItem.getListItemPadding(resources: Resources): Int {
var listItemPadding =
resources.getDimensionPixelSize(
R.dimen.biometric_prompt_content_list_item_padding_horizontal
) * 2
when (this) {
- is PromptContentListItemPlainText -> {}
- is PromptContentListItemBulletedText -> {
+ is PromptContentItemPlainText -> {}
+ is PromptContentItemBulletedText -> {
listItemPadding +=
getListItemBulletRadius(resources) * 2 + getListItemBulletGapWidth(resources)
}
else -> {
- throw IllegalStateException("No such ListItem: $this")
+ throw IllegalStateException("No such PromptContentItem: $this")
}
}
return listItemPadding
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt
index bd4973d..a57b890 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt
@@ -1,6 +1,6 @@
package com.android.systemui.biometrics.domain.model
-import android.hardware.biometrics.PromptContentListItemBulletedText
+import android.hardware.biometrics.PromptContentItemBulletedText
import android.hardware.biometrics.PromptVerticalListContentView
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
@@ -28,7 +28,8 @@
val contentView =
PromptVerticalListContentView.Builder()
.setDescription("content description")
- .addListItem(PromptContentListItemBulletedText("content text"))
+ .addListItem(PromptContentItemBulletedText("content item 1"))
+ .addListItem(PromptContentItemBulletedText("content item 2"), 1)
.build()
val fpPros = fingerprintSensorPropertiesInternal().first()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
index bf61c2e..3944054 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
@@ -18,7 +18,7 @@
import android.content.res.Configuration
import android.graphics.Point
-import android.hardware.biometrics.PromptContentListItemBulletedText
+import android.hardware.biometrics.PromptContentItemBulletedText
import android.hardware.biometrics.PromptContentView
import android.hardware.biometrics.PromptInfo
import android.hardware.biometrics.PromptVerticalListContentView
@@ -140,7 +140,8 @@
selector.resetPrompt()
promptContentView =
PromptVerticalListContentView.Builder()
- .addListItem(PromptContentListItemBulletedText("test"))
+ .addListItem(PromptContentItemBulletedText("content item 1"))
+ .addListItem(PromptContentItemBulletedText("content item 2"), 1)
.build()
viewModel =