From 9e52a665a61299e532bbdb6704ef3e7d87b591c4 Mon Sep 17 00:00:00 2001 From: Alex Chau Date: Fri, 29 Nov 2024 12:41:04 +0000 Subject: [PATCH] Mock UserCache in TaskViewItemInfoTest to avoid NPE - Also added test for runtimeStatusFlags on regular/private apps Fix: 381295678 Test: TaskViewItemInfoTest Flag: EXEMPT BUG_FIX Change-Id: I928a8f128957885d33ac8001493eef0fd4b23ec7 --- .../model/data/TaskViewItemInfoTest.kt | 48 +++++++++++++++---- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/quickstep/tests/multivalentTests/src/com/android/launcher3/model/data/TaskViewItemInfoTest.kt b/quickstep/tests/multivalentTests/src/com/android/launcher3/model/data/TaskViewItemInfoTest.kt index 0103e7ee4a..5cee43489a 100644 --- a/quickstep/tests/multivalentTests/src/com/android/launcher3/model/data/TaskViewItemInfoTest.kt +++ b/quickstep/tests/multivalentTests/src/com/android/launcher3/model/data/TaskViewItemInfoTest.kt @@ -17,14 +17,17 @@ package com.android.launcher3.model.data import android.content.ComponentName -import android.content.Context import android.content.Intent import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import com.android.launcher3.Flags.enableRefactorTaskThumbnail +import com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_NOT_PINNABLE import com.android.launcher3.model.data.TaskViewItemInfo.Companion.createTaskViewAtom +import com.android.launcher3.pm.UserCache +import com.android.launcher3.util.MainThreadInitializedObject.SandboxContext import com.android.launcher3.util.SplitConfigurationOptions import com.android.launcher3.util.TransformingTouchDelegate +import com.android.launcher3.util.UserIconInfo import com.android.quickstep.TaskOverlayFactory import com.android.quickstep.TaskOverlayFactory.TaskOverlay import com.android.quickstep.recents.di.RecentsDependencies @@ -48,10 +51,12 @@ import org.mockito.kotlin.whenever /** Test for [TaskViewItemInfo] */ @RunWith(AndroidJUnit4::class) class TaskViewItemInfoTest { - private val context = mock() + private val context = SandboxContext(InstrumentationRegistry.getInstrumentation().targetContext) private val taskView = mock() private val recentsView = mock>() private val overlayFactory = mock() + private val userCache = mock() + private val userInfo = mock() @Before fun setUp() { @@ -59,7 +64,10 @@ class TaskViewItemInfoTest { whenever(taskView.context).thenReturn(context) whenever(taskView.recentsView).thenReturn(recentsView) whenever(recentsView.indexOfChild(taskView)).thenReturn(TASK_VIEW_INDEX) - RecentsDependencies.initialize(InstrumentationRegistry.getInstrumentation().targetContext) + whenever(userInfo.isPrivate).thenReturn(false) + whenever(userCache.getUserInfo(any())).thenReturn(userInfo) + context.putObject(UserCache.INSTANCE, userCache) + RecentsDependencies.initialize(context) } @Test @@ -69,9 +77,8 @@ class TaskViewItemInfoTest { whenever(taskView.taskContainers).thenReturn(taskContainers) val taskViewItemInfo = TaskViewItemInfo(taskContainers[0]) - val taskViewAtom = taskViewItemInfo.taskViewAtom - assertThat(taskViewAtom) + assertThat(taskViewItemInfo.taskViewAtom) .isEqualTo( createTaskViewAtom( type = 0, @@ -80,6 +87,7 @@ class TaskViewItemInfoTest { cardinality = 1, ) ) + assertThat(taskViewItemInfo.runtimeStatusFlags and FLAG_NOT_PINNABLE).isEqualTo(0) } @Test @@ -90,9 +98,8 @@ class TaskViewItemInfoTest { whenever(taskView.taskContainers).thenReturn(taskContainers) val taskViewItemInfo = TaskViewItemInfo(taskContainers[0]) - val taskViewAtom = taskViewItemInfo.taskViewAtom - assertThat(taskViewAtom) + assertThat(taskViewItemInfo.taskViewAtom) .isEqualTo( createTaskViewAtom( type = 1, @@ -101,6 +108,7 @@ class TaskViewItemInfoTest { cardinality = 2, ) ) + assertThat(taskViewItemInfo.runtimeStatusFlags and FLAG_NOT_PINNABLE).isEqualTo(0) } @Test @@ -115,9 +123,8 @@ class TaskViewItemInfoTest { whenever(taskView.taskContainers).thenReturn(taskContainers) val taskViewItemInfo = TaskViewItemInfo(taskContainers[0]) - val taskViewAtom = taskViewItemInfo.taskViewAtom - assertThat(taskViewAtom) + assertThat(taskViewItemInfo.taskViewAtom) .isEqualTo( createTaskViewAtom( type = 2, @@ -126,6 +133,29 @@ class TaskViewItemInfoTest { cardinality = 3, ) ) + assertThat(taskViewItemInfo.runtimeStatusFlags and FLAG_NOT_PINNABLE).isEqualTo(0) + } + + @Test + fun privateTask() { + val taskContainers = listOf(createTaskContainer(createTask(1))) + whenever(taskView.type).thenReturn(TaskViewType.SINGLE) + whenever(taskView.taskContainers).thenReturn(taskContainers) + whenever(userInfo.isPrivate).thenReturn(true) + + val taskViewItemInfo = TaskViewItemInfo(taskContainers[0]) + + assertThat(taskViewItemInfo.taskViewAtom) + .isEqualTo( + createTaskViewAtom( + type = 0, + index = TASK_VIEW_INDEX, + componentName = "${PACKAGE}/${CLASS}", + cardinality = 1, + ) + ) + assertThat(taskViewItemInfo.runtimeStatusFlags and FLAG_NOT_PINNABLE) + .isEqualTo(FLAG_NOT_PINNABLE) } private fun createTask(id: Int) =