aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitri Plotnikov <dplotnikov@google.com>2009-10-01 02:27:32 -0700
committerDmitri Plotnikov <dplotnikov@google.com>2009-10-01 02:27:38 -0700
commit20938cd6df602bf08c232b32fc047592c1561347 (patch)
tree4b6679c89d0e3b728f0ecefd35396dd21248bf5d /src
parent0f5116227592cb8e724542c598daffa383964679 (diff)
downloadContactsProvider-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.java26
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);