From bcb15f99dff4e01343bb7470135f5392a65a01f4 Mon Sep 17 00:00:00 2001 From: Ta-wei Yen Date: Mon, 7 Mar 2016 15:29:13 -0800 Subject: Add contact photo for missed call notifications + ContactPhotoLoader to create the appropriate icon from a ContactInfo - NameLookupQuery in CallLogNotificationsHelper#getContactInfo To show a photo the name is not enough. Full query need to be made to retrieve the photoUri. + class Assert in util + Gradle directory setup for dialer tests (Note: this is just for project setup in Android Studio, tests are still not runnable in gradle) Bug:27276108 Change-Id: I0ed2147f2bb60454fe5a5ad6c25fe99727441880 --- .../dialer/contactinfo/ContactPhotoLoaderTest.java | 106 +++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java (limited to 'tests/src') diff --git a/tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java b/tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java new file mode 100644 index 000000000..42a5ae966 --- /dev/null +++ b/tests/src/com/android/dialer/contactinfo/ContactPhotoLoaderTest.java @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.dialer.contactinfo; + +import android.app.Instrumentation; +import android.content.ContentResolver; +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.support.test.InstrumentationRegistry; +import android.support.v4.graphics.drawable.RoundedBitmapDrawable; +import android.test.AndroidTestCase; +import android.test.InstrumentationTestCase; +import android.text.TextUtils; + +import com.android.contacts.common.GeoUtil; +import com.android.contacts.common.lettertiles.LetterTileDrawable; +import com.android.dialer.calllog.ContactInfo; +import com.android.dialer.calllog.ContactInfoHelper; +import com.android.dialer.tests.R; + +public class ContactPhotoLoaderTest extends InstrumentationTestCase { + + private Context mContext; + + @Override + public void setUp() { + mContext = getInstrumentation().getTargetContext(); + } + + public void testConstructor() { + ContactPhotoLoader loader = new ContactPhotoLoader(mContext, new ContactInfo()); + } + + public void testConstructor_NullContext() { + try { + ContactPhotoLoader loader = new ContactPhotoLoader(null, new ContactInfo()); + fail(); + } catch (NullPointerException e) { + //expected + } + } + + public void testConstructor_NullContactInfo() { + try { + ContactPhotoLoader loader = new ContactPhotoLoader(mContext, null); + fail(); + } catch (NullPointerException e) { + //expected + } + } + + public void testGetIcon_Photo() { + ContactInfo info = getTestContactInfo(); + info.photoUri = getResourceUri(R.drawable.phone_icon); + ContactPhotoLoader loader = new ContactPhotoLoader(mContext, info); + assertTrue(loader.getIcon() instanceof RoundedBitmapDrawable); + } + + public void testGetIcon_Photo_Invalid() { + ContactInfo info = getTestContactInfo(); + info.photoUri = Uri.parse("file://invalid/uri"); + ContactPhotoLoader loader = new ContactPhotoLoader(mContext, info); + //Should fall back to LetterTileDrawable + assertTrue(loader.getIcon() instanceof LetterTileDrawable); + } + + public void testGetIcon_LetterTile() { + ContactInfo info = getTestContactInfo(); + ContactPhotoLoader loader = new ContactPhotoLoader(mContext, info); + assertTrue(loader.getIcon() instanceof LetterTileDrawable); + } + + private Uri getResourceUri(int resId) { + Context testContext = getInstrumentation().getContext(); + Resources resources = testContext.getResources(); + + assertNotNull(resources.getDrawable(resId)); + return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + + testContext.getPackageName() + + '/' + resId); + } + + private ContactInfo getTestContactInfo() { + ContactInfo info = new ContactInfo(); + info.name = "foo"; + info.lookupKey = "bar"; + return info; + } +} \ No newline at end of file -- cgit v1.2.3