summaryrefslogtreecommitdiff
path: root/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2021-08-27 21:22:17 +0000
committerAlex Chau <alexchau@google.com>2021-08-31 10:51:52 +0000
commit777d49062ff241ad2d0cfa7d1b0cf01368d32b51 (patch)
tree5f6e1d84e61b438202402228dd6e6bfa7545716a /tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java
parentee3814de1acbdc994e4d0862969019d5ee4f632f (diff)
Revert "Revert "Migrating all model tests to Instrumentation tests""
This reverts commit 7a4a30d86d471e6c45adc2a9907efb27e9b1799b. Test: Presubmit Reason for revert: Fixing original bug Bug: 196825541 Change-Id: Id4b1eb24a89564d264266d305aebea52917dfcd9
Diffstat (limited to 'tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java')
-rw-r--r--tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java151
1 files changed, 151 insertions, 0 deletions
diff --git a/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java b/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java
new file mode 100644
index 0000000000..dba0a4063f
--- /dev/null
+++ b/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java
@@ -0,0 +1,151 @@
+package com.android.launcher3.model;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertTrue;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
+import android.graphics.Color;
+import android.os.Process;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import androidx.annotation.NonNull;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.icons.BitmapInfo;
+import com.android.launcher3.icons.IconCache;
+import com.android.launcher3.icons.cache.CachingLogic;
+import com.android.launcher3.model.data.AppInfo;
+import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.launcher3.util.LauncherModelHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Arrays;
+import java.util.HashSet;
+
+/**
+ * Tests for {@link CacheDataUpdatedTask}
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class CacheDataUpdatedTaskTest {
+
+ private static final String NEW_LABEL_PREFIX = "new-label-";
+
+ private LauncherModelHelper mModelHelper;
+
+ @Before
+ public void setup() throws Exception {
+ mModelHelper = new LauncherModelHelper();
+ mModelHelper.initializeData("cache_data_updated_task_data");
+
+ // Add placeholder entries in the cache to simulate update
+ Context context = mModelHelper.sandboxContext;
+ IconCache iconCache = LauncherAppState.getInstance(context).getIconCache();
+ CachingLogic<ItemInfo> placeholderLogic = new CachingLogic<ItemInfo>() {
+ @Override
+ public ComponentName getComponent(ItemInfo info) {
+ return info.getTargetComponent();
+ }
+
+ @Override
+ public UserHandle getUser(ItemInfo info) {
+ return info.user;
+ }
+
+ @Override
+ public CharSequence getLabel(ItemInfo info) {
+ return NEW_LABEL_PREFIX + info.id;
+ }
+
+ @NonNull
+ @Override
+ public BitmapInfo loadIcon(Context context, ItemInfo info) {
+ return BitmapInfo.of(Bitmap.createBitmap(1, 1, Config.ARGB_8888), Color.RED);
+ }
+ };
+
+ UserManager um = context.getSystemService(UserManager.class);
+ for (ItemInfo info : mModelHelper.getBgDataModel().itemsIdMap) {
+ iconCache.addIconToDBAndMemCache(info, placeholderLogic, new PackageInfo(),
+ um.getSerialNumberForUser(info.user), true);
+ }
+ }
+
+ @After
+ public void tearDown() {
+ mModelHelper.destroy();
+ }
+
+ private CacheDataUpdatedTask newTask(int op, String... pkg) {
+ return new CacheDataUpdatedTask(op, Process.myUserHandle(),
+ new HashSet<>(Arrays.asList(pkg)));
+ }
+
+ @Test
+ public void testCacheUpdate_update_apps() throws Exception {
+ // Clear all icons from apps list so that its easy to check what was updated
+ for (AppInfo info : mModelHelper.getAllAppsList().data) {
+ info.bitmap = BitmapInfo.LOW_RES_INFO;
+ }
+
+ mModelHelper.executeTaskForTest(newTask(CacheDataUpdatedTask.OP_CACHE_UPDATE, "app1"));
+
+ // Verify that only the app icons of app1 (id 1 & 2) are updated. Custom shortcut (id 7)
+ // is not updated
+ verifyUpdate(1, 2);
+
+ // Verify that only app1 var updated in allAppsList
+ assertFalse(mModelHelper.getAllAppsList().data.isEmpty());
+ for (AppInfo info : mModelHelper.getAllAppsList().data) {
+ if (info.componentName.getPackageName().equals("app1")) {
+ assertFalse(info.bitmap.isNullOrLowRes());
+ } else {
+ assertTrue(info.bitmap.isNullOrLowRes());
+ }
+ }
+ }
+
+ @Test
+ public void testSessionUpdate_ignores_normal_apps() throws Exception {
+ mModelHelper.executeTaskForTest(newTask(CacheDataUpdatedTask.OP_SESSION_UPDATE, "app1"));
+
+ // app1 has no restored shortcuts. Verify that nothing was updated.
+ verifyUpdate();
+ }
+
+ @Test
+ public void testSessionUpdate_updates_pending_apps() throws Exception {
+ mModelHelper.executeTaskForTest(newTask(CacheDataUpdatedTask.OP_SESSION_UPDATE, "app3"));
+
+ // app3 has only restored apps (id 5, 6) and shortcuts (id 9). Verify that only apps were
+ // were updated
+ verifyUpdate(5, 6);
+ }
+
+ private void verifyUpdate(Integer... idsUpdated) {
+ HashSet<Integer> updates = new HashSet<>(Arrays.asList(idsUpdated));
+ for (ItemInfo info : mModelHelper.getBgDataModel().itemsIdMap) {
+ if (updates.contains(info.id)) {
+ assertEquals(NEW_LABEL_PREFIX + info.id, info.title);
+ assertFalse(((WorkspaceItemInfo) info).bitmap.isNullOrLowRes());
+ } else {
+ assertNotSame(NEW_LABEL_PREFIX + info.id, info.title);
+ assertTrue(((WorkspaceItemInfo) info).bitmap.isNullOrLowRes());
+ }
+ }
+ }
+}