summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/pim/vcard/VCardUtils.java10
-rw-r--r--core/java/android/text/TextUtils.java22
2 files changed, 24 insertions, 8 deletions
diff --git a/core/java/android/pim/vcard/VCardUtils.java b/core/java/android/pim/vcard/VCardUtils.java
index ec75a98..11b112b 100644
--- a/core/java/android/pim/vcard/VCardUtils.java
+++ b/core/java/android/pim/vcard/VCardUtils.java
@@ -359,18 +359,12 @@ public class VCardUtils {
if (values == null) {
return true;
}
- final int asciiFirst = 0x20;
- final int asciiLast = 0x7E; // included
for (final String value : values) {
if (TextUtils.isEmpty(value)) {
continue;
}
- final int length = value.length();
- for (int i = 0; i < length; i = value.offsetByCodePoints(i, 1)) {
- final int c = value.codePointAt(i);
- if (!((asciiFirst <= c && c <= asciiLast) || c == '\r' || c == '\n')) {
- return false;
- }
+ if (!TextUtils.isPrintableAsciiOnly(value)) {
+ return false;
}
}
return true;
diff --git a/core/java/android/text/TextUtils.java b/core/java/android/text/TextUtils.java
index 53096dd..afb22ac 100644
--- a/core/java/android/text/TextUtils.java
+++ b/core/java/android/text/TextUtils.java
@@ -1501,6 +1501,28 @@ public class TextUtils {
}
/**
+ * @hide
+ */
+ public static boolean isPrintableAscii(final char c) {
+ final int asciiFirst = 0x20;
+ final int asciiLast = 0x7E; // included
+ return (asciiFirst <= c && c <= asciiLast) || c == '\r' || c == '\n';
+ }
+
+ /**
+ * @hide
+ */
+ public static boolean isPrintableAsciiOnly(final CharSequence str) {
+ final int len = str.length();
+ for (int i = 0; i < len; i++) {
+ if (!isPrintableAscii(str.charAt(i))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
* Capitalization mode for {@link #getCapsMode}: capitalize all
* characters. This value is explicitly defined to be the same as
* {@link InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.