am d4709848: Fixes for formatInOriginalFormat.
* commit 'd470984844c388d6766c3de6ac64e93e00480fc9':
Fixes for formatInOriginalFormat.
diff --git a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
index 735f2af..705a8be 100644
--- a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
+++ b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
@@ -1367,17 +1367,29 @@
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) {