summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanesh M <daneshm90@gmail.com>2015-09-10 20:31:20 -0700
committerDanesh M <daneshm90@gmail.com>2015-09-14 10:46:15 -0700
commit652c8dcef62720e44566af106b10f4c3d1221cbe (patch)
treefda6c2c7c2038892896e593c93552240a8e5f761
parentfbb2efcbc0f7c97d7bd7048bafc68adfe4f4740b (diff)
downloadandroid_packages_providers_TelephonyProvider-652c8dcef62720e44566af106b10f4c3d1221cbe.tar.gz
android_packages_providers_TelephonyProvider-652c8dcef62720e44566af106b10f4c3d1221cbe.tar.bz2
android_packages_providers_TelephonyProvider-652c8dcef62720e44566af106b10f4c3d1221cbe.zip
BlacklistProvider : Use helper methods from utils for validity
issue-id: CYNGNOS-980 Change-Id: Ib605b80e5355df5f4ae050af819eca820427d52b (cherry picked from commit f1ac0c3756fe6cf14b19ca432f8b58f23625ba7a)
-rw-r--r--src/com/android/providers/telephony/BlacklistProvider.java83
1 files changed, 14 insertions, 69 deletions
diff --git a/src/com/android/providers/telephony/BlacklistProvider.java b/src/com/android/providers/telephony/BlacklistProvider.java
index a74d1e7..1398af6 100644
--- a/src/com/android/providers/telephony/BlacklistProvider.java
+++ b/src/com/android/providers/telephony/BlacklistProvider.java
@@ -16,6 +16,8 @@
package com.android.providers.telephony;
+import com.android.internal.telephony.util.BlacklistUtils;
+
import android.app.backup.BackupManager;
import android.content.ContentProvider;
import android.content.ContentUris;
@@ -112,7 +114,8 @@ public class BlacklistProvider extends ContentProvider {
while (rows.moveToNext()) {
String originalNumber = rows.getString(1);
- String normalized = normalizeNumber(mContext, originalNumber).first;
+ String normalized = BlacklistUtils.normalizeNumber(
+ mContext, originalNumber).first;
rowId[0] = rows.getString(0);
cv.clear();
cv.put(COLUMN_NORMALIZED, normalized);
@@ -160,7 +163,8 @@ public class BlacklistProvider extends ContentProvider {
qb.appendWhere(Blacklist._ID + " = " + uri.getLastPathSegment());
break;
case BL_NUMBER: {
- String number = normalizeNumber(getContext(), uri.getLastPathSegment()).first;
+ String number = BlacklistUtils.normalizeNumber(getContext(),
+ uri.getLastPathSegment()).first;
boolean regex = uri.getBooleanQueryParameter(Blacklist.REGEX_KEY, false);
if (regex) {
@@ -267,7 +271,7 @@ public class BlacklistProvider extends ContentProvider {
}
where = COLUMN_NORMALIZED + " = ?";
whereArgs = new String[] {
- normalizeNumber(getContext(), uri.getLastPathSegment()).first
+ BlacklistUtils.normalizeNumber(getContext(), uri.getLastPathSegment()).first
};
break;
default:
@@ -313,7 +317,8 @@ public class BlacklistProvider extends ContentProvider {
db.beginTransaction();
try {
count = db.update(BLACKLIST_TABLE, values, COLUMN_NORMALIZED + " = ?",
- new String[] { normalizeNumber(getContext(), uriNumber).first });
+ new String[] { BlacklistUtils.normalizeNumber(
+ getContext(), uriNumber).first });
if (count == 0) {
// convenience: fall back to insert if number wasn't present
if (db.insert(BLACKLIST_TABLE, null, values) > 0) {
@@ -365,19 +370,15 @@ public class BlacklistProvider extends ContentProvider {
return null;
}
- final Pair<String, Boolean> normalizeResult = normalizeNumber(getContext(), number);
- final String normalizedNumber = normalizeResult.first;
- boolean isRegex = normalizedNumber.indexOf('%') >= 0 ||
- normalizedNumber.indexOf('_') >= 0;
- // For non-regex numbers, apply additional validity checking if
- // they didn't pass e164 normalization
- if (!isRegex && !normalizeResult.second && !isValidPhoneNumber(number)) {
- // number was invalid
+ Pair<String, Boolean> normalizeResult = BlacklistUtils.isValidBlacklistInput(
+ getContext(), number);
+ if (!normalizeResult.second) {
return null;
}
+ final String normalizedNumber = normalizeResult.first;
values.put(COLUMN_NORMALIZED, normalizedNumber);
- values.put(Blacklist.IS_REGEX, isRegex ? 1 : 0);
+ values.put(Blacklist.IS_REGEX, BlacklistUtils.isInputRegex(normalizedNumber) ? 1 : 0);
}
return values;
@@ -387,60 +388,4 @@ public class BlacklistProvider extends ContentProvider {
getContext().getContentResolver().notifyChange(Blacklist.CONTENT_URI, null);
mBackupManager.dataChanged();
}
-
- /**
- * Normalizes the passed in number and tries to format it according to E164.
- * Returns a pair of
- * - normalized number
- * - boolean indicating whether the number is a E164 number or not
- */
- private static Pair<String, Boolean> normalizeNumber(Context context, String number) {
- int len = number.length();
- StringBuilder ret = new StringBuilder(len);
-
- for (int i = 0; i < len; i++) {
- char c = number.charAt(i);
- // Character.digit() supports ASCII and Unicode digits (fullwidth, Arabic-Indic, etc.)
- int digit = Character.digit(c, 10);
- if (digit != -1) {
- ret.append(digit);
- } else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
- String actualNumber = PhoneNumberUtils.convertKeypadLettersToDigits(number);
- return normalizeNumber(context, actualNumber);
- } else if (i == 0 && c == '+') {
- ret.append(c);
- } else if (c == '*') {
- // replace regex match-multiple character by SQL equivalent
- ret.append('%');
- } else if (c == '.') {
- // replace regex-match-single character by SQL equivalent
- ret.append('_');
- }
- }
-
- String normalizedNumber = ret.toString();
- String e164Number = toE164Number(context, normalizedNumber);
- return Pair.create(e164Number != null ? e164Number : normalizedNumber, e164Number != null);
- }
-
- private static String toE164Number(Context context, String src) {
- // Try to retrieve the current ISO Country code
- TelephonyManager tm = (TelephonyManager)
- context.getSystemService(Context.TELEPHONY_SERVICE);
- String countryCode = tm.getSimCountryIso();
- Locale numberLocale = TextUtils.isEmpty(countryCode)
- ? context.getResources().getConfiguration().locale
- : new Locale("", countryCode);
-
- return PhoneNumberUtils.formatNumberToE164(src, numberLocale.getCountry());
- }
-
- private static boolean isValidPhoneNumber(String address) {
- for (int i = 0, count = address.length(); i < count; i++) {
- if (!PhoneNumberUtils.isISODigit(address.charAt(i))) {
- return false;
- }
- }
- return true;
- }
}