Consider everything <= len(4) a short code, except short countries

// FREEBIE
This commit is contained in:
Moxie Marlinspike
2015-11-14 15:17:05 -08:00
parent 2a753c7795
commit 69f5aacd25
3 changed files with 86 additions and 15 deletions

View File

@@ -33,6 +33,7 @@ import com.google.i18n.phonenumbers.Phonenumber;
import com.google.i18n.phonenumbers.ShortNumberInfo;
import org.thoughtcrime.securesms.util.GroupUtil;
import org.thoughtcrime.securesms.util.ShortCodeUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.VisibleForTesting;
import org.whispersystems.textsecure.api.util.InvalidNumberException;
@@ -151,7 +152,7 @@ public class CanonicalAddressDatabase {
if (isNumberAddress(address) && TextSecurePreferences.isPushRegistered(context)) {
String localNumber = TextSecurePreferences.getLocalNumber(context);
if (!isShortCode(localNumber, address)) {
if (!ShortCodeUtil.isShortCode(localNumber, address)) {
address = PhoneNumberFormatter.formatNumber(address, localNumber);
}
}
@@ -237,20 +238,6 @@ public class CanonicalAddressDatabase {
return PhoneNumberUtils.isWellFormedSmsAddress(number);
}
private boolean isShortCode(@NonNull String localNumber, @NonNull String number) {
try {
PhoneNumberUtil util = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber localNumberObject = util.parse(localNumber, null);
String localCountryCode = util.getRegionCodeForNumber(localNumberObject);
Phonenumber.PhoneNumber shortCode = util.parse(number, localCountryCode);
return ShortNumberInfo.getInstance().isPossibleShortNumberForRegion(shortCode, localCountryCode);
} catch (NumberParseException e) {
Log.w(TAG, e);
return false;
}
}
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context, String name, CursorFactory factory, int version) {