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

Commit e042fdd6 authored by Andrew Sapperstein's avatar Andrew Sapperstein Committed by android-build-merger
Browse files

Merge "Revert "Hide system apps until installed (1/2)"" into pi-dev am: bae9b1a7

am: 15014a6f

Change-Id: I91a5b8e0fde679dfa324f7485fe2216017484872
parents 45a5b16d 15014a6f
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -598,8 +598,6 @@ interface IPackageManager {
    boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId);
    boolean getApplicationHiddenSettingAsUser(String packageName, int userId);

    boolean setSystemAppInstallState(String packageName, boolean installed, int userId);

    IPackageInstaller getPackageInstaller();

    boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId);
+1 −10
Original line number Diff line number Diff line
@@ -147,7 +147,6 @@ public abstract class PackageManager {
            GET_DISABLED_COMPONENTS,
            GET_DISABLED_UNTIL_USED_COMPONENTS,
            GET_UNINSTALLED_PACKAGES,
            MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface PackageInfoFlags {}
@@ -165,7 +164,6 @@ public abstract class PackageManager {
            MATCH_STATIC_SHARED_LIBRARIES,
            GET_DISABLED_UNTIL_USED_COMPONENTS,
            GET_UNINSTALLED_PACKAGES,
            MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface ApplicationInfoFlags {}
@@ -523,12 +521,6 @@ public abstract class PackageManager {
     */
    public static final int MATCH_DEBUG_TRIAGED_MISSING = 0x10000000;

    /**
     * Internal flag used to indicate that a package is a hidden system app.
     * @hide
     */
    public static final int MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS =  0x20000000;

    /**
     * Flag for {@link #addCrossProfileIntentFilter}: if this flag is set: when
     * resolving an intent that matches the {@code CrossProfileIntentFilter},
@@ -4858,7 +4850,6 @@ public abstract class PackageManager {
     * @hide
     */
     @RequiresPermission(anyOf = {
            Manifest.permission.INSTALL_EXISTING_PACKAGES,
            Manifest.permission.INSTALL_PACKAGES,
            Manifest.permission.INTERACT_ACROSS_USERS_FULL})
    public abstract int installExistingPackageAsUser(String packageName, @UserIdInt int userId)
+1 −9
Original line number Diff line number Diff line
@@ -639,19 +639,11 @@ public class PackageParser {
     */
    private static boolean checkUseInstalledOrHidden(int flags, PackageUserState state,
            ApplicationInfo appInfo) {
        // Returns false if the package is hidden system app until installed.
        if ((flags & PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS) == 0
                && !state.installed
                && appInfo != null && appInfo.isSystemApp()) {
            return false;
        }

        // If available for the target user, or trying to match uninstalled packages and it's
        // a system app.
        return state.isAvailable(flags)
                || (appInfo != null && appInfo.isSystemApp()
                        && ((flags & PackageManager.MATCH_KNOWN_PACKAGES) != 0
                        || (flags & PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS) != 0));
                        && (flags & PackageManager.MATCH_KNOWN_PACKAGES) != 0);
    }

    public static boolean isAvailable(PackageUserState state) {
+0 −9
Original line number Diff line number Diff line
@@ -3024,15 +3024,6 @@
    <permission android:name="android.permission.INSTALL_PACKAGE_UPDATES"
        android:protectionLevel="signature|privileged" />

    <!-- Allows an application to install existing system packages. This is a limited
         version of {@link android.Manifest.permission#INSTALL_PACKAGES}.
         <p>Not for use by third-party applications.
         TODO(b/80204953): remove this permission once we have a long-term solution.
         @hide
    -->
    <permission android:name="com.android.permission.INSTALL_EXISTING_PACKAGES"
        android:protectionLevel="signature|privileged" />

    <!-- @SystemApi Allows an application to clear user data.
         <p>Not for use by third-party applications
         @hide
+3 −46
Original line number Diff line number Diff line
@@ -14009,43 +14009,6 @@ public class PackageManagerService extends IPackageManager.Stub
        return false;
    }
    @Override
    public boolean setSystemAppInstallState(String packageName, boolean installed, int userId) {
        enforceSystemOrPhoneCaller("setSystemAppInstallState");
        PackageSetting pkgSetting = mSettings.mPackages.get(packageName);
        // The target app should always be in system
        if (pkgSetting == null || !pkgSetting.isSystem()) {
            return false;
        }
        // Check if the install state is the same
        if (pkgSetting.getInstalled(userId) == installed) {
            return false;
        }
        long callingId = Binder.clearCallingIdentity();
        try {
            if (installed) {
                // install the app from uninstalled state
                installExistingPackageAsUser(
                        packageName,
                        userId,
                        0 /*installFlags*/,
                        PackageManager.INSTALL_REASON_DEVICE_SETUP);
                return true;
            }
            // uninstall the app from installed state
            deletePackageVersioned(
                    new VersionedPackage(packageName, PackageManager.VERSION_CODE_HIGHEST),
                    new LegacyPackageDeleteObserver(null).getBinder(),
                    userId,
                    PackageManager.DELETE_SYSTEM_APP);
            return true;
        } finally {
            Binder.restoreCallingIdentity(callingId);
        }
    }
    private void sendApplicationHiddenForUser(String packageName, PackageSetting pkgSetting,
            int userId) {
        final PackageRemovedInfo info = new PackageRemovedInfo(this);
@@ -14110,16 +14073,10 @@ public class PackageManagerService extends IPackageManager.Stub
    @Override
    public int installExistingPackageAsUser(String packageName, int userId, int installFlags,
            int installReason) {
        final int callingUid = Binder.getCallingUid();
        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES)
                != PackageManager.PERMISSION_GRANTED
                && mContext.checkCallingOrSelfPermission(
                        android.Manifest.permission.INSTALL_EXISTING_PACKAGES)
                != PackageManager.PERMISSION_GRANTED) {
            throw new SecurityException("Neither user " + callingUid + " nor current process has "
                    + android.Manifest.permission.INSTALL_PACKAGES + ".");
        }
        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES,
                null);
        PackageSetting pkgSetting;
        final int callingUid = Binder.getCallingUid();
        mPermissionManager.enforceCrossUserPermission(callingUid, userId,
                true /* requireFullPermission */, true /* checkShell */,
                "installExistingPackage for user " + userId);
Loading