diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt index fd9fda3662a3a..93f0c7f41ce39 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt @@ -44,6 +44,7 @@ import com.android.systemui.controls.management.ControlsListingController import com.android.systemui.controls.ui.ControlsUiController import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dump.DumpManager +import com.android.systemui.globalactions.GlobalActionsDialog import com.android.systemui.util.concurrency.DelayableExecutor import java.io.FileDescriptor import java.io.PrintWriter @@ -79,6 +80,7 @@ class ControlsControllerImpl @Inject constructor ( } private var userChanging: Boolean = true + private var userStructure: UserStructure private var seedingInProgress = false private val seedingCallbacks = mutableListOf>() @@ -97,7 +99,7 @@ class ControlsControllerImpl @Inject constructor ( internal var auxiliaryPersistenceWrapper: AuxiliaryPersistenceWrapper init { - val userStructure = UserStructure(context, currentUser) + userStructure = UserStructure(context, currentUser) persistenceWrapper = optionalWrapper.orElseGet { ControlsFavoritePersistenceWrapper( @@ -116,7 +118,7 @@ class ControlsControllerImpl @Inject constructor ( private fun setValuesForUser(newUser: UserHandle) { Log.d(TAG, "Changing to user: $newUser") currentUser = newUser - val userStructure = UserStructure(context, currentUser) + userStructure = UserStructure(context, currentUser) persistenceWrapper.changeFileAndBackupManager( userStructure.file, BackupManager(userStructure.userContext) @@ -192,6 +194,16 @@ class ControlsControllerImpl @Inject constructor ( it.componentName }.toSet() + // When a component is uninstalled, allow seeding to happen again if the user + // reinstalls the app + val prefs = userStructure.userContext.getSharedPreferences( + GlobalActionsDialog.PREFS_CONTROLS_FILE, Context.MODE_PRIVATE) + val completedSeedingPackageSet = prefs.getStringSet( + GlobalActionsDialog.PREFS_CONTROLS_SEEDING_COMPLETED, mutableSetOf()) + val favoritePackageSet = favoriteComponentSet.map { it.packageName } + prefs.edit().putStringSet(GlobalActionsDialog.PREFS_CONTROLS_SEEDING_COMPLETED, + completedSeedingPackageSet.intersect(favoritePackageSet)).apply() + var changed = false favoriteComponentSet.subtract(serviceInfoSet).forEach { changed = true diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java index 1b13d4a49fecc..71ce36c7c1661 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java @@ -183,8 +183,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, static final String GLOBAL_ACTION_KEY_EMERGENCY = "emergency"; static final String GLOBAL_ACTION_KEY_SCREENSHOT = "screenshot"; - private static final String PREFS_CONTROLS_SEEDING_COMPLETED = "SeedingCompleted"; - private static final String PREFS_CONTROLS_FILE = "controls_prefs"; + public static final String PREFS_CONTROLS_SEEDING_COMPLETED = "SeedingCompleted"; + public static final String PREFS_CONTROLS_FILE = "controls_prefs"; private static final int SEEDING_MAX = 2; private final Context mContext;