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

Commit 27605fb9 authored by Jakob Schneider's avatar Jakob Schneider Committed by Android (Google) Code Review
Browse files

Merge "Add temporary system property checks in addition in addition to flag checks." into main

parents 77a8ecb2 55e9769e
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Flags;
import android.os.Process;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.Log;
@@ -131,7 +132,7 @@ public class UninstallAlertDialogFragment extends DialogFragment implements
        final boolean isUpdate =
                ((dialogInfo.appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);
        final boolean isArchive =
                android.content.pm.Flags.archiving() && (
                isArchivingEnabled() && (
                        (dialogInfo.deleteFlags & PackageManager.DELETE_ARCHIVE) != 0);
        final UserHandle myUserHandle = Process.myUserHandle();
        UserManager userManager = getContext().getSystemService(UserManager.class);
@@ -242,6 +243,11 @@ public class UninstallAlertDialogFragment extends DialogFragment implements
        return dialogBuilder.create();
    }

    private static boolean isArchivingEnabled() {
        return android.content.pm.Flags.archiving()
                || SystemProperties.getBoolean("pm.archiving.enabled", false);
    }

    private boolean isCloneProfile(UserHandle userHandle) {
        UserManager customUserManager = getContext()
                .createContextAsUser(UserHandle.of(userHandle.getIdentifier()), 0)
+5 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.content.pm.PackageManager.ApplicationInfoFlags
import android.content.pm.ResolveInfo
import android.os.SystemProperties
import com.android.internal.R
import com.android.settingslib.spaprivileged.framework.common.userManager
import kotlinx.coroutines.async
@@ -110,7 +111,7 @@ class AppListRepositoryImpl(
    ): List<ApplicationInfo> {
        val disabledComponentsFlag = (PackageManager.MATCH_DISABLED_COMPONENTS or
            PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS).toLong()
        val archivedPackagesFlag: Long = if (featureFlags.archiving())
        val archivedPackagesFlag: Long = if (isArchivingEnabled(featureFlags))
            PackageManager.MATCH_ARCHIVED_PACKAGES else 0L
        val regularFlags = ApplicationInfoFlags.of(
            disabledComponentsFlag or
@@ -148,6 +149,9 @@ class AppListRepositoryImpl(
        }
    }

    private fun isArchivingEnabled(featureFlags: FeatureFlags) =
            featureFlags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false)

    override fun showSystemPredicate(
        userIdFlow: Flow<Int>,
        showSystemFlow: Flow<Boolean>,
+9 −7
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ import static android.content.pm.LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS;
import static android.content.pm.LauncherApps.FLAG_CACHE_NOTIFICATION_SHORTCUTS;
import static android.content.pm.LauncherApps.FLAG_CACHE_PEOPLE_TILE_SHORTCUTS;

import static com.android.server.pm.PackageArchiver.isArchivingEnabled;

import android.annotation.AppIdInt;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -56,7 +58,6 @@ import android.content.IntentSender;
import android.content.LocusId;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.Flags;
import android.content.pm.ILauncherApps;
import android.content.pm.IOnAppsChangedListener;
import android.content.pm.IPackageInstallerCallback;
@@ -507,7 +508,8 @@ public class LauncherAppsService extends SystemService {
            if (!canAccessProfile(userId, "cannot get shouldHideFromSuggestions")) {
                return false;
            }
            if (Flags.archiving() && packageName != null && isPackageArchived(packageName, user)) {
            if (isArchivingEnabled() && packageName != null
                    && isPackageArchived(packageName, user)) {
                return true;
            }
            if (mPackageManagerInternal.filterAppAccess(
@@ -530,7 +532,7 @@ public class LauncherAppsService extends SystemService {
                                    .addCategory(Intent.CATEGORY_LAUNCHER)
                                    .setPackage(packageName),
                            user);
            if (Flags.archiving()) {
            if (isArchivingEnabled()) {
                launcherActivities =
                        getActivitiesForArchivedApp(packageName, user, launcherActivities);
            }
@@ -701,7 +703,7 @@ public class LauncherAppsService extends SystemService {
                                callingUid,
                                user.getIdentifier());
                if (activityInfo == null) {
                    if (Flags.archiving()) {
                    if (isArchivingEnabled()) {
                        return getMatchingArchivedAppActivityInfo(component, user);
                    }
                    return null;
@@ -984,7 +986,7 @@ public class LauncherAppsService extends SystemService {
                long callingFlag =
                        PackageManager.MATCH_DIRECT_BOOT_AWARE
                                | PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
                if (Flags.archiving()) {
                if (isArchivingEnabled()) {
                    callingFlag |= PackageManager.MATCH_ARCHIVED_PACKAGES;
                }
                final PackageInfo info =
@@ -1457,7 +1459,7 @@ public class LauncherAppsService extends SystemService {
            if (!canAccessProfile(user.getIdentifier(), "Cannot check component")) {
                return false;
            }
            if (Flags.archiving() && component != null && component.getPackageName() != null) {
            if (isArchivingEnabled() && component != null && component.getPackageName() != null) {
                List<LauncherActivityInfoInternal> archiveActivities =
                        generateLauncherActivitiesForArchivedApp(component.getPackageName(), user);
                if (!archiveActivities.isEmpty()) {
@@ -1788,7 +1790,7 @@ public class LauncherAppsService extends SystemService {
                }
                if (!canLaunch
                        && includeArchivedApps
                        && Flags.archiving()
                        && isArchivingEnabled()
                        && getMatchingArchivedAppActivityInfo(component, user) != null) {
                    launchIntent.setPackage(null);
                    launchIntent.setComponent(component);
+6 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.ArchivedActivityParcel;
import android.content.pm.ArchivedPackageInfo;
import android.content.pm.ArchivedPackageParcel;
import android.content.pm.Flags;
import android.content.pm.LauncherActivityInfo;
import android.content.pm.LauncherApps;
import android.content.pm.PackageInstaller;
@@ -78,6 +79,7 @@ import android.os.ParcelableException;
import android.os.Process;
import android.os.RemoteException;
import android.os.SELinux;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.ExceptionUtils;
@@ -173,6 +175,10 @@ public class PackageArchiver {
        return userState.getArchiveState() != null && !userState.isInstalled();
    }

    public static boolean isArchivingEnabled() {
        return Flags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false);
    }

    void requestArchive(
            @NonNull String packageName,
            @NonNull String callerPackageName,
+3 −2
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import static android.content.pm.PackageManager.INSTALL_UNARCHIVE_DRAFT;
import static android.os.Process.INVALID_UID;
import static android.os.Process.SYSTEM_UID;

import static com.android.server.pm.PackageArchiver.isArchivingEnabled;
import static com.android.server.pm.PackageManagerService.SHELL_PACKAGE_NAME;

import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT;
@@ -826,7 +827,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
        }

        params.installFlags &= ~PackageManager.INSTALL_UNARCHIVE;
        if (Flags.archiving() && params.appPackageName != null) {
        if (isArchivingEnabled() && params.appPackageName != null) {
            PackageStateInternal ps = mPm.snapshotComputer().getPackageStateInternal(
                    params.appPackageName, SYSTEM_UID);
            if (ps != null
@@ -1034,7 +1035,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
    private int getExistingDraftSessionIdInternal(int installerUid,
            SessionParams sessionParams, int userId) {
        String appPackageName = sessionParams.appPackageName;
        if (!Flags.archiving() || installerUid == INVALID_UID || appPackageName == null) {
        if (!isArchivingEnabled() || installerUid == INVALID_UID || appPackageName == null) {
            return SessionInfo.INVALID_ID;
        }

Loading