summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlavio Lerda <flerda@google.com>2011-12-07 18:16:42 +0000
committerFlavio Lerda <flerda@google.com>2011-12-07 18:16:42 +0000
commitd470984844c388d6766c3de6ac64e93e00480fc9 (patch)
tree0503b693f3850779a461d6a1cc5dd4bb44e21c21
parent2b631dd217a0267fc8a749119bb45bb95b542501 (diff)
downloadlibphonenumber-d470984844c388d6766c3de6ac64e93e00480fc9.tar.gz
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.java20
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) {