Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 240956e7 authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Use shared method for updating the runtime status flags for an item info" into main

parents 0d2cc9e8 21cf4439
Loading
Loading
Loading
Loading
+4 −15
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.launcher3.model;

import static com.android.launcher3.model.data.AppInfo.COMPONENT_KEY_COMPARATOR;
import static com.android.launcher3.model.data.AppInfo.EMPTY_ARRAY;
import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_ARCHIVED;

import android.content.ComponentName;
import android.content.Context;
@@ -33,14 +32,13 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.launcher3.AppFilter;
import com.android.launcher3.Flags;
import com.android.launcher3.Utilities;
import com.android.launcher3.compat.AlphabeticIndexCompat;
import com.android.launcher3.icons.IconCache;
import com.android.launcher3.model.BgDataModel.Callbacks;
import com.android.launcher3.model.data.AppInfo;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.pm.PackageInstallInfo;
import com.android.launcher3.pm.UserCache;
import com.android.launcher3.util.FlagOp;
import com.android.launcher3.util.PackageManagerHelper;
import com.android.launcher3.util.SafeCloseable;
@@ -300,6 +298,7 @@ public class AllAppsList {
     */
    public List<LauncherActivityInfo> updatePackage(
            Context context, String packageName, UserHandle user) {
        final UserCache userCache = UserCache.getInstance(context);
        final List<LauncherActivityInfo> matches = context.getSystemService(LauncherApps.class)
                .getActivityList(packageName, user);
        if (matches.size() > 0) {
@@ -327,19 +326,9 @@ public class AllAppsList {

                    mIconCache.getTitleAndIcon(applicationInfo, info, false /* useLowResIcon */);
                    applicationInfo.sectionName = mIndex.computeSectionName(applicationInfo.title);
                    applicationInfo.setProgressLevel(
                            PackageManagerHelper.getLoadingProgress(info),
                            PackageInstallInfo.STATUS_INSTALLED_DOWNLOADING);
                    applicationInfo.intent = launchIntent;
                    if (Flags.enableSupportForArchiving()) {
                        // In case an app is archived, the respective item flag corresponding to
                        // archiving should also be applied during package updates
                        if (info.getActivityInfo().isArchived) {
                            applicationInfo.runtimeStatusFlags |= FLAG_ARCHIVED;
                        } else {
                            applicationInfo.runtimeStatusFlags &= (~FLAG_ARCHIVED);
                        }
                    }
                    AppInfo.updateRuntimeFlagsForActivityTarget(applicationInfo, info,
                            userCache.getUserInfo(user));
                    mDataChanged = true;
                }
            }
+1 −1
Original line number Diff line number Diff line
@@ -443,7 +443,7 @@ public class LoaderTask implements Runnable {
                List<IconRequestInfo<WorkspaceItemInfo>> iconRequestInfos = new ArrayList<>();

                WorkspaceItemProcessor itemProcessor = new WorkspaceItemProcessor(c, memoryLogger,
                        mUserManagerState, mLauncherApps, mPendingPackages,
                        mUserCache, mUserManagerState, mLauncherApps, mPendingPackages,
                        mShortcutKeyToPinnedShortcuts, mApp, mBgDataModel,
                        mWidgetProvidersMap, installingPkgs, isSdCardReady,
                        widgetInflater, pmHelper, iconRequestInfos, unlockedUsers,
+5 −4
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import com.android.launcher3.Utilities
import com.android.launcher3.backuprestore.LauncherRestoreEventLogger.RestoreError
import com.android.launcher3.config.FeatureFlags
import com.android.launcher3.logging.FileLog
import com.android.launcher3.model.data.AppInfo
import com.android.launcher3.model.data.AppPairInfo
import com.android.launcher3.model.data.FolderInfo
import com.android.launcher3.model.data.IconRequestInfo
@@ -41,6 +42,7 @@ import com.android.launcher3.model.data.ItemInfoWithIcon
import com.android.launcher3.model.data.LauncherAppWidgetInfo
import com.android.launcher3.model.data.WorkspaceItemInfo
import com.android.launcher3.pm.PackageInstallInfo
import com.android.launcher3.pm.UserCache
import com.android.launcher3.shortcuts.ShortcutKey
import com.android.launcher3.util.ApiWrapper
import com.android.launcher3.util.ComponentKey
@@ -60,6 +62,7 @@ import com.android.launcher3.widget.util.WidgetSizes
class WorkspaceItemProcessor(
    private val c: LoaderCursor,
    private val memoryLogger: LoaderMemoryLogger?,
    private val userCache: UserCache,
    private val userManagerState: UserManagerState,
    private val launcherApps: LauncherApps,
    private val pendingPackages: MutableSet<PackageUserKey>,
@@ -329,10 +332,8 @@ class WorkspaceItemProcessor(
                if (ApiWrapper.INSTANCE.get(app.context).isNonResizeableActivity(activityInfo)) {
                    info.status = info.status or WorkspaceItemInfo.FLAG_NON_RESIZEABLE
                }
                info.setProgressLevel(
                    PackageManagerHelper.getLoadingProgress(activityInfo),
                    PackageInstallInfo.STATUS_INSTALLED_DOWNLOADING
                )
                AppInfo.updateRuntimeFlagsForActivityTarget(info, activityInfo,
                    userCache.getUserInfo(c.user))
            }
            if (
                (c.restoreFlag != 0 ||
+19 −3
Original line number Diff line number Diff line
@@ -175,14 +175,26 @@ public class AppInfo extends ItemInfoWithIcon implements WorkspaceItemFactory {
        return componentName;
    }

    public static void updateRuntimeFlagsForActivityTarget(
    /**
     * Updates the runtime status flags for the given info based on the state of the specified
     * activity.
     */
    public static boolean updateRuntimeFlagsForActivityTarget(
            ItemInfoWithIcon info, LauncherActivityInfo lai, UserIconInfo userIconInfo) {
        final int oldProgressLevel = info.getProgressLevel();
        final int oldRuntimeStatusFlags = info.runtimeStatusFlags;
        ApplicationInfo appInfo = lai.getApplicationInfo();
        if (PackageManagerHelper.isAppSuspended(appInfo)) {
            info.runtimeStatusFlags |= FLAG_DISABLED_SUSPENDED;
        } else {
            info.runtimeStatusFlags &= ~FLAG_DISABLED_SUSPENDED;
        }
        if (Flags.enableSupportForArchiving() && lai.getActivityInfo().isArchived) {
        if (Flags.enableSupportForArchiving()) {
            if (lai.getActivityInfo().isArchived) {
                info.runtimeStatusFlags |= FLAG_ARCHIVED;
            } else {
                info.runtimeStatusFlags &= ~FLAG_ARCHIVED;
            }
        }
        info.runtimeStatusFlags |= (appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0
                ? FLAG_SYSTEM_NO : FLAG_SYSTEM_YES;
@@ -190,6 +202,8 @@ public class AppInfo extends ItemInfoWithIcon implements WorkspaceItemFactory {
        if (Flags.privateSpaceRestrictAccessibilityDrag()) {
            if (userIconInfo.isPrivate()) {
                info.runtimeStatusFlags |= FLAG_NOT_PINNABLE;
            } else {
                info.runtimeStatusFlags &= ~FLAG_NOT_PINNABLE;
            }
        }

@@ -197,6 +211,8 @@ public class AppInfo extends ItemInfoWithIcon implements WorkspaceItemFactory {
        info.setProgressLevel(
                PackageManagerHelper.getLoadingProgress(lai),
                PackageInstallInfo.STATUS_INSTALLED_DOWNLOADING);
        return (oldProgressLevel != info.getProgressLevel())
                || (oldRuntimeStatusFlags != info.runtimeStatusFlags);
    }

    @Override
+13 −0
Original line number Diff line number Diff line
@@ -37,10 +37,12 @@ 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.WorkspaceItemInfo
import com.android.launcher3.pm.UserCache
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.util.UserIconInfo
import com.android.launcher3.widget.WidgetInflater
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
@@ -68,6 +70,7 @@ class WorkspaceItemProcessorTest {
    @Mock private lateinit var mockPmHelper: PackageManagerHelper
    @Mock private lateinit var mockLauncherApps: LauncherApps
    @Mock private lateinit var mockCursor: LoaderCursor
    @Mock private lateinit var mockUserCache: UserCache
    @Mock private lateinit var mockUserManagerState: UserManagerState
    @Mock private lateinit var mockWidgetInflater: WidgetInflater

@@ -132,6 +135,14 @@ class WorkspaceItemProcessorTest {
                    .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)
            }

        mockUserManagerState = mock<UserManagerState>()
        mockWidgetInflater = mock<WidgetInflater>()
        keyToPinnedShortcutsMap = mutableMapOf()
@@ -147,6 +158,7 @@ class WorkspaceItemProcessorTest {
    private fun createWorkspaceItemProcessorUnderTest(
        cursor: LoaderCursor = mockCursor,
        memoryLogger: LoaderMemoryLogger? = null,
        userCache: UserCache = mockUserCache,
        userManagerState: UserManagerState = mockUserManagerState,
        launcherApps: LauncherApps = mockLauncherApps,
        shortcutKeyToPinnedShortcuts: Map<ShortcutKey, ShortcutInfo> = keyToPinnedShortcutsMap,
@@ -165,6 +177,7 @@ class WorkspaceItemProcessorTest {
        WorkspaceItemProcessor(
            c = cursor,
            memoryLogger = memoryLogger,
            userCache = userCache,
            userManagerState = userManagerState,
            launcherApps = launcherApps,
            app = app,