diff options
author | Flavio Lerda <flerda@google.com> | 2011-12-07 18:16:42 +0000 |
---|---|---|
committer | Flavio Lerda <flerda@google.com> | 2011-12-07 18:16:42 +0000 |
commit | d470984844c388d6766c3de6ac64e93e00480fc9 (patch) | |
tree | 0503b693f3850779a461d6a1cc5dd4bb44e21c21 | |
parent | 2b631dd217a0267fc8a749119bb45bb95b542501 (diff) | |
download | libphonenumber-d470984844c388d6766c3de6ac64e93e00480fc9.tar.gz |
Fixes for formatInOriginalFormat.android-sdk-4.0.3_r1android-sdk-4.0.3-tools_r1android-cts-verifier-4.0_r1android-cts-verifier-4.0.3_r1android-cts-4.0.3_r2android-cts-4.0.3_r1android-4.0.4_r2.1android-4.0.4_r2android-4.0.4_r1.2android-4.0.4_r1.1android-4.0.4_r1android-4.0.3_r1.1android-4.0.3_r1ics-mr1-releaseics-mr1
Make formatInOriginalFormat not add, remove, or modify any digit from
the number passed in.
Bug: 5723330
Change-Id: I5ff5628151bf6619e56da883c022c299870ec512
-rw-r--r-- | java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java index 7c40d18d..16a975e9 100644 --- a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java +++ b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java @@ -1247,17 +1247,29 @@ public class PhoneNumberUtil { if (!number.hasCountryCodeSource()) { return format(number, PhoneNumberFormat.NATIONAL); } + String formattedNumber; switch (number.getCountryCodeSource()) { case FROM_NUMBER_WITH_PLUS_SIGN: - return format(number, PhoneNumberFormat.INTERNATIONAL); + formattedNumber = format(number, PhoneNumberFormat.INTERNATIONAL); + break; case FROM_NUMBER_WITH_IDD: - return formatOutOfCountryCallingNumber(number, regionCallingFrom); + formattedNumber = formatOutOfCountryCallingNumber(number, regionCallingFrom); + break; case FROM_NUMBER_WITHOUT_PLUS_SIGN: - return format(number, PhoneNumberFormat.INTERNATIONAL).substring(1); + formattedNumber = format(number, PhoneNumberFormat.INTERNATIONAL).substring(1); + break; case FROM_DEFAULT_COUNTRY: default: - return format(number, PhoneNumberFormat.NATIONAL); + formattedNumber = format(number, PhoneNumberFormat.NATIONAL); + break; } + String rawInput = number.getRawInput(); + // If no digit is inserted/removed/modified as a result of our formatting, we return the + // formatted phone number; otherwise we return the raw input the user entered. + return (formattedNumber != null && + normalizeDigitsOnly(formattedNumber).equals(normalizeDigitsOnly(rawInput))) + ? formattedNumber + : rawInput; } private boolean hasFormattingPatternForNumber(PhoneNumber number) { |