diff options
author | Tony Mak <tonymak@google.com> | 2016-03-11 21:23:39 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-03-11 21:23:39 +0000 |
commit | ebfbfa10d95ef21373cf7c112eac52413b11c525 (patch) | |
tree | 8acc61c55d6e769beb3e9c2dc1237da181f4087e | |
parent | a03c1f480e61c1f3507e294095e21b73d23a5e58 (diff) | |
parent | 3dc68df0b856eace41aaca6bd0266da023c18835 (diff) |
Merge "Query lookup uri with work lookup key directly is not allowed" into nyc-dev
4 files changed, 23 insertions, 20 deletions
diff --git a/InCallUI/src/com/android/incallui/CallerInfo.java b/InCallUI/src/com/android/incallui/CallerInfo.java index a638e114c..f270678e0 100644 --- a/InCallUI/src/com/android/incallui/CallerInfo.java +++ b/InCallUI/src/com/android/incallui/CallerInfo.java @@ -237,12 +237,6 @@ public class CallerInfo { info.name = cursor.getString(columnIndex); } - columnIndex = cursor.getColumnIndex(PhoneLookup.LOOKUP_KEY); - if (columnIndex != -1) { - info.nameAlternative = ContactInfoHelper.lookUpDisplayNameAlternative( - context, cursor.getString(columnIndex)); - } - // Look for the number columnIndex = cursor.getColumnIndex(PhoneLookup.NUMBER); if (columnIndex != -1) { @@ -326,6 +320,9 @@ public class CallerInfo { : contactRef.getQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY); final Long directoryId = directory == null ? null : Longs.tryParse(directory); info.userType = ContactsUtils.determineUserType(directoryId, contactId); + + info.nameAlternative = ContactInfoHelper.lookUpDisplayNameAlternative( + context, info.lookupKeyOrNull, info.userType); } cursor.close(); } diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java index 173fe42ec..7d212aa8e 100644 --- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java +++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java @@ -36,6 +36,7 @@ import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.media.AudioAttributes; import android.net.Uri; +import android.provider.ContactsContract.Contacts; import android.support.annotation.Nullable; import android.telecom.Call.Details; import android.telecom.PhoneAccount; @@ -229,7 +230,6 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener, * Sets up the main Ui for the notification */ private void buildAndSendNotification(Call originalCall, ContactCacheEntry contactInfo) { - // This can get called to update an existing notification after contact information has come // back. However, it can happen much later. Before we continue, we need to make sure that // the call being passed in is still the one we want to show in the notification. @@ -440,11 +440,14 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener, private void addPersonReference(Notification.Builder builder, ContactCacheEntry contactInfo, Call call) { - if (contactInfo.lookupUri != null) { + // Query {@link Contacts#CONTENT_LOOKUP_URI} directly with work lookup key is not allowed. + // So, do not pass {@link Contacts#CONTENT_LOOKUP_URI} to NotificationManager to avoid + // NotificationManager using it. + if (contactInfo.lookupUri != null && contactInfo.userType != ContactsUtils.USER_TYPE_WORK) { builder.addPerson(contactInfo.lookupUri.toString()); } else if (!TextUtils.isEmpty(call.getNumber())) { builder.addPerson(Uri.fromParts(PhoneAccount.SCHEME_TEL, - call.getNumber(), null).toString()); + call.getNumber(), null).toString()); } } diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java index a9c7651d9..ff7a3f6a5 100644 --- a/src/com/android/dialer/calllog/ContactInfoHelper.java +++ b/src/com/android/dialer/calllog/ContactInfoHelper.java @@ -31,6 +31,7 @@ import android.text.TextUtils; import android.util.Log; import com.android.contacts.common.ContactsUtils; +import com.android.contacts.common.ContactsUtils.UserType; import com.android.contacts.common.util.Constants; import com.android.contacts.common.util.PermissionsUtil; import com.android.contacts.common.util.PhoneNumberHelper; @@ -181,7 +182,8 @@ public class ContactInfoHelper { } String lookupKey = phoneLookupCursor.getString(PhoneQuery.LOOKUP_KEY); ContactInfo contactInfo = createPhoneLookupContactInfo(phoneLookupCursor, lookupKey); - contactInfo.nameAlternative = lookUpDisplayNameAlternative(mContext, lookupKey); + contactInfo.nameAlternative = lookUpDisplayNameAlternative(mContext, lookupKey, + contactInfo.userType); return contactInfo; } finally { phoneLookupCursor.close(); @@ -207,13 +209,13 @@ public class ContactInfoHelper { return info; } - public static String lookUpDisplayNameAlternative(Context context, String lookupKey) { - if (lookupKey == null) { + public static String lookUpDisplayNameAlternative(Context context, String lookupKey, + @UserType long userType) { + // Query {@link Contacts#CONTENT_LOOKUP_URI} directly with work lookup key is not allowed. + if (lookupKey == null || userType == ContactsUtils.USER_TYPE_WORK) { return null; } - final Uri uri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey); - Cursor cursor = null; try { cursor = context.getContentResolver().query(uri, @@ -222,9 +224,6 @@ public class ContactInfoHelper { if (cursor != null && cursor.moveToFirst()) { return cursor.getString(PhoneQuery.NAME_ALTERNATIVE); } - } catch (IllegalArgumentException e) { - // Thrown for work profile queries. For those, we don't support - // alternative display names. } finally { if (cursor != null) { cursor.close(); diff --git a/tests/src/com/android/dialer/calllog/ContactInfoHelperTest.java b/tests/src/com/android/dialer/calllog/ContactInfoHelperTest.java index 680afb15f..e53eb7893 100644 --- a/tests/src/com/android/dialer/calllog/ContactInfoHelperTest.java +++ b/tests/src/com/android/dialer/calllog/ContactInfoHelperTest.java @@ -22,6 +22,7 @@ import android.provider.ContactsContract.PhoneLookup; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.MediumTest; +import com.android.contacts.common.ContactsUtils; import com.android.contacts.common.test.mocks.ContactsMockContext; import com.android.contacts.common.test.mocks.MockContentProvider.Query; @@ -99,13 +100,15 @@ public class ContactInfoHelperTest extends AndroidTestCase { } public void testLookupDisplayNameAlternative_NullLookup() { - Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, null)); + Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, null, + ContactsUtils.USER_TYPE_CURRENT)); } public void testLookupDisplayNameAlternative_NoResults() { setUpQueryExpectations(displayNameAlternativeUri, PhoneQuery.DISPLAY_NAME_ALTERNATIVE_PROJECTION); - Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, TEST_LOOKUP_KEY)); + Assert.assertNull(mContactInfoHelper.lookUpDisplayNameAlternative(mContext, + TEST_LOOKUP_KEY, ContactsUtils.USER_TYPE_CURRENT)); mContext.verify(); } @@ -113,7 +116,8 @@ public class ContactInfoHelperTest extends AndroidTestCase { setUpQueryExpectations(displayNameAlternativeUri, PhoneQuery.DISPLAY_NAME_ALTERNATIVE_PROJECTION, TEST_DISPLAY_NAME_ALTERNATIVE_ROW); Assert.assertEquals(TEST_DISPLAY_NAME_ALTERNATIVE, - mContactInfoHelper.lookUpDisplayNameAlternative(mContext, TEST_LOOKUP_KEY)); + mContactInfoHelper.lookUpDisplayNameAlternative(mContext, TEST_LOOKUP_KEY + , ContactsUtils.USER_TYPE_CURRENT)); mContext.verify(); } |