Making various model objects injectable

Bug: 361850561
Test: Updated tests
Flag: EXEMPT dagger
Change-Id: Ibb45b72c186e6aeeed7a37b0ae3f8083472019d7
This commit is contained in:
Sunny Goyal
2025-03-10 14:37:43 -07:00
parent 24645d732c
commit 42975c39db
39 changed files with 601 additions and 505 deletions
@@ -33,7 +33,6 @@ import org.mockito.Mockito.times
import org.mockito.kotlin.any
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.same
import org.mockito.kotlin.verify
import org.mockito.kotlin.verifyNoMoreInteractions
import org.mockito.kotlin.whenever
@@ -142,10 +141,9 @@ class AddWorkspaceItemsTaskTest : AbstractWorkspaceModelTest() {
/** Sets up the item space data that will be returned from WorkspaceItemSpaceFinder. */
private fun givenNewItemSpaces(vararg newItemSpaces: NewItemSpace) {
val spaceStack = newItemSpaces.toMutableList()
whenever(
mWorkspaceItemSpaceFinder.findSpaceForItem(any(), any(), any(), any(), any(), any())
)
.then { spaceStack.removeFirst().toIntArray() }
whenever(mWorkspaceItemSpaceFinder.findSpaceForItem(any(), any(), any(), any())).then {
spaceStack.removeFirst().toIntArray()
}
}
/**
@@ -155,8 +153,6 @@ class AddWorkspaceItemsTaskTest : AbstractWorkspaceModelTest() {
private fun verifyItemSpaceFinderCall(nonEmptyScreenIds: List<Int>, numberOfExpectedCall: Int) {
verify(mWorkspaceItemSpaceFinder, times(numberOfExpectedCall))
.findSpaceForItem(
eq(mAppState),
same(mModelHelper.bgDataModel),
eq(IntArray.wrap(*nonEmptyScreenIds.toIntArray())),
eq(IntArray()),
eq(1),
@@ -55,7 +55,6 @@ import static junit.framework.Assert.assertNull;
import static junit.framework.Assert.assertTrue;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.database.MatrixCursor;
import android.graphics.Bitmap;
@@ -76,6 +75,7 @@ import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.util.Executors;
import com.android.launcher3.util.LauncherModelHelper;
import com.android.launcher3.util.LauncherModelHelper.SandboxModelContext;
import com.android.launcher3.util.PackageManagerHelper;
import org.junit.After;
@@ -96,11 +96,10 @@ public class LoaderCursorTest {
private LauncherModelHelper mModelHelper;
private LauncherAppState mApp;
private PackageManagerHelper mPmHelper;
private MatrixCursor mCursor;
private InvariantDeviceProfile mIDP;
private Context mContext;
private SandboxModelContext mContext;
private LoaderCursor mLoaderCursor;
@@ -116,7 +115,6 @@ public class LoaderCursorTest {
mContext = mModelHelper.sandboxContext;
mIDP = InvariantDeviceProfile.INSTANCE.get(mContext);
mApp = LauncherAppState.getInstance(mContext);
mPmHelper = PackageManagerHelper.INSTANCE.get(mContext);
mCursor = new MatrixCursor(new String[] {
ICON, TITLE, _ID, CONTAINER, ITEM_TYPE,
@@ -126,7 +124,8 @@ public class LoaderCursorTest {
});
UserManagerState ums = new UserManagerState();
mLoaderCursor = new LoaderCursor(mCursor, mApp, ums, mPmHelper, null);
mLoaderCursor = mContext.getAppComponent().getLoaderCursorFactory()
.createLoaderCursor(mCursor, ums, null);
ums.allUsers.put(0, Process.myUserHandle());
}
@@ -27,8 +27,9 @@ import android.platform.test.flag.junit.SetFlagsRule
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.launcher3.AppFilter
import com.android.launcher3.Flags.FLAG_ENABLE_PRIVATE_SPACE
import com.android.launcher3.LauncherAppState
import com.android.launcher3.LauncherSettings
import com.android.launcher3.dagger.LauncherAppComponent
import com.android.launcher3.dagger.LauncherAppSingleton
import com.android.launcher3.icons.IconCache
import com.android.launcher3.model.PackageUpdatedTask.OP_ADD
import com.android.launcher3.model.PackageUpdatedTask.OP_REMOVE
@@ -39,17 +40,20 @@ import com.android.launcher3.model.PackageUpdatedTask.OP_UPDATE
import com.android.launcher3.model.PackageUpdatedTask.OP_USER_AVAILABILITY_CHANGE
import com.android.launcher3.model.data.AppInfo
import com.android.launcher3.model.data.WorkspaceItemInfo
import com.android.launcher3.util.AllModulesForTest
import com.android.launcher3.util.Executors
import com.android.launcher3.util.LauncherModelHelper
import com.android.launcher3.util.LauncherModelHelper.SandboxModelContext
import com.android.launcher3.util.TestUtil
import com.google.common.truth.Truth.assertThat
import dagger.BindsInstance
import dagger.Component
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.any
import org.mockito.kotlin.doAnswer
import org.mockito.kotlin.mock
import org.mockito.kotlin.spy
import org.mockito.kotlin.verify
@@ -61,10 +65,8 @@ class PackageUpdatedTaskTest {
@get:Rule val setFlagsRule = SetFlagsRule()
private val mUser = myUserHandle()
private val mDataModel: BgDataModel = BgDataModel()
private val mLauncherModelHelper = LauncherModelHelper()
private val mContext: SandboxModelContext = spy(mLauncherModelHelper.sandboxContext)
private val mAppState: LauncherAppState = spy(LauncherAppState.getInstance(mContext))
private val mContext = mLauncherModelHelper.sandboxContext
private val expectedPackage = "Test.Package"
private val expectedComponent = ComponentName(expectedPackage, "TestClass")
@@ -72,22 +74,33 @@ class PackageUpdatedTaskTest {
private val expectedWorkspaceItem = spy(WorkspaceItemInfo())
private val mockIconCache: IconCache = mock()
private val mockTaskController: ModelTaskController = mock<ModelTaskController>()
private val mockAppFilter: AppFilter = mock<AppFilter>()
private lateinit var mAllAppsList: AllAppsList
private val mockApplicationInfo: ApplicationInfo = mock<ApplicationInfo>()
private val mockActivityInfo: ActivityInfo = mock<ActivityInfo>()
private lateinit var mAllAppsList: AllAppsList
private lateinit var mDataModel: BgDataModel
private lateinit var mockTaskController: ModelTaskController
@Before
fun setup() {
mAllAppsList = spy(AllAppsList(mockIconCache, mockAppFilter))
mLauncherModelHelper.sandboxContext.spyService(LauncherApps::class.java).apply {
mContext.initDaggerComponent(
DaggerPackageUpdatedTaskTest_TestComponent.builder()
.bindAllAppsList(mAllAppsList)
.bindAppFilter(mockAppFilter)
.bindIconCache(mockIconCache)
)
mContext.spyService(LauncherApps::class.java).apply {
whenever(getActivityList(expectedPackage, mUser))
.thenReturn(listOf(expectedActivityInfo))
}
whenever(mAppState.iconCache).thenReturn(mockIconCache)
whenever(mockTaskController.app).thenReturn(mAppState)
mockTaskController = spy((mContext.appComponent as TestComponent).getTaskController())
mDataModel = (mContext.appComponent as TestComponent).getDataModel()
whenever(mockAppFilter.shouldShowApp(expectedComponent)).thenReturn(true)
mockApplicationInfo.apply {
uid = 1
@@ -122,7 +135,6 @@ class PackageUpdatedTaskTest {
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
}
mLauncherModelHelper.loadModelSync()
// Then
verify(mockIconCache).updateIconsForPkg(expectedPackage, mUser)
verify(mAllAppsList).addPackage(mContext, expectedPackage, mUser)
@@ -141,7 +153,6 @@ class PackageUpdatedTaskTest {
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
}
mLauncherModelHelper.loadModelSync()
// Then
verify(mockIconCache).updateIconsForPkg(expectedPackage, mUser)
verify(mAllAppsList).updatePackage(mContext, expectedPackage, mUser)
@@ -159,7 +170,6 @@ class PackageUpdatedTaskTest {
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
}
mLauncherModelHelper.loadModelSync()
// Then
verify(mockIconCache).removeIconsForPkg(expectedPackage, mUser)
verify(mAllAppsList).removePackage(expectedPackage, mUser)
@@ -176,7 +186,6 @@ class PackageUpdatedTaskTest {
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
}
mLauncherModelHelper.loadModelSync()
// Then
verify(mAllAppsList).removePackage(expectedPackage, mUser)
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWorkspaceItem))
@@ -190,10 +199,11 @@ class PackageUpdatedTaskTest {
// When
mDataModel.addItem(mContext, expectedWorkspaceItem, true)
mAllAppsList.add(AppInfo(mContext, expectedActivityInfo, mUser), expectedActivityInfo)
mAllAppsList.getAndResetChangeFlag()
doAnswer {}.whenever(mockTaskController).bindApplicationsIfNeeded()
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
}
mLauncherModelHelper.loadModelSync()
// Then
verify(mAllAppsList).updateDisabledFlags(any(), any())
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWorkspaceItem))
@@ -206,10 +216,11 @@ class PackageUpdatedTaskTest {
val taskUnderTest = PackageUpdatedTask(OP_UNSUSPEND, mUser, expectedPackage)
// When
mDataModel.addItem(mContext, expectedWorkspaceItem, true)
mAllAppsList.getAndResetChangeFlag()
doAnswer {}.whenever(mockTaskController).bindApplicationsIfNeeded()
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
}
mLauncherModelHelper.loadModelSync()
// Then
verify(mAllAppsList).updateDisabledFlags(any(), any())
verify(mockTaskController).bindUpdatedWorkspaceItems(emptyList())
@@ -226,10 +237,29 @@ class PackageUpdatedTaskTest {
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
}
mLauncherModelHelper.loadModelSync()
// Then
verify(mAllAppsList).updateDisabledFlags(any(), any())
verify(mockTaskController).bindUpdatedWorkspaceItems(emptyList())
assertThat(mAllAppsList.data).isEmpty()
}
@LauncherAppSingleton
@Component(modules = [AllModulesForTest::class])
interface TestComponent : LauncherAppComponent {
fun getDataModel(): BgDataModel
fun getTaskController(): ModelTaskController
@Component.Builder
interface Builder : LauncherAppComponent.Builder {
@BindsInstance fun bindAppFilter(appFilter: AppFilter): Builder
@BindsInstance fun bindIconCache(iconCache: IconCache): Builder
@BindsInstance fun bindAllAppsList(list: AllAppsList): Builder
override fun build(): TestComponent
}
}
}
@@ -30,7 +30,6 @@ import android.platform.test.flag.junit.SetFlagsRule
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.launcher3.Flags
import com.android.launcher3.LauncherAppState
import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT
import com.android.launcher3.icons.BitmapInfo
import com.android.launcher3.icons.CacheableShortcutInfo
@@ -73,7 +72,6 @@ class ShortcutsChangedTaskTest {
private val user: UserHandle = myUserHandle()
private val mockTaskController: ModelTaskController = mock()
private val mockAllApps: AllAppsList = mock()
private val mockAppState: LauncherAppState = mock()
private val mockIconCache: IconCache = mock()
private val expectedWai =
@@ -93,9 +91,8 @@ class ShortcutsChangedTaskTest {
modelHelper.loadModelSync()
context = modelHelper.sandboxContext
launcherApps = context.spyService(LauncherApps::class.java)
whenever(mockTaskController.app).thenReturn(mockAppState)
whenever(mockAppState.context).thenReturn(context)
whenever(mockAppState.iconCache).thenReturn(mockIconCache)
whenever(mockTaskController.context).thenReturn(context)
whenever(mockTaskController.iconCache).thenReturn(mockIconCache)
whenever(mockIconCache.getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>()))
.then { _ -> { expectedWai.bitmap = BitmapInfo.LOW_RES_INFO } }
shortcuts = emptyList()
@@ -132,8 +129,7 @@ class ShortcutsChangedTaskTest {
// When
shortcutsChangedTask.execute(mockTaskController, modelHelper.bgDataModel, mockAllApps)
// Then
verify(mockAppState.iconCache)
.getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
verify(mockIconCache).getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWai))
}
@@ -196,8 +192,7 @@ class ShortcutsChangedTaskTest {
// When
shortcutsChangedTask.execute(mockTaskController, modelHelper.bgDataModel, mockAllApps)
// Then
verify(mockAppState.iconCache)
.getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
verify(mockIconCache).getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWai))
}
@@ -256,8 +251,7 @@ class ShortcutsChangedTaskTest {
// When
shortcutsChangedTask.execute(mockTaskController, modelHelper.bgDataModel, mockAllApps)
// Then
verify(mockAppState.iconCache)
.getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
verify(mockIconCache).getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWai))
}
@@ -287,8 +281,7 @@ class ShortcutsChangedTaskTest {
// When
shortcutsChangedTask.execute(mockTaskController, modelHelper.bgDataModel, mockAllApps)
// Then
verify(mockAppState.iconCache)
.getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
verify(mockIconCache).getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWai))
}
@@ -25,9 +25,9 @@ import android.platform.test.rule.DeviceProduct
import android.platform.test.rule.LimitDevicesRule
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.launcher3.AppFilter
import com.android.launcher3.DeviceProfile
import com.android.launcher3.InvariantDeviceProfile
import com.android.launcher3.LauncherAppState
import com.android.launcher3.icons.IconCache
import com.android.launcher3.model.data.PackageItemInfo
import com.android.launcher3.pm.UserCache
@@ -62,7 +62,6 @@ class WidgetsModelTest {
@Rule @JvmField val mockitoRule: MockitoRule = MockitoJUnit.rule()
@Mock private lateinit var appWidgetManager: AppWidgetManager
@Mock private lateinit var app: LauncherAppState
@Mock private lateinit var iconCacheMock: IconCache
private lateinit var context: Context
@@ -93,9 +92,6 @@ class WidgetsModelTest {
whenever(iconCacheMock.getTitleNoCache(any<LauncherAppWidgetProviderInfo>()))
.thenReturn("title")
whenever(app.iconCache).thenReturn(iconCacheMock)
whenever(app.context).thenReturn(context)
whenever(app.invariantDeviceProfile).thenReturn(idp)
val widgetToCategoryEntry: Map.Entry<ComponentName, IntSet> =
WidgetSections.getWidgetsToCategory(context).entries.first()
@@ -128,7 +124,7 @@ class WidgetsModelTest {
val userCache = spy(UserCache.INSTANCE.get(context))
whenever(userCache.userProfiles).thenReturn(listOf(UserHandle.CURRENT))
underTest = WidgetsModel()
underTest = WidgetsModel(context, idp, iconCacheMock, AppFilter(context))
}
@Test
@@ -237,7 +233,7 @@ class WidgetsModelTest {
update = false
// Similarly, model could update its code independently while a client is
// iterating on the list.
underTest.update(app, /* packageUser= */ null)
underTest.update(/* packageUser= */ null)
}
}
@@ -253,7 +249,7 @@ class WidgetsModelTest {
private fun loadWidgets() {
val latch = CountDownLatch(1)
Executors.MODEL_EXECUTOR.execute {
underTest.update(app, /* packageUser= */ null)
underTest.update(/* packageUser= */ null)
latch.countDown()
}
if (!latch.await(LOAD_WIDGETS_TIMEOUT_SECONDS, TimeUnit.SECONDS)) {
@@ -31,7 +31,7 @@ import android.platform.test.flag.junit.SetFlagsRule
import android.util.LongSparseArray
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.launcher3.Flags
import com.android.launcher3.LauncherAppState
import com.android.launcher3.InvariantDeviceProfile
import com.android.launcher3.LauncherSettings.Favorites
import com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP
import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION
@@ -41,6 +41,7 @@ import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_FOLDER
import com.android.launcher3.Utilities.EMPTY_PERSON_ARRAY
import com.android.launcher3.backuprestore.LauncherRestoreEventLogger.RestoreError
import com.android.launcher3.icons.CacheableShortcutInfo
import com.android.launcher3.icons.IconCache
import com.android.launcher3.model.data.FolderInfo
import com.android.launcher3.model.data.IconRequestInfo
import com.android.launcher3.model.data.ItemInfo
@@ -66,12 +67,14 @@ import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Answers
import org.mockito.ArgumentCaptor
import org.mockito.Mock
import org.mockito.Mockito.RETURNS_DEEP_STUBS
import org.mockito.Mockito.mock
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.any
import org.mockito.kotlin.anyOrNull
import org.mockito.kotlin.doAnswer
@@ -88,12 +91,12 @@ class WorkspaceItemProcessorTest {
@Mock private lateinit var mockIconRequestInfo: IconRequestInfo<WorkspaceItemInfo>
@Mock private lateinit var mockWorkspaceInfo: WorkspaceItemInfo
@Mock private lateinit var mockBgDataModel: BgDataModel
@Mock private lateinit var mockAppState: LauncherAppState
@Mock private lateinit var mockPmHelper: PackageManagerHelper
@Mock private lateinit var mockCursor: LoaderCursor
@Mock(answer = Answers.RETURNS_DEEP_STUBS) private lateinit var mockCursor: LoaderCursor
@Mock private lateinit var mockUserCache: UserCache
@Mock private lateinit var mockUserManagerState: UserManagerState
@Mock private lateinit var mockWidgetInflater: WidgetInflater
@Mock private lateinit var mockIconCache: IconCache
lateinit var mModelHelper: LauncherModelHelper
lateinit var mContext: SandboxModelContext
@@ -114,6 +117,7 @@ class WorkspaceItemProcessorTest {
@Before
fun setup() {
MockitoAnnotations.initMocks(this)
mModelHelper = LauncherModelHelper()
mContext = mModelHelper.sandboxContext
mLauncherApps =
@@ -122,9 +126,6 @@ class WorkspaceItemProcessorTest {
doReturn(true).whenever(this).isActivityEnabled(mComponentName, mUserHandle)
}
mUserHandle = Process.myUserHandle()
mockIconRequestInfo = mock<IconRequestInfo<WorkspaceItemInfo>>()
mockWorkspaceInfo = mock<WorkspaceItemInfo>()
mockBgDataModel = mock<BgDataModel>()
mComponentName = ComponentName("package", "class")
mUnlockedUsersArray = LongSparseArray<Boolean>(1).apply { put(101, true) }
mIntent =
@@ -133,40 +134,26 @@ class WorkspaceItemProcessorTest {
`package` = "pkg"
putExtra(ShortcutKey.EXTRA_SHORTCUT_ID, "")
}
mockAppState =
mock<LauncherAppState>().apply {
whenever(context).thenReturn(mContext)
whenever(iconCache).thenReturn(mock())
whenever(iconCache.getShortcutIcon(any(), any(), any())).then {}
}
mockPmHelper =
mock<PackageManagerHelper>().apply {
whenever(getAppLaunchIntent(mComponentName.packageName, mUserHandle))
.thenReturn(mIntent)
}
mockCursor =
mock(LoaderCursor::class.java, RETURNS_DEEP_STUBS).apply {
user = mUserHandle
itemType = ITEM_TYPE_APPLICATION
id = 1
restoreFlag = 1
serialNumber = 101
whenever(parseIntent()).thenReturn(mIntent)
whenever(markRestored()).doAnswer { restoreFlag = 0 }
whenever(updater().put(Favorites.INTENT, mIntent.toUri(0)).commit()).thenReturn(1)
whenever(getAppShortcutInfo(any(), any(), any(), any()))
.thenReturn(mockWorkspaceInfo)
whenever(createIconRequestInfo(any(), any())).thenReturn(mockIconRequestInfo)
}
mockUserCache =
mock<UserCache>().apply {
val userIconInfo =
mock<UserIconInfo>().apply { whenever(isPrivate).thenReturn(false) }
whenever(getUserInfo(any())).thenReturn(userIconInfo)
}
whenever(mockIconCache.getShortcutIcon(any(), any(), any())).then {}
whenever(mockPmHelper.getAppLaunchIntent(mComponentName.packageName, mUserHandle))
.thenReturn(mIntent)
mockCursor.apply {
user = mUserHandle
itemType = ITEM_TYPE_APPLICATION
id = 1
restoreFlag = 1
serialNumber = 101
whenever(parseIntent()).thenReturn(mIntent)
whenever(markRestored()).doAnswer { restoreFlag = 0 }
whenever(updater().put(Favorites.INTENT, mIntent.toUri(0)).commit()).thenReturn(1)
whenever(getAppShortcutInfo(any(), any(), any(), any())).thenReturn(mockWorkspaceInfo)
whenever(createIconRequestInfo(any(), any())).thenReturn(mockIconRequestInfo)
}
mockUserCache.apply {
val userIconInfo = mock<UserIconInfo>().apply { whenever(isPrivate).thenReturn(false) }
whenever(getUserInfo(any())).thenReturn(userIconInfo)
}
mockUserManagerState = mock<UserManagerState>()
mockWidgetInflater = mock<WidgetInflater>()
mKeyToPinnedShortcutsMap = mutableMapOf()
mInstallingPkgs = hashMapOf()
mAllDeepShortcuts = mutableListOf()
@@ -187,7 +174,6 @@ class WorkspaceItemProcessorTest {
userManagerState: UserManagerState = mockUserManagerState,
launcherApps: LauncherApps = mLauncherApps,
shortcutKeyToPinnedShortcuts: Map<ShortcutKey, ShortcutInfo> = mKeyToPinnedShortcutsMap,
app: LauncherAppState = mockAppState,
bgDataModel: BgDataModel = mockBgDataModel,
widgetProvidersMap: MutableMap<ComponentKey, AppWidgetProviderInfo?> = mWidgetProvidersMap,
widgetInflater: WidgetInflater = mockWidgetInflater,
@@ -205,7 +191,7 @@ class WorkspaceItemProcessorTest {
userCache = userCache,
userManagerState = userManagerState,
launcherApps = launcherApps,
app = app,
context = mContext,
bgDataModel = bgDataModel,
widgetProvidersMap = widgetProvidersMap,
widgetInflater = widgetInflater,
@@ -217,6 +203,9 @@ class WorkspaceItemProcessorTest {
shortcutKeyToPinnedShortcuts = shortcutKeyToPinnedShortcuts,
installingPkgs = installingPkgs,
allDeepShortcuts = allDeepShortcuts,
iconCache = mockIconCache,
idp = InvariantDeviceProfile.INSTANCE.get(mContext),
isSafeMode = false,
)
@Test
@@ -29,8 +29,6 @@ import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class WorkspaceItemSpaceFinderTest : AbstractWorkspaceModelTest() {
private val mItemSpaceFinder = WorkspaceItemSpaceFinder()
@Before
override fun setup() {
super.setup()
@@ -42,15 +40,12 @@ class WorkspaceItemSpaceFinderTest : AbstractWorkspaceModelTest() {
}
private fun findSpace(spanX: Int, spanY: Int): NewItemSpace =
mItemSpaceFinder
.findSpaceForItem(
mAppState,
WorkspaceItemSpaceFinder(
mModelHelper.bgDataModel,
mExistingScreens,
mNewScreens,
spanX,
spanY,
mAppState.invariantDeviceProfile,
mModelHelper.model,
)
.findSpaceForItem(mExistingScreens, mNewScreens, spanX, spanY)
.let { NewItemSpace.fromIntArray(it) }
private fun assertRegionVacant(newItemSpace: NewItemSpace, spanX: Int, spanY: Int) {