diff options
author | Dmitri Plotnikov <dplotnikov@google.com> | 2009-10-01 02:27:32 -0700 |
---|---|---|
committer | Dmitri Plotnikov <dplotnikov@google.com> | 2009-10-01 02:27:38 -0700 |
commit | 20938cd6df602bf08c232b32fc047592c1561347 (patch) | |
tree | 4b6679c89d0e3b728f0ecefd35396dd21248bf5d /src | |
parent | 0f5116227592cb8e724542c598daffa383964679 (diff) | |
download | ContactsProvider-20938cd6df602bf08c232b32fc047592c1561347.tar.gz |
[Issue 2159148] Restricting email filtering to not show other email for the suggested person
Change-Id: Ic1692de29912f8875e09ed392d48c48558c3b307
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/providers/contacts/ContactsProvider2.java | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java index ef5fb667..44e016a3 100644 --- a/src/com/android/providers/contacts/ContactsProvider2.java +++ b/src/com/android/providers/contacts/ContactsProvider2.java @@ -3299,7 +3299,7 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun String normalizedName = NameNormalizer.normalize(filterParam); if (normalizedName.length() > 0) { sb.append(Data.RAW_CONTACT_ID + " IN "); - appendRawContactsByNormalizedNameFilter(sb, normalizedName, null); + appendRawContactsByNormalizedNameFilter(sb, normalizedName, null, false); orNeeded = true; } @@ -3354,11 +3354,13 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun StringBuilder sb = new StringBuilder(); sb.append("("); - String normalizedName = NameNormalizer.normalize(filterParam); - if (normalizedName.length() > 0) { - sb.append(Data.RAW_CONTACT_ID + " IN "); - appendRawContactsByNormalizedNameFilter(sb, normalizedName, null); - sb.append(" OR "); + if (!filterParam.contains("@")) { + String normalizedName = NameNormalizer.normalize(filterParam); + if (normalizedName.length() > 0) { + sb.append(Data.RAW_CONTACT_ID + " IN "); + appendRawContactsByNormalizedNameFilter(sb, normalizedName, null, false); + sb.append(" OR "); + } } sb.append(Email.DATA + " LIKE "); @@ -4696,11 +4698,12 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun public void appendRawContactsByFilterAsNestedQuery(StringBuilder sb, String filterParam, String limit) { - appendRawContactsByNormalizedNameFilter(sb, NameNormalizer.normalize(filterParam), limit); + appendRawContactsByNormalizedNameFilter(sb, NameNormalizer.normalize(filterParam), limit, + true); } private void appendRawContactsByNormalizedNameFilter(StringBuilder sb, String normalizedName, - String limit) { + String limit, boolean allowEmailMatch) { sb.append("(" + "SELECT DISTINCT " + NameLookupColumns.RAW_CONTACT_ID + " FROM " + Tables.NAME_LOOKUP + @@ -4710,8 +4713,11 @@ public class ContactsProvider2 extends SQLiteContentProvider implements OnAccoun sb.append("*' AND " + NameLookupColumns.NAME_TYPE + " IN (" + NameLookupType.NAME_COLLATION_KEY + "," + NameLookupType.NICKNAME + "," - + NameLookupType.EMAIL_BASED_NICKNAME + "," - + NameLookupType.ORGANIZATION + ")"); + + NameLookupType.ORGANIZATION); + if (allowEmailMatch) { + sb.append("," + NameLookupType.EMAIL_BASED_NICKNAME); + } + sb.append(")"); if (limit != null) { sb.append(" LIMIT ").append(limit); |