Skip to content

Commit

Permalink
Merge branch 'release/8.13.48' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelRocks committed Oct 27, 2024
2 parents e2b0564 + da5074f commit c9c7939
Show file tree
Hide file tree
Showing 16 changed files with 62 additions and 35 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ repositories {
}
dependencies {
implementation 'io.michaelrocks:libphonenumber-android:8.13.47'
implementation 'io.michaelrocks:libphonenumber-android:8.13.48'
}
```

Expand Down Expand Up @@ -63,5 +63,5 @@ License
limitations under the License.

[1]: https://github.com/googlei18n/libphonenumber
[2]: http://www.methodscount.com/?lib=com.googlecode.libphonenumber%3Alibphonenumber%3A8.13.47
[2]: http://www.methodscount.com/?lib=com.googlecode.libphonenumber%3Alibphonenumber%3A8.13.48
[3]: http://blog.nimbledroid.com/2016/04/06/slow-ClassLoader.getResourceAsStream.html
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
buildscript {
group = 'io.michaelrocks'
version = '8.13.47'
version = '8.13.48'

ext.projectCompileSdkVersion = 35
ext.projectBuildToolsVersion = '35.0.0'
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package io.michaelrocks.libphonenumber.android.metadata.source;

import java.util.regex.Pattern;

/**
* {@link PhoneMetadataFileNameProvider} implementation which appends key as a suffix to the
Expand All @@ -26,7 +25,6 @@
public final class MultiFileModeFileNameProvider implements PhoneMetadataFileNameProvider {

private final String phoneMetadataFileNamePrefix;
private static final Pattern ALPHANUMERIC = Pattern.compile("^[\\p{L}\\p{N}]+$");

public MultiFileModeFileNameProvider(String phoneMetadataFileNameBase) {
this.phoneMetadataFileNamePrefix = phoneMetadataFileNameBase + "_";
Expand All @@ -35,9 +33,27 @@ public MultiFileModeFileNameProvider(String phoneMetadataFileNameBase) {
@Override
public String getFor(Object key) {
String keyAsString = key.toString();
if (!ALPHANUMERIC.matcher(keyAsString).matches()) {
if (!isAlphanumeric(keyAsString)) {
throw new IllegalArgumentException("Invalid key: " + keyAsString);
}
return phoneMetadataFileNamePrefix + key;
}

private boolean isAlphanumeric(String key) {
if (key == null || key.length() == 0) {
return false;
}
// String#length doesn't actually return the number of
// code points in the String, it returns the number
// of char values.
int size = key.length();
for (int charIdx = 0; charIdx < size; ) {
final int codePoint = key.codePointAt(charIdx);
if (!Character.isLetterOrDigit(codePoint)) {
return false;
}
charIdx += Character.charCount(codePoint);
}
return true;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2010 The Libphonenumber Authors
* Copyright (C) 2011 The Libphonenumber Authors
* Copyright (C) 2022 Michael Rozumyanskiy
*
* Licensed under the Apache License, Version 2.0 (the "License");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,7 @@ public void testGetExampleNumber() {
// We have data for the US, but no data for VOICEMAIL, so return null.
assertNull(phoneUtil.getExampleNumberForType(RegionCode.US, PhoneNumberType.VOICEMAIL));
// CS is an invalid region, so we have no data for it.
assertNull(phoneUtil.getExampleNumberForType(RegionCode.CS, PhoneNumberType.MOBILE));
assertNull(phoneUtil.getExampleNumberForType("CS", PhoneNumberType.MOBILE));
// RegionCode 001 is reserved for supporting non-geographical country calling code. We don't
// support getting an example number for it with this method.
assertNull(phoneUtil.getExampleNumber(RegionCode.UN001));
Expand All @@ -427,7 +427,7 @@ public void testGetInvalidExampleNumber() {
// RegionCode 001 is reserved for supporting non-geographical country calling codes. We don't
// support getting an invalid example number for it with getInvalidExampleNumber.
assertNull(phoneUtil.getInvalidExampleNumber(RegionCode.UN001));
assertNull(phoneUtil.getInvalidExampleNumber(RegionCode.CS));
assertNull(phoneUtil.getInvalidExampleNumber("CS"));
PhoneNumber usInvalidNumber = phoneUtil.getInvalidExampleNumber(RegionCode.US);
assertEquals(1, usInvalidNumber.getCountryCode());
assertFalse(usInvalidNumber.getNationalNumber() == 0);
Expand Down Expand Up @@ -660,7 +660,7 @@ public void testFormatOutOfCountryWithInvalidRegion() {
// AQ/Antarctica isn't a valid region code for phone number formatting,
// so this falls back to intl formatting.
assertEquals("+1 650 253 0000",
phoneUtil.formatOutOfCountryCallingNumber(US_NUMBER, RegionCode.AQ));
phoneUtil.formatOutOfCountryCallingNumber(US_NUMBER, "AQ"));
// For region code 001, the out-of-country format always turns into the international format.
assertEquals("+1 650 253 0000",
phoneUtil.formatOutOfCountryCallingNumber(US_NUMBER, RegionCode.UN001));
Expand Down Expand Up @@ -737,7 +737,7 @@ public void testFormatOutOfCountryKeepingAlphaChars() {
phoneUtil.formatOutOfCountryKeepingAlphaChars(alphaNumericNumber, RegionCode.SG));
// Testing the case of calling from a non-supported region.
assertEquals("+61 1-800-SIX-FLAG",
phoneUtil.formatOutOfCountryKeepingAlphaChars(alphaNumericNumber, RegionCode.AQ));
phoneUtil.formatOutOfCountryKeepingAlphaChars(alphaNumericNumber, "AQ"));

// Testing the case with an invalid country calling code.
alphaNumericNumber.setCountryCode(0).setNationalNumber(18007493524L)
Expand All @@ -756,7 +756,7 @@ public void testFormatOutOfCountryKeepingAlphaChars() {
alphaNumericNumber.setCountryCode(1).setNationalNumber(80749L).setRawInput("180-SIX");
// No country-code stripping can be done since the number is invalid.
assertEquals("+1 180-SIX",
phoneUtil.formatOutOfCountryKeepingAlphaChars(alphaNumericNumber, RegionCode.AQ));
phoneUtil.formatOutOfCountryKeepingAlphaChars(alphaNumericNumber, "AQ"));
}

public void testFormatWithCarrierCode() {
Expand Down Expand Up @@ -822,12 +822,12 @@ public void testFormatNumberForMobileDialing() {
assertEquals("030123456",
phoneUtil.formatNumberForMobileDialing(DE_NUMBER, RegionCode.DE, false));
assertEquals("+4930123456",
phoneUtil.formatNumberForMobileDialing(DE_NUMBER, RegionCode.CH, false));
phoneUtil.formatNumberForMobileDialing(DE_NUMBER, "CH", false));
PhoneNumber deNumberWithExtn = new PhoneNumber().mergeFrom(DE_NUMBER).setExtension("1234");
assertEquals("030123456",
phoneUtil.formatNumberForMobileDialing(deNumberWithExtn, RegionCode.DE, false));
assertEquals("+4930123456",
phoneUtil.formatNumberForMobileDialing(deNumberWithExtn, RegionCode.CH, false));
phoneUtil.formatNumberForMobileDialing(deNumberWithExtn, "CH", false));

// US toll free numbers are marked as noInternationalDialling in the test metadata for testing
// purposes. For such numbers, we expect nothing to be returned when the region code is not the
Expand Down Expand Up @@ -1338,7 +1338,7 @@ public void testGetCountryCodeForRegion() {
assertEquals(0, phoneUtil.getCountryCodeForRegion(RegionCode.ZZ));
assertEquals(0, phoneUtil.getCountryCodeForRegion(RegionCode.UN001));
// CS is already deprecated so the library doesn't support it.
assertEquals(0, phoneUtil.getCountryCodeForRegion(RegionCode.CS));
assertEquals(0, phoneUtil.getCountryCodeForRegion("CS"));
}

public void testGetNationalDiallingPrefixForRegion() {
Expand All @@ -1355,7 +1355,7 @@ public void testGetNationalDiallingPrefixForRegion() {
assertEquals(null, phoneUtil.getNddPrefixForRegion(RegionCode.ZZ, false));
assertEquals(null, phoneUtil.getNddPrefixForRegion(RegionCode.UN001, false));
// CS is already deprecated so the library doesn't support it.
assertEquals(null, phoneUtil.getNddPrefixForRegion(RegionCode.CS, false));
assertEquals(null, phoneUtil.getNddPrefixForRegion("CS", false));
}

public void testIsNANPACountry() {
Expand Down Expand Up @@ -2432,7 +2432,7 @@ public void testFailedParseOnInvalidNumbers() {
}
try {
String someNumber = "123 456 7890";
phoneUtil.parse(someNumber, RegionCode.CS);
phoneUtil.parse(someNumber, "CS");
fail("Deprecated region code not allowed: should fail.");
} catch (NumberParseException e) {
// Expected this exception.
Expand Down Expand Up @@ -2856,7 +2856,7 @@ public void testParseAndKeepRaw() throws Exception {

// Invalid region code supplied.
try {
phoneUtil.parseAndKeepRawInput("123 456 7890", RegionCode.CS);
phoneUtil.parseAndKeepRawInput("123 456 7890", "CS");
fail("Deprecated region code not allowed: should fail.");
} catch (NumberParseException e) {
// Expected this exception.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
* limitations under the License.
*/

/* This file is automatically generated by {@link BuildMetadataProtoFromXml}.
* Please don't modify it directly.
*/

package io.michaelrocks.libphonenumber.android;

/**
Expand All @@ -27,39 +31,35 @@ final class RegionCode {
static final String AE = "AE";
static final String AM = "AM";
static final String AO = "AO";
static final String AQ = "AQ";
static final String AR = "AR";
static final String AU = "AU";
static final String BB = "BB";
static final String BR = "BR";
static final String BS = "BS";
static final String BY = "BY";
static final String CA = "CA";
static final String CH = "CH";
static final String CL = "CL";
static final String CC = "CC";
static final String CN = "CN";
static final String CO = "CO";
static final String CS = "CS";
static final String CX = "CX";
static final String DE = "DE";
static final String FR = "FR";
static final String GB = "GB";
static final String HU = "HU";
static final String GG = "GG";
static final String IT = "IT";
static final String JP = "JP";
static final String KR = "KR";
static final String MX = "MX";
static final String NZ = "NZ";
static final String PG = "PG";
static final String PL = "PL";
static final String RE = "RE";
static final String RU = "RU";
static final String SE = "SE";
static final String SG = "SG";
static final String TA = "TA";
static final String US = "US";
static final String UZ = "UZ";
static final String YT = "YT";
static final String ZW = "ZW";
// Official code for the unknown region.
static final String ZZ = "ZZ";
}
Original file line number Diff line number Diff line change
Expand Up @@ -244,14 +244,14 @@ public void testConnectsToEmergencyNumberLongNumber_BR() {
}

public void testConnectsToEmergencyNumber_CL() {
assertTrue(shortInfo.connectsToEmergencyNumber("131", RegionCode.CL));
assertTrue(shortInfo.connectsToEmergencyNumber("133", RegionCode.CL));
assertTrue(shortInfo.connectsToEmergencyNumber("131", "CL"));
assertTrue(shortInfo.connectsToEmergencyNumber("133", "CL"));
}

public void testConnectsToEmergencyNumberLongNumber_CL() {
// Chilean emergency numbers don't work when additional digits are appended.
assertFalse(shortInfo.connectsToEmergencyNumber("1313", RegionCode.CL));
assertFalse(shortInfo.connectsToEmergencyNumber("1330", RegionCode.CL));
assertFalse(shortInfo.connectsToEmergencyNumber("1313", "CL"));
assertFalse(shortInfo.connectsToEmergencyNumber("1330", "CL"));
}

public void testConnectsToEmergencyNumber_AO() {
Expand All @@ -263,9 +263,9 @@ public void testConnectsToEmergencyNumber_AO() {

public void testConnectsToEmergencyNumber_ZW() {
// Zimbabwe doesn't have any metadata in the test metadata.
assertFalse(shortInfo.connectsToEmergencyNumber("911", RegionCode.ZW));
assertFalse(shortInfo.connectsToEmergencyNumber("01312345", RegionCode.ZW));
assertFalse(shortInfo.connectsToEmergencyNumber("0711234567", RegionCode.ZW));
assertFalse(shortInfo.connectsToEmergencyNumber("911", "ZW"));
assertFalse(shortInfo.connectsToEmergencyNumber("01312345", "ZW"));
assertFalse(shortInfo.connectsToEmergencyNumber("0711234567", "ZW"));
}

public void testIsEmergencyNumber_US() {
Expand Down Expand Up @@ -318,9 +318,9 @@ public void testIsEmergencyNumber_AO() {

public void testIsEmergencyNumber_ZW() {
// Zimbabwe doesn't have any metadata in the test metadata.
assertFalse(shortInfo.isEmergencyNumber("911", RegionCode.ZW));
assertFalse(shortInfo.isEmergencyNumber("01312345", RegionCode.ZW));
assertFalse(shortInfo.isEmergencyNumber("0711234567", RegionCode.ZW));
assertFalse(shortInfo.isEmergencyNumber("911", "ZW"));
assertFalse(shortInfo.isEmergencyNumber("01312345", "ZW"));
assertFalse(shortInfo.isEmergencyNumber("0711234567", "ZW"));
}

public void testEmergencyNumberForSharedCountryCallingCode() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,15 @@ public void run() {
}
});
}

public void getFor_shouldThrowExceptionForEmptyKey() {
assertThrows(
IllegalArgumentException.class,
new ThrowingRunnable() {
@Override
public void run() {
metadataFileNameProvider.getFor("");
}
});
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 comments on commit c9c7939

Please sign in to comment.