1 package com.android.launcher3.model; 2 3 import static org.junit.Assert.assertEquals; 4 5 import androidx.test.ext.junit.runners.AndroidJUnit4; 6 import androidx.test.filters.SmallTest; 7 8 import com.android.launcher3.model.data.ItemInfo; 9 import com.android.launcher3.model.data.LauncherAppWidgetInfo; 10 import com.android.launcher3.model.data.WorkspaceItemInfo; 11 import com.android.launcher3.pm.PackageInstallInfo; 12 import com.android.launcher3.util.LauncherModelHelper; 13 14 import org.junit.After; 15 import org.junit.Before; 16 import org.junit.Test; 17 import org.junit.runner.RunWith; 18 19 import java.util.Arrays; 20 import java.util.HashSet; 21 22 /** 23 * Tests for {@link PackageInstallStateChangedTask} 24 */ 25 @SmallTest 26 @RunWith(AndroidJUnit4.class) 27 public class PackageInstallStateChangedTaskTest { 28 29 private LauncherModelHelper mModelHelper; 30 31 @Before setup()32 public void setup() throws Exception { 33 mModelHelper = new LauncherModelHelper(); 34 mModelHelper.initializeData("package_install_state_change_task_data"); 35 } 36 37 @After tearDown()38 public void tearDown() { 39 mModelHelper.destroy(); 40 } 41 newTask(String pkg, int progress)42 private PackageInstallStateChangedTask newTask(String pkg, int progress) { 43 int state = PackageInstallInfo.STATUS_INSTALLING; 44 PackageInstallInfo installInfo = new PackageInstallInfo(pkg, state, progress, 45 android.os.Process.myUserHandle()); 46 return new PackageInstallStateChangedTask(installInfo); 47 } 48 49 @Test testSessionUpdate_ignore_installed()50 public void testSessionUpdate_ignore_installed() throws Exception { 51 mModelHelper.executeTaskForTest(newTask("app1", 30)); 52 53 // No shortcuts were updated 54 verifyProgressUpdate(0); 55 } 56 57 @Test testSessionUpdate_shortcuts_updated()58 public void testSessionUpdate_shortcuts_updated() throws Exception { 59 mModelHelper.executeTaskForTest(newTask("app3", 30)); 60 61 verifyProgressUpdate(30, 5, 6, 7); 62 } 63 64 @Test testSessionUpdate_widgets_updated()65 public void testSessionUpdate_widgets_updated() throws Exception { 66 mModelHelper.executeTaskForTest(newTask("app4", 30)); 67 68 verifyProgressUpdate(30, 8, 9); 69 } 70 verifyProgressUpdate(int progress, Integer... idsUpdated)71 private void verifyProgressUpdate(int progress, Integer... idsUpdated) { 72 HashSet<Integer> updates = new HashSet<>(Arrays.asList(idsUpdated)); 73 for (ItemInfo info : mModelHelper.getBgDataModel().itemsIdMap) { 74 if (info instanceof WorkspaceItemInfo) { 75 assertEquals(updates.contains(info.id) ? progress: 100, 76 ((WorkspaceItemInfo) info).getProgressLevel()); 77 } else { 78 assertEquals(updates.contains(info.id) ? progress: -1, 79 ((LauncherAppWidgetInfo) info).installProgress); 80 } 81 } 82 } 83 } 84