From d9ed5f301b559873ac9b37c2c4f4245ceb82f380 Mon Sep 17 00:00:00 2001 From: Priyanka Advani Date: Fri, 22 Mar 2024 19:10:16 +0000 Subject: [PATCH] Revert "add more unit tests for WorkspaceItemProcessor" This reverts commit 13b5177a8da7bc4bf1cb0d43a7a5d4961a28719d. Reason for revert: Droid-monitor created revert due to test breakages in b/330906931. Change-Id: If1afc3fb0e655ce3b1d10018723bc013ae03673e --- .../model/WorkspaceItemProcessorTest.kt | 284 +++--------------- 1 file changed, 44 insertions(+), 240 deletions(-) diff --git a/tests/src/com/android/launcher3/model/WorkspaceItemProcessorTest.kt b/tests/src/com/android/launcher3/model/WorkspaceItemProcessorTest.kt index f333494c33..30957fc8b4 100644 --- a/tests/src/com/android/launcher3/model/WorkspaceItemProcessorTest.kt +++ b/tests/src/com/android/launcher3/model/WorkspaceItemProcessorTest.kt @@ -25,30 +25,22 @@ import android.content.pm.PackageInstaller import android.content.pm.ShortcutInfo import android.os.UserHandle import android.util.LongSparseArray -import com.android.dx.mockito.inline.extended.ExtendedMockito import com.android.launcher3.LauncherAppState import com.android.launcher3.LauncherSettings.Favorites -import com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION -import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_FOLDER -import com.android.launcher3.Utilities import com.android.launcher3.Utilities.EMPTY_PERSON_ARRAY -import com.android.launcher3.backuprestore.LauncherRestoreEventLogger import com.android.launcher3.backuprestore.LauncherRestoreEventLogger.RestoreError.Companion.MISSING_INFO import com.android.launcher3.backuprestore.LauncherRestoreEventLogger.RestoreError.Companion.PROFILE_DELETED import com.android.launcher3.model.data.FolderInfo import com.android.launcher3.model.data.IconRequestInfo import com.android.launcher3.model.data.ItemInfo -import com.android.launcher3.model.data.LauncherAppWidgetInfo.FLAG_DIRECT_CONFIG -import com.android.launcher3.model.data.LauncherAppWidgetInfo.FLAG_UI_NOT_READY import com.android.launcher3.model.data.WorkspaceItemInfo import com.android.launcher3.shortcuts.ShortcutKey import com.android.launcher3.util.ComponentKey import com.android.launcher3.util.PackageManagerHelper import com.android.launcher3.util.PackageUserKey -import com.android.launcher3.widget.LauncherAppWidgetProviderInfo import com.android.launcher3.widget.WidgetInflater import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertWithMessage @@ -79,30 +71,28 @@ class WorkspaceItemProcessorTest { @Mock private lateinit var mockUserManagerState: UserManagerState @Mock private lateinit var mockWidgetInflater: WidgetInflater - private var mUserHandle: UserHandle = UserHandle(0) - private var mIconRequestInfos: MutableList> = mutableListOf() - private var mComponentName: ComponentName = ComponentName("package", "class") - private var mUnlockedUsersArray: LongSparseArray = LongSparseArray() - private var mKeyToPinnedShortcutsMap: MutableMap = mutableMapOf() - private var mInstallingPkgs: HashMap = hashMapOf() - private var mAllDeepShortcuts: MutableList = mutableListOf() - private var mWidgetProvidersMap: MutableMap = - mutableMapOf() - private var mPendingPackages: MutableSet = mutableSetOf() + private lateinit var userHandle: UserHandle + private lateinit var iconRequestInfos: MutableList> + private lateinit var componentName: ComponentName + private lateinit var unlockedUsersArray: LongSparseArray + private lateinit var keyToPinnedShortcutsMap: MutableMap + private lateinit var installingPkgs: HashMap + private lateinit var allDeepShortcuts: MutableList private lateinit var itemProcessorUnderTest: WorkspaceItemProcessor @Before fun setup() { - mUserHandle = UserHandle(0) + userHandle = UserHandle(0) mockIconRequestInfo = mock>() + iconRequestInfos = mutableListOf(mockIconRequestInfo) mockWorkspaceInfo = mock() mockBgDataModel = mock() - mComponentName = ComponentName("package", "class") - mUnlockedUsersArray = LongSparseArray(1).apply { put(101, true) } + componentName = ComponentName("package", "class") + unlockedUsersArray = LongSparseArray(1).apply { put(101, true) } mockIntent = mock().apply { - whenever(component).thenReturn(mComponentName) + whenever(component).thenReturn(componentName) whenever(`package`).thenReturn("pkg") whenever(getStringExtra(ShortcutKey.EXTRA_SHORTCUT_ID)).thenReturn("") } @@ -119,17 +109,17 @@ class WorkspaceItemProcessorTest { } mockPmHelper = mock().apply { - whenever(getAppLaunchIntent(mComponentName.packageName, mUserHandle)) + whenever(getAppLaunchIntent(componentName.packageName, userHandle)) .thenReturn(mockIntent) } mockLauncherApps = mock().apply { - whenever(isPackageEnabled("package", mUserHandle)).thenReturn(true) - whenever(isActivityEnabled(mComponentName, mUserHandle)).thenReturn(true) + whenever(isPackageEnabled("package", userHandle)).thenReturn(true) + whenever(isActivityEnabled(componentName, userHandle)).thenReturn(true) } mockCursor = mock(LoaderCursor::class.java, RETURNS_DEEP_STUBS).apply { - user = mUserHandle + user = userHandle itemType = ITEM_TYPE_APPLICATION id = 1 restoreFlag = 1 @@ -144,12 +134,9 @@ class WorkspaceItemProcessorTest { } mockUserManagerState = mock() mockWidgetInflater = mock() - mKeyToPinnedShortcutsMap = mutableMapOf() - mInstallingPkgs = hashMapOf() - mAllDeepShortcuts = mutableListOf() - mWidgetProvidersMap = mutableMapOf() - mIconRequestInfos = mutableListOf() - mPendingPackages = mutableSetOf() + keyToPinnedShortcutsMap = mutableMapOf() + installingPkgs = hashMapOf() + allDeepShortcuts = mutableListOf() } /** @@ -162,18 +149,18 @@ class WorkspaceItemProcessorTest { memoryLogger: LoaderMemoryLogger? = null, userManagerState: UserManagerState = mockUserManagerState, launcherApps: LauncherApps = mockLauncherApps, - shortcutKeyToPinnedShortcuts: Map = mKeyToPinnedShortcutsMap, + shortcutKeyToPinnedShortcuts: Map = keyToPinnedShortcutsMap, app: LauncherAppState = mockAppState, bgDataModel: BgDataModel = mockBgDataModel, - widgetProvidersMap: MutableMap = mWidgetProvidersMap, + widgetProvidersMap: MutableMap = mutableMapOf(), widgetInflater: WidgetInflater = mockWidgetInflater, pmHelper: PackageManagerHelper = mockPmHelper, - iconRequestInfos: MutableList> = mIconRequestInfos, + iconRequestInfos: MutableList> = mutableListOf(), isSdCardReady: Boolean = false, - pendingPackages: MutableSet = mPendingPackages, - unlockedUsers: LongSparseArray = mUnlockedUsersArray, - installingPkgs: HashMap = mInstallingPkgs, - allDeepShortcuts: MutableList = mAllDeepShortcuts + pendingPackages: MutableSet = mutableSetOf(), + unlockedUsers: LongSparseArray = unlockedUsersArray, + installingPkgs: HashMap = hashMapOf(), + allDeepShortcuts: MutableList = mutableListOf() ) = WorkspaceItemProcessor( c = cursor, @@ -240,8 +227,8 @@ class WorkspaceItemProcessorTest { fun `When app has empty String target package then mark deleted`() { // Given - mComponentName = ComponentName("", "") - whenever(mockIntent.component).thenReturn(mComponentName) + componentName = ComponentName("", "") + whenever(mockIntent.component).thenReturn(componentName) whenever(mockCursor.parseIntent()).thenReturn(mockIntent) itemProcessorUnderTest = createWorkspaceItemProcessorUnderTest() @@ -268,7 +255,7 @@ class WorkspaceItemProcessorTest { .isEqualTo(0) // currently gets marked restored twice, although markRestore() has check for restoreFlag verify(mockCursor, times(2)).markRestored() - assertThat(mIconRequestInfos).containsExactly(mockIconRequestInfo) + assertThat(iconRequestInfos).containsExactly(mockIconRequestInfo) verify(mockCursor).checkAndAddItem(mockWorkspaceInfo, mockBgDataModel, null) } @@ -278,12 +265,12 @@ class WorkspaceItemProcessorTest { // Given mockLauncherApps = mock().apply { - whenever(isPackageEnabled("package", mUserHandle)).thenReturn(true) - whenever(isActivityEnabled(mComponentName, mUserHandle)).thenReturn(false) + whenever(isPackageEnabled("package", userHandle)).thenReturn(true) + whenever(isActivityEnabled(componentName, userHandle)).thenReturn(false) } mockPmHelper = mock().apply { - whenever(getAppLaunchIntent(mComponentName.packageName, mUserHandle)) + whenever(getAppLaunchIntent(componentName.packageName, userHandle)) .thenReturn(mockIntent) } itemProcessorUnderTest = createWorkspaceItemProcessorUnderTest() @@ -296,7 +283,7 @@ class WorkspaceItemProcessorTest { .that(mockCursor.restoreFlag) .isEqualTo(0) verify(mockCursor.updater().put(Favorites.INTENT, mockIntent.toUri(0))).commit() - assertThat(mIconRequestInfos).containsExactly(mockIconRequestInfo) + assertThat(iconRequestInfos).containsExactly(mockIconRequestInfo) verify(mockCursor).checkAndAddItem(mockWorkspaceInfo, mockBgDataModel, null) } @@ -306,13 +293,12 @@ class WorkspaceItemProcessorTest { // Given mockLauncherApps = mock().apply { - whenever(isPackageEnabled("package", mUserHandle)).thenReturn(true) - whenever(isActivityEnabled(mComponentName, mUserHandle)).thenReturn(false) + whenever(isPackageEnabled("package", userHandle)).thenReturn(true) + whenever(isActivityEnabled(componentName, userHandle)).thenReturn(false) } mockPmHelper = mock().apply { - whenever(getAppLaunchIntent(mComponentName.packageName, mUserHandle)) - .thenReturn(null) + whenever(getAppLaunchIntent(componentName.packageName, userHandle)).thenReturn(null) } itemProcessorUnderTest = createWorkspaceItemProcessorUnderTest() @@ -351,9 +337,10 @@ class WorkspaceItemProcessorTest { whenever(persons).thenReturn(EMPTY_PERSON_ARRAY) } val shortcutKey = ShortcutKey.fromIntent(mockIntent, mockCursor.user) - mKeyToPinnedShortcutsMap[shortcutKey] = expectedShortcutInfo + keyToPinnedShortcutsMap[shortcutKey] = expectedShortcutInfo + iconRequestInfos = mutableListOf() itemProcessorUnderTest = - createWorkspaceItemProcessorUnderTest(allDeepShortcuts = mAllDeepShortcuts) + createWorkspaceItemProcessorUnderTest(allDeepShortcuts = allDeepShortcuts) // When itemProcessorUnderTest.processItem() @@ -362,8 +349,8 @@ class WorkspaceItemProcessorTest { assertWithMessage("item restoreFlag should be set to 0") .that(mockCursor.restoreFlag) .isEqualTo(0) - assertThat(mIconRequestInfos).isEmpty() - assertThat(mAllDeepShortcuts).containsExactly(expectedShortcutInfo) + assertThat(iconRequestInfos).isEmpty() + assertThat(allDeepShortcuts).containsExactly(expectedShortcutInfo) verify(mockCursor).markRestored() verify(mockCursor).checkAndAddItem(any(), any(), anyOrNull()) } @@ -373,6 +360,8 @@ class WorkspaceItemProcessorTest { // Given mockCursor.itemType = ITEM_TYPE_DEEP_SHORTCUT + iconRequestInfos = mutableListOf() + keyToPinnedShortcutsMap = hashMapOf() itemProcessorUnderTest = createWorkspaceItemProcessorUnderTest() // When @@ -382,7 +371,7 @@ class WorkspaceItemProcessorTest { assertWithMessage("item restoreFlag should be set to 0") .that(mockCursor.restoreFlag) .isEqualTo(0) - assertThat(mIconRequestInfos).isEmpty() + assertThat(iconRequestInfos).isEmpty() verify(mockCursor, times(0)).checkAndAddItem(any(), any(), anyOrNull()) verify(mockCursor) .markDeleted( @@ -438,189 +427,4 @@ class WorkspaceItemProcessorTest { assertThat(actualFolderInfo.options).isEqualTo(expectedFolderInfo.options) verify(mockCursor).checkAndAddItem(actualFolderInfo, mockBgDataModel, null) } - - @Test - fun `When valid Widget then checkAndAddItem`() { - - // Given - mockCursor = - mock().apply { - itemType = ITEM_TYPE_APPWIDGET - id = 1 - user = UserHandle(1) - restoreFlag = FLAG_DIRECT_CONFIG - container = CONTAINER_DESKTOP - whenever(isOnWorkspaceOrHotseat).thenCallRealMethod() - whenever(appWidgetProvider) - .thenReturn("com.google.android.testApp/com.android.testApp.testAppProvider") - whenever(appWidgetId).thenReturn(0) - whenever(spanX).thenReturn(2) - whenever(spanY).thenReturn(1) - whenever(options).thenReturn(0) - whenever(appWidgetSource).thenReturn(20) - whenever(applyCommonProperties(any())).thenCallRealMethod() - } - val mockProviderInfo = - mock().apply { - provider = mock() - whenever(user).thenReturn(UserHandle(1)) - } - val inflationResult = - WidgetInflater.InflationResult( - type = WidgetInflater.TYPE_REAL, - widgetInfo = mockProviderInfo - ) - mockWidgetInflater = - mock().apply { - whenever(inflateAppWidget(any())).thenReturn(inflationResult) - } - itemProcessorUnderTest = - createWorkspaceItemProcessorUnderTest(widgetProvidersMap = mWidgetProvidersMap) - - // When - itemProcessorUnderTest.processItem() - - // Then - assertThat( - mWidgetProvidersMap[ComponentKey(mockProviderInfo.provider, mockProviderInfo.user)] - ) - .isEqualTo(inflationResult.widgetInfo) - verify(mockCursor).checkAndAddItem(any(), any()) - } - - @Test - fun `When valid Pending Widget then checkAndAddItem`() { - - // Given - mockCursor = - mock().apply { - itemType = ITEM_TYPE_APPWIDGET - id = 1 - user = UserHandle(1) - restoreFlag = FLAG_UI_NOT_READY - container = CONTAINER_DESKTOP - whenever(isOnWorkspaceOrHotseat).thenCallRealMethod() - whenever(appWidgetProvider) - .thenReturn("com.google.android.testApp/com.android.testApp.testAppProvider") - whenever(appWidgetId).thenReturn(0) - whenever(spanX).thenReturn(2) - whenever(spanY).thenReturn(1) - whenever(options).thenReturn(0) - whenever(appWidgetSource).thenReturn(20) - whenever(applyCommonProperties(any())).thenCallRealMethod() - } - val mockProviderInfo = - mock().apply { - provider = mock() - whenever(user).thenReturn(UserHandle(1)) - } - val inflationResult = - WidgetInflater.InflationResult( - type = WidgetInflater.TYPE_PENDING, - widgetInfo = mockProviderInfo - ) - mockWidgetInflater = - mock().apply { - whenever(inflateAppWidget(any())).thenReturn(inflationResult) - } - itemProcessorUnderTest = - createWorkspaceItemProcessorUnderTest(widgetProvidersMap = mWidgetProvidersMap) - - // When - itemProcessorUnderTest.processItem() - - // Then - verify(mockCursor).checkAndAddItem(any(), any()) - } - - @Test - fun `When Unrestored Pending App Widget then mark deleted`() { - - // Given - val expectedProvider = "com.google.android.testApp/com.android.testApp.testAppProvider" - mockCursor = - mock().apply { - itemType = ITEM_TYPE_APPWIDGET - id = 1 - user = UserHandle(1) - restoreFlag = FLAG_UI_NOT_READY - container = CONTAINER_DESKTOP - whenever(isOnWorkspaceOrHotseat).thenCallRealMethod() - whenever(appWidgetProvider).thenReturn(expectedProvider) - whenever(appWidgetId).thenReturn(0) - whenever(spanX).thenReturn(2) - whenever(spanY).thenReturn(1) - whenever(options).thenReturn(0) - whenever(appWidgetSource).thenReturn(20) - whenever(applyCommonProperties(any())).thenCallRealMethod() - } - mInstallingPkgs = hashMapOf() - val inflationResult = - WidgetInflater.InflationResult(type = WidgetInflater.TYPE_PENDING, widgetInfo = null) - mockWidgetInflater = - mock().apply { - whenever(inflateAppWidget(any())).thenReturn(inflationResult) - } - itemProcessorUnderTest = - createWorkspaceItemProcessorUnderTest(widgetProvidersMap = mWidgetProvidersMap) - val expectedComponentName = ComponentName.unflattenFromString(expectedProvider) - - // When - itemProcessorUnderTest.processItem() - - // Then - verify(mockCursor) - .markDeleted( - "Unrestored widget removed: $expectedComponentName", - LauncherRestoreEventLogger.RestoreError.APP_NOT_INSTALLED - ) - } - - @Test - fun `When Archived Pending App Widget then checkAndAddItem`() { - - // Given - val expectedProvider = "com.google.android.testApp/com.android.testApp.testAppProvider" - val expectedComponentName = ComponentName.unflattenFromString(expectedProvider) - val expectedPackage = expectedComponentName!!.packageName - val mockitoSession = - ExtendedMockito.mockitoSession().mockStatic(Utilities::class.java).startMocking() - whenever(Utilities.enableSupportForArchiving()).thenReturn(true) - mockPmHelper = - mock().apply { - whenever(isAppArchived(expectedPackage)).thenReturn(true) - } - mockCursor = - mock().apply { - itemType = ITEM_TYPE_APPWIDGET - id = 1 - user = UserHandle(1) - restoreFlag = FLAG_UI_NOT_READY - container = CONTAINER_DESKTOP - whenever(isOnWorkspaceOrHotseat).thenCallRealMethod() - whenever(appWidgetProvider).thenReturn(expectedProvider) - whenever(appWidgetId).thenReturn(0) - whenever(spanX).thenReturn(2) - whenever(spanY).thenReturn(1) - whenever(options).thenReturn(0) - whenever(appWidgetSource).thenReturn(20) - whenever(applyCommonProperties(any())).thenCallRealMethod() - } - mInstallingPkgs = hashMapOf() - val inflationResult = - WidgetInflater.InflationResult(type = WidgetInflater.TYPE_PENDING, widgetInfo = null) - mockWidgetInflater = - mock().apply { - whenever(inflateAppWidget(any())).thenReturn(inflationResult) - } - itemProcessorUnderTest = - createWorkspaceItemProcessorUnderTest(widgetProvidersMap = mWidgetProvidersMap) - - // When - itemProcessorUnderTest.processItem() - - // Then - mockitoSession.finishMocking() - verify(mockCursor).checkAndAddItem(any(), any()) - } }