diff options
author | 2024-10-09 18:24:58 +0000 | |
---|---|---|
committer | 2024-10-09 18:24:58 +0000 | |
commit | 102bf02d3a21cdf402e6b1de6f3cb0794ca9c34f (patch) | |
tree | 7b94ed3e6d0653ae90427d88f8089f4ec25f868a /tests | |
parent | a8b34a512b4c29e6ebc0c03c10f1cae11171bcf1 (diff) | |
parent | de09e2d769cbffdc3ce206e5bd28aec85ddaf635 (diff) |
Merge "CachingTargetDataLoader to cache bitmaps and not drawables" into main
Diffstat (limited to 'tests')
-rw-r--r-- | tests/activity/src/com/android/intentresolver/ResolverWrapperActivity.java | 2 | ||||
-rw-r--r-- | tests/unit/src/com/android/intentresolver/icons/CachingTargetDataLoaderTest.kt | 61 |
2 files changed, 60 insertions, 3 deletions
diff --git a/tests/activity/src/com/android/intentresolver/ResolverWrapperActivity.java b/tests/activity/src/com/android/intentresolver/ResolverWrapperActivity.java index 22633085..0d317dc3 100644 --- a/tests/activity/src/com/android/intentresolver/ResolverWrapperActivity.java +++ b/tests/activity/src/com/android/intentresolver/ResolverWrapperActivity.java @@ -160,7 +160,7 @@ public class ResolverWrapperActivity extends ResolverActivity { } } - private static class TargetDataLoaderWrapper extends TargetDataLoader { + private static class TargetDataLoaderWrapper implements TargetDataLoader { private final TargetDataLoader mTargetDataLoader; private final CountingIdlingResource mLabelIdlingResource; diff --git a/tests/unit/src/com/android/intentresolver/icons/CachingTargetDataLoaderTest.kt b/tests/unit/src/com/android/intentresolver/icons/CachingTargetDataLoaderTest.kt index a36b512b..c5063eed 100644 --- a/tests/unit/src/com/android/intentresolver/icons/CachingTargetDataLoaderTest.kt +++ b/tests/unit/src/com/android/intentresolver/icons/CachingTargetDataLoaderTest.kt @@ -21,11 +21,16 @@ import android.content.Context import android.content.Intent import android.content.pm.ShortcutInfo import android.graphics.Bitmap +import android.graphics.Color import android.graphics.drawable.BitmapDrawable +import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable import android.graphics.drawable.Icon import android.os.UserHandle +import com.android.intentresolver.ResolverDataProvider.createResolveInfo +import com.android.intentresolver.chooser.DisplayResolveInfo import com.android.intentresolver.chooser.SelectableTargetInfo +import com.android.intentresolver.chooser.TargetInfo import java.util.function.Consumer import org.junit.Test import org.mockito.kotlin.any @@ -37,6 +42,7 @@ import org.mockito.kotlin.verify import org.mockito.kotlin.whenever class CachingTargetDataLoaderTest { + private val context = mock<Context>() private val userHandle = UserHandle.of(1) @Test @@ -61,7 +67,7 @@ class CachingTargetDataLoaderTest { on { getOrLoadDirectShareIcon(eq(callerTarget), eq(userHandle), any()) } doReturn null } - val testSubject = CachingTargetDataLoader(targetDataLoader) + val testSubject = CachingTargetDataLoader(context, targetDataLoader) val callback = Consumer<Drawable> {} testSubject.getOrLoadDirectShareIcon(callerTarget, userHandle, callback) @@ -102,7 +108,7 @@ class CachingTargetDataLoaderTest { } .whenever(targetDataLoader) .getOrLoadDirectShareIcon(eq(targetInfo), eq(userHandle), any()) - val testSubject = CachingTargetDataLoader(targetDataLoader) + val testSubject = CachingTargetDataLoader(context, targetDataLoader) val callback = Consumer<Drawable> {} testSubject.getOrLoadDirectShareIcon(targetInfo, userHandle, callback) @@ -112,6 +118,57 @@ class CachingTargetDataLoaderTest { 1 * { getOrLoadDirectShareIcon(eq(targetInfo), eq(userHandle), any()) } } } + + @Test + fun onlyBitmapsAreCached() { + val context = + mock<Context> { + on { userId } doReturn 1 + on { packageName } doReturn "package" + } + val colorTargetInfo = + DisplayResolveInfo.newDisplayResolveInfo( + Intent(), + createResolveInfo(1, userHandle.identifier), + Intent(), + ) as DisplayResolveInfo + val bitmapTargetInfo = + DisplayResolveInfo.newDisplayResolveInfo( + Intent(), + createResolveInfo(2, userHandle.identifier), + Intent(), + ) as DisplayResolveInfo + + val targetDataLoader = mock<TargetDataLoader>() + doAnswer { + val target = it.arguments[0] as TargetInfo + val callback = it.arguments[2] as Consumer<Drawable> + val drawable = + if (target === bitmapTargetInfo) { + BitmapDrawable(createBitmap()) + } else { + ColorDrawable(Color.RED) + } + callback.accept(drawable) + null + } + .whenever(targetDataLoader) + .getOrLoadAppTargetIcon(any(), eq(userHandle), any()) + val testSubject = CachingTargetDataLoader(context, targetDataLoader) + val callback = Consumer<Drawable> {} + + testSubject.getOrLoadAppTargetIcon(colorTargetInfo, userHandle, callback) + testSubject.getOrLoadAppTargetIcon(colorTargetInfo, userHandle, callback) + testSubject.getOrLoadAppTargetIcon(bitmapTargetInfo, userHandle, callback) + testSubject.getOrLoadAppTargetIcon(bitmapTargetInfo, userHandle, callback) + + verify(targetDataLoader) { + 2 * { getOrLoadAppTargetIcon(eq(colorTargetInfo), eq(userHandle), any()) } + } + verify(targetDataLoader) { + 1 * { getOrLoadAppTargetIcon(eq(bitmapTargetInfo), eq(userHandle), any()) } + } + } } private fun createBitmap() = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888) |