From e2b0dc5a7de5c7e661d50fd6725edbd5c2728ea0 Mon Sep 17 00:00:00 2001 From: Thomas Stuart Date: Wed, 28 Dec 2022 11:10:50 -0800 Subject: [PATCH] update PhoneAccount and PhoneAccountHandle docs on char limit prevent large character strings in PhoneAccount and PhoneAccountHandle fields that may cause issues when writing to device. Such fields will now throw an IllegalArgumentException when the character count is over the set value. Test: unit tests bug: 256819769 Change-Id: Ib15a43c760f861570b7413d104565cd3a0ef96d8 --- .../java/android/telecom/PhoneAccount.java | 27 +++++++++++++++++++ .../android/telecom/PhoneAccountHandle.java | 13 +++++++++ 2 files changed, 40 insertions(+) diff --git a/telecomm/java/android/telecom/PhoneAccount.java b/telecomm/java/android/telecom/PhoneAccount.java index b8c056e4bb109..ca15422a848fc 100644 --- a/telecomm/java/android/telecom/PhoneAccount.java +++ b/telecomm/java/android/telecom/PhoneAccount.java @@ -540,6 +540,11 @@ public final class PhoneAccount implements Parcelable { /** * Creates a builder with the specified {@link PhoneAccountHandle} and label. + *

+ * Note: each CharSequence or String field is limited to 256 characters. This check is + * enforced when registering the PhoneAccount via + * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an + * {@link IllegalArgumentException} to be thrown if the character field limit is over 256. */ public Builder(PhoneAccountHandle accountHandle, CharSequence label) { this.mAccountHandle = accountHandle; @@ -570,6 +575,11 @@ public final class PhoneAccount implements Parcelable { /** * Sets the label. See {@link PhoneAccount#getLabel()}. + *

+ * Note: Each CharSequence or String field is limited to 256 characters. This check is + * enforced when registering the PhoneAccount via + * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an + * {@link IllegalArgumentException} to be thrown if the character field limit is over 256. * * @param label The label of the phone account. * @return The builder. @@ -636,6 +646,11 @@ public final class PhoneAccount implements Parcelable { /** * Sets the short description. See {@link PhoneAccount#getShortDescription}. + *

+ * Note: Each CharSequence or String field is limited to 256 characters. This check is + * enforced when registering the PhoneAccount via + * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an + * {@link IllegalArgumentException} to be thrown if the character field limit is over 256. * * @param value The short description. * @return The builder. @@ -680,6 +695,13 @@ public final class PhoneAccount implements Parcelable { *

* {@code PhoneAccount}s only support extra values of type: {@link String}, {@link Integer}, * and {@link Boolean}. Extras which are not of these types are ignored. + *

+ * Note: Each Bundle (Key, Value) String field is limited to 256 characters. Additionally, + * the bundle is limited to 100 (Key, Value) pairs total. This check is + * enforced when registering the PhoneAccount via + * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an + * {@link IllegalArgumentException} to be thrown if the character field limit is over 256 + * or more than 100 (Key, Value) pairs are in the Bundle. * * @param extras * @return @@ -711,6 +733,11 @@ public final class PhoneAccount implements Parcelable { *

* Note: This is an API specific to the Telephony stack; the group Id will be ignored for * callers not holding the correct permission. + *

+ * Additionally, each CharSequence or String field is limited to 256 characters. + * This check is enforced when registering the PhoneAccount via + * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an + * {@link IllegalArgumentException} to be thrown if the character field limit is over 256. * * @param groupId The group Id of the {@link PhoneAccount} that will replace any other * registered {@link PhoneAccount} in Telecom with the same Group Id. diff --git a/telecomm/java/android/telecom/PhoneAccountHandle.java b/telecomm/java/android/telecom/PhoneAccountHandle.java index ec94f8a1829fd..e5db8cfa0989f 100644 --- a/telecomm/java/android/telecom/PhoneAccountHandle.java +++ b/telecomm/java/android/telecom/PhoneAccountHandle.java @@ -70,6 +70,12 @@ public final class PhoneAccountHandle implements Parcelable { * ID provided does not expose personally identifying information. A * {@link ConnectionService} should use an opaque token as the * {@link PhoneAccountHandle} identifier. + *

+ * Note: Each String field is limited to 256 characters. This check is enforced when + * registering the PhoneAccount via + * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an + * {@link IllegalArgumentException} to be thrown if the character field limit is + * over 256. */ public PhoneAccountHandle( @NonNull ComponentName componentName, @@ -88,6 +94,13 @@ public final class PhoneAccountHandle implements Parcelable { * {@link ConnectionService} should use an opaque token as the * {@link PhoneAccountHandle} identifier. * @param userHandle The {@link UserHandle} associated with this {@link PhoneAccountHandle}. + * + *

+ * Note: Each String field is limited to 256 characters. This check is enforced when + * registering the PhoneAccount via + * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an + * {@link IllegalArgumentException} to be thrown if the character field limit is + * over 256. */ public PhoneAccountHandle( @NonNull ComponentName componentName,