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

Commit a442e2ea authored by Alisher Alikhodjaev's avatar Alisher Alikhodjaev Committed by Android (Google) Code Review
Browse files

Merge "Revert "Update for Utils.isSystemPackage()""

parents c6ab4081 c0fd86f7
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -352,6 +352,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
                mPackageInfo = mPm.getPackageInfo(mAppEntry.info.packageName,
                        PackageManager.MATCH_DISABLED_COMPONENTS |
                                PackageManager.MATCH_ANY_USER |
                                PackageManager.GET_SIGNATURES |
                                PackageManager.GET_PERMISSIONS);

                mPackageName = mAppEntry.info.packageName;
@@ -393,7 +394,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
        // We don't allow uninstalling DO/PO on *any* users if it's a system app, because
        // "uninstall" is actually "downgrade to the system version + disable", and "downgrade"
        // will clear data on all users.
        if (isSystemPackage(mActivity.getResources(), mPm, mPackageInfo.applicationInfo)) {
        if (isSystemPackage(mActivity.getResources(), mPm, mPackageInfo)) {
            if (Utils.isProfileOrDeviceOwner(mUserManager, mDpm, mPackageInfo.packageName)) {
                enabled = false;
            }
@@ -562,7 +563,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
        // by not allowing disabling of apps signed with the
        // system cert and any launcher app in the system.
        if (mHomePackages.contains(mAppEntry.info.packageName)
                || isSystemPackage(mActivity.getResources(), mPm, mPackageInfo.applicationInfo)) {
                || isSystemPackage(mActivity.getResources(), mPm, mPackageInfo)) {
            // Disable button for core system applications.
            mButtonsPref.setButton2Text(R.string.disable_text)
                    .setButton2Icon(R.drawable.ic_settings_disable);
@@ -581,8 +582,8 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
    }

    @VisibleForTesting
    boolean isSystemPackage(Resources resources, PackageManager pm, ApplicationInfo app) {
        return Utils.isSystemPackage(resources, pm, app);
    boolean isSystemPackage(Resources resources, PackageManager pm, PackageInfo packageInfo) {
        return Utils.isSystemPackage(resources, pm, packageInfo);
    }

    private boolean isDisabledUntilUsed() {
+9 −9
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package com.android.settings.spa.app.appinfo

import android.content.pm.ApplicationInfo
import android.content.pm.PackageInfo
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.remember
@@ -58,17 +58,17 @@ private class AppButtonsPresenter(private val packageInfoPresenter: PackageInfoP
    @Composable
    fun rememberActionsButtons() = remember {
        packageInfoPresenter.flow.map { packageInfo ->
            if (packageInfo != null) getActionButtons(packageInfo.applicationInfo) else emptyList()
            if (packageInfo != null) getActionButtons(packageInfo) else emptyList()
        }
    }.collectAsState(initial = emptyList())

    private fun getActionButtons(app: ApplicationInfo): List<ActionButton> = listOfNotNull(
        appLaunchButton.getActionButton(app),
        appInstallButton.getActionButton(app),
        appDisableButton.getActionButton(app),
        appUninstallButton.getActionButton(app),
        appClearButton.getActionButton(app),
        appForceStopButton.getActionButton(app),
    private fun getActionButtons(packageInfo: PackageInfo): List<ActionButton> = listOfNotNull(
        appLaunchButton.getActionButton(packageInfo),
        appInstallButton.getActionButton(packageInfo),
        appDisableButton.getActionButton(packageInfo),
        appUninstallButton.getActionButton(packageInfo),
        appClearButton.getActionButton(packageInfo),
        appForceStopButton.getActionButton(packageInfo),
    )

    @Composable
+3 −2
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package com.android.settings.spa.app.appinfo

import android.content.pm.ApplicationInfo
import android.content.pm.PackageInfo
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material3.AlertDialog
@@ -37,7 +37,8 @@ class AppClearButton(

    private var openConfirmDialog by mutableStateOf(false)

    fun getActionButton(app: ApplicationInfo): ActionButton? {
    fun getActionButton(packageInfo: PackageInfo): ActionButton? {
        val app = packageInfo.applicationInfo
        if (!app.isInstantApp) return null

        return clearButton()
+7 −5
Original line number Diff line number Diff line
@@ -52,12 +52,13 @@ class AppDisableButton(

    private var openConfirmDialog by mutableStateOf(false)

    fun getActionButton(app: ApplicationInfo): ActionButton? {
    fun getActionButton(packageInfo: PackageInfo): ActionButton? {
        val app = packageInfo.applicationInfo
        if (!app.isSystemApp) return null

        return when {
            app.enabled && !app.isDisabledUntilUsed -> {
                disableButton(app = app, enabled = isDisableButtonEnabled(app))
                disableButton(app = app, enabled = isDisableButtonEnabled(packageInfo))
            }

            else -> enableButton()
@@ -67,8 +68,9 @@ class AppDisableButton(
    /**
     * Gets whether a package can be disabled.
     */
    private fun isDisableButtonEnabled(app: ApplicationInfo): Boolean {
        val packageName = app.packageName
    private fun isDisableButtonEnabled(packageInfo: PackageInfo): Boolean {
        val packageName = packageInfo.packageName
        val app = packageInfo.applicationInfo
        return when {
            packageName in applicationFeatureProvider.keepEnabledPackages -> false

@@ -78,7 +80,7 @@ class AppDisableButton(

            // Try to prevent the user from bricking their phone by not allowing disabling of apps
            // signed with the system certificate.
            SettingsLibUtils.isSystemPackage(resources, packageManager, app) -> false
            SettingsLibUtils.isSystemPackage(resources, packageManager, packageInfo) -> false

            // We don't allow disabling DO/PO on *any* users if it's a system app, because
            // "disabling" is actually "downgrade to the system version + disable", and "downgrade"
+2 −1
Original line number Diff line number Diff line
@@ -48,7 +48,8 @@ class AppForceStopButton(

    private var openConfirmDialog by mutableStateOf(false)

    fun getActionButton(app: ApplicationInfo): ActionButton {
    fun getActionButton(packageInfo: PackageInfo): ActionButton {
        val app = packageInfo.applicationInfo
        return ActionButton(
            text = context.getString(R.string.force_stop),
            imageVector = Icons.Outlined.WarningAmber,
Loading