Loading aconfig/settings_flag_declarations.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -13,3 +13,10 @@ flag { description: "Enabling will provide an explicit package name for Intent to update mainline modules" bug: "278987474" } flag { name: "app_archiving" namespace: "android_settings" description: "Feature flag to enable the archiving feature." bug: "323164382" } src/com/android/settings/applications/AppCounter.java +9 −1 Original line number Diff line number Diff line Loading @@ -22,12 +22,15 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.ApplicationInfoFlags; import android.content.pm.UserInfo; import android.os.AsyncTask; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import com.android.settings.flags.Flags; import java.util.List; public abstract class AppCounter extends AsyncTask<Void, Void, Integer> { Loading @@ -54,7 +57,7 @@ public abstract class AppCounter extends AsyncTask<Void, Void, Integer> { for (UserInfo user : mUm.getProfiles(UserHandle.myUserId())) { long flags = PackageManager.GET_DISABLED_COMPONENTS | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS | (mFf.archiving() ? PackageManager.MATCH_ARCHIVED_PACKAGES : 0) | (isArchivingEnabled() ? PackageManager.MATCH_ARCHIVED_PACKAGES : 0) | (user.isAdmin() ? PackageManager.MATCH_ANY_USER : 0); ApplicationInfoFlags infoFlags = ApplicationInfoFlags.of(flags); final List<ApplicationInfo> list = Loading @@ -68,6 +71,11 @@ public abstract class AppCounter extends AsyncTask<Void, Void, Integer> { return count; } private boolean isArchivingEnabled() { return mFf.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false) || Flags.appArchiving(); } @Override protected void onPostExecute(Integer count) { onCountComplete(count); Loading src/com/android/settings/spa/app/appinfo/AppButtons.kt +4 −4 Original line number Diff line number Diff line Loading @@ -17,8 +17,8 @@ package com.android.settings.spa.app.appinfo import android.content.pm.ApplicationInfo import android.content.pm.FeatureFlags import android.content.pm.FeatureFlagsImpl import android.content.pm.FeatureFlags as PmFeatureFlags import android.content.pm.FeatureFlagsImpl as PmFeatureFlagsImpl import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.lifecycle.compose.collectAsStateWithLifecycle Loading @@ -34,7 +34,7 @@ import kotlinx.coroutines.flow.MutableStateFlow fun AppButtons( packageInfoPresenter: PackageInfoPresenter, isHibernationSwitchEnabledStateFlow: MutableStateFlow<Boolean>, featureFlags: FeatureFlags = FeatureFlagsImpl() featureFlags: PmFeatureFlags = PmFeatureFlagsImpl() ) { if (remember(packageInfoPresenter) { packageInfoPresenter.isMainlineModule() }) return val presenter = remember { Loading @@ -53,7 +53,7 @@ private fun PackageInfoPresenter.isMainlineModule(): Boolean = private class AppButtonsPresenter( private val packageInfoPresenter: PackageInfoPresenter, isHibernationSwitchEnabledStateFlow: MutableStateFlow<Boolean>, private val featureFlags: FeatureFlags private val featureFlags: PmFeatureFlags ) { private val appLaunchButton = AppLaunchButton(packageInfoPresenter) private val appInstallButton = AppInstallButton(packageInfoPresenter) Loading src/com/android/settings/spa/app/appinfo/AppInfoSettings.kt +7 −5 Original line number Diff line number Diff line Loading @@ -18,9 +18,8 @@ package com.android.settings.spa.app.appinfo import android.app.settings.SettingsEnums import android.content.pm.ApplicationInfo import android.content.pm.FeatureFlags import android.content.pm.FeatureFlagsImpl import android.os.Bundle import android.os.SystemProperties import android.os.UserHandle import android.util.FeatureFlagUtils import androidx.compose.runtime.Composable Loading Loading @@ -51,6 +50,8 @@ import com.android.settingslib.spa.widget.ui.Category import com.android.settingslib.spaprivileged.model.app.toRoute import com.android.settingslib.spaprivileged.template.app.AppInfoProvider import kotlinx.coroutines.flow.MutableStateFlow import android.content.pm.FeatureFlags as PmFeatureFlags import android.content.pm.FeatureFlagsImpl as PmFeatureFlagsImpl private const val PACKAGE_NAME = "packageName" private const val USER_ID = "userId" Loading Loading @@ -121,7 +122,7 @@ object AppInfoSettingsProvider : SettingsPageProvider { @Composable private fun AppInfoSettings(packageInfoPresenter: PackageInfoPresenter) { val packageInfoState = packageInfoPresenter.flow.collectAsStateWithLifecycle() val featureFlags: FeatureFlags = FeatureFlagsImpl() val featureFlags: PmFeatureFlags = PmFeatureFlagsImpl() RegularScaffold( title = stringResource(R.string.application_info_label), actions = { Loading Loading @@ -177,5 +178,6 @@ private fun AppInfoSettings(packageInfoPresenter: PackageInfoPresenter) { } } fun isArchivingEnabled(featureFlags: FeatureFlags) = featureFlags.archiving() || "true" == System.getProperty("pm.archiving.enabled") fun isArchivingEnabled(featureFlags: PmFeatureFlags) = featureFlags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false) || Flags.appArchiving() No newline at end of file src/com/android/settings/spa/app/appinfo/HibernationSwitchPreference.kt +5 −2 Original line number Diff line number Diff line Loading @@ -22,8 +22,9 @@ import android.app.AppOpsManager.MODE_IGNORED import android.app.AppOpsManager.OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED import android.content.Context import android.content.pm.ApplicationInfo import android.content.pm.Flags import android.content.pm.Flags as PmFlags import android.os.Build import android.os.SystemProperties import android.permission.PermissionControllerManager.HIBERNATION_ELIGIBILITY_EXEMPT_BY_SYSTEM import android.permission.PermissionControllerManager.HIBERNATION_ELIGIBILITY_UNKNOWN import android.provider.DeviceConfig Loading @@ -36,6 +37,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.android.settings.R import com.android.settings.Utils.PROPERTY_APP_HIBERNATION_ENABLED import com.android.settings.Utils.PROPERTY_HIBERNATION_TARGETS_PRE_S_APPS import com.android.settings.flags.Flags import com.android.settingslib.spa.framework.compose.OverridableFlow import com.android.settingslib.spa.widget.preference.SwitchPreference import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel Loading Loading @@ -91,7 +93,8 @@ fun HibernationSwitchPreference( } private fun isArchivingEnabled() = Flags.archiving() || "true" == System.getProperty("pm.archiving.enabled") PmFlags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false) || Flags.appArchiving() private class HibernationSwitchPresenter(context: Context, private val app: ApplicationInfo) { private val appOpsManager = context.appOpsManager Loading Loading
aconfig/settings_flag_declarations.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -13,3 +13,10 @@ flag { description: "Enabling will provide an explicit package name for Intent to update mainline modules" bug: "278987474" } flag { name: "app_archiving" namespace: "android_settings" description: "Feature flag to enable the archiving feature." bug: "323164382" }
src/com/android/settings/applications/AppCounter.java +9 −1 Original line number Diff line number Diff line Loading @@ -22,12 +22,15 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.ApplicationInfoFlags; import android.content.pm.UserInfo; import android.os.AsyncTask; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import com.android.settings.flags.Flags; import java.util.List; public abstract class AppCounter extends AsyncTask<Void, Void, Integer> { Loading @@ -54,7 +57,7 @@ public abstract class AppCounter extends AsyncTask<Void, Void, Integer> { for (UserInfo user : mUm.getProfiles(UserHandle.myUserId())) { long flags = PackageManager.GET_DISABLED_COMPONENTS | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS | (mFf.archiving() ? PackageManager.MATCH_ARCHIVED_PACKAGES : 0) | (isArchivingEnabled() ? PackageManager.MATCH_ARCHIVED_PACKAGES : 0) | (user.isAdmin() ? PackageManager.MATCH_ANY_USER : 0); ApplicationInfoFlags infoFlags = ApplicationInfoFlags.of(flags); final List<ApplicationInfo> list = Loading @@ -68,6 +71,11 @@ public abstract class AppCounter extends AsyncTask<Void, Void, Integer> { return count; } private boolean isArchivingEnabled() { return mFf.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false) || Flags.appArchiving(); } @Override protected void onPostExecute(Integer count) { onCountComplete(count); Loading
src/com/android/settings/spa/app/appinfo/AppButtons.kt +4 −4 Original line number Diff line number Diff line Loading @@ -17,8 +17,8 @@ package com.android.settings.spa.app.appinfo import android.content.pm.ApplicationInfo import android.content.pm.FeatureFlags import android.content.pm.FeatureFlagsImpl import android.content.pm.FeatureFlags as PmFeatureFlags import android.content.pm.FeatureFlagsImpl as PmFeatureFlagsImpl import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.lifecycle.compose.collectAsStateWithLifecycle Loading @@ -34,7 +34,7 @@ import kotlinx.coroutines.flow.MutableStateFlow fun AppButtons( packageInfoPresenter: PackageInfoPresenter, isHibernationSwitchEnabledStateFlow: MutableStateFlow<Boolean>, featureFlags: FeatureFlags = FeatureFlagsImpl() featureFlags: PmFeatureFlags = PmFeatureFlagsImpl() ) { if (remember(packageInfoPresenter) { packageInfoPresenter.isMainlineModule() }) return val presenter = remember { Loading @@ -53,7 +53,7 @@ private fun PackageInfoPresenter.isMainlineModule(): Boolean = private class AppButtonsPresenter( private val packageInfoPresenter: PackageInfoPresenter, isHibernationSwitchEnabledStateFlow: MutableStateFlow<Boolean>, private val featureFlags: FeatureFlags private val featureFlags: PmFeatureFlags ) { private val appLaunchButton = AppLaunchButton(packageInfoPresenter) private val appInstallButton = AppInstallButton(packageInfoPresenter) Loading
src/com/android/settings/spa/app/appinfo/AppInfoSettings.kt +7 −5 Original line number Diff line number Diff line Loading @@ -18,9 +18,8 @@ package com.android.settings.spa.app.appinfo import android.app.settings.SettingsEnums import android.content.pm.ApplicationInfo import android.content.pm.FeatureFlags import android.content.pm.FeatureFlagsImpl import android.os.Bundle import android.os.SystemProperties import android.os.UserHandle import android.util.FeatureFlagUtils import androidx.compose.runtime.Composable Loading Loading @@ -51,6 +50,8 @@ import com.android.settingslib.spa.widget.ui.Category import com.android.settingslib.spaprivileged.model.app.toRoute import com.android.settingslib.spaprivileged.template.app.AppInfoProvider import kotlinx.coroutines.flow.MutableStateFlow import android.content.pm.FeatureFlags as PmFeatureFlags import android.content.pm.FeatureFlagsImpl as PmFeatureFlagsImpl private const val PACKAGE_NAME = "packageName" private const val USER_ID = "userId" Loading Loading @@ -121,7 +122,7 @@ object AppInfoSettingsProvider : SettingsPageProvider { @Composable private fun AppInfoSettings(packageInfoPresenter: PackageInfoPresenter) { val packageInfoState = packageInfoPresenter.flow.collectAsStateWithLifecycle() val featureFlags: FeatureFlags = FeatureFlagsImpl() val featureFlags: PmFeatureFlags = PmFeatureFlagsImpl() RegularScaffold( title = stringResource(R.string.application_info_label), actions = { Loading Loading @@ -177,5 +178,6 @@ private fun AppInfoSettings(packageInfoPresenter: PackageInfoPresenter) { } } fun isArchivingEnabled(featureFlags: FeatureFlags) = featureFlags.archiving() || "true" == System.getProperty("pm.archiving.enabled") fun isArchivingEnabled(featureFlags: PmFeatureFlags) = featureFlags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false) || Flags.appArchiving() No newline at end of file
src/com/android/settings/spa/app/appinfo/HibernationSwitchPreference.kt +5 −2 Original line number Diff line number Diff line Loading @@ -22,8 +22,9 @@ import android.app.AppOpsManager.MODE_IGNORED import android.app.AppOpsManager.OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED import android.content.Context import android.content.pm.ApplicationInfo import android.content.pm.Flags import android.content.pm.Flags as PmFlags import android.os.Build import android.os.SystemProperties import android.permission.PermissionControllerManager.HIBERNATION_ELIGIBILITY_EXEMPT_BY_SYSTEM import android.permission.PermissionControllerManager.HIBERNATION_ELIGIBILITY_UNKNOWN import android.provider.DeviceConfig Loading @@ -36,6 +37,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.android.settings.R import com.android.settings.Utils.PROPERTY_APP_HIBERNATION_ENABLED import com.android.settings.Utils.PROPERTY_HIBERNATION_TARGETS_PRE_S_APPS import com.android.settings.flags.Flags import com.android.settingslib.spa.framework.compose.OverridableFlow import com.android.settingslib.spa.widget.preference.SwitchPreference import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel Loading Loading @@ -91,7 +93,8 @@ fun HibernationSwitchPreference( } private fun isArchivingEnabled() = Flags.archiving() || "true" == System.getProperty("pm.archiving.enabled") PmFlags.archiving() || SystemProperties.getBoolean("pm.archiving.enabled", false) || Flags.appArchiving() private class HibernationSwitchPresenter(context: Context, private val app: ApplicationInfo) { private val appOpsManager = context.appOpsManager Loading