From 1b1f59b584e96c4ed2cf0243adfc6669177d077d Mon Sep 17 00:00:00 2001 From: Matt Pietal Date: Tue, 2 Jun 2020 15:58:20 -0400 Subject: Controls UI - Reset seeding upon app uninstall Don't make seeding a 'forever' decision. If the user comes back at some point in time, reseed the space. Bug: 155994616 Test: uninstall/reinstall Home Change-Id: Ib3f56fa7b9394ed80f02314f41fb8f19c519e6b9 --- .../controls/controller/ControlsControllerImpl.kt | 16 ++++++++++++++-- .../systemui/globalactions/GlobalActionsDialog.java | 4 ++-- 2 files changed, 16 insertions(+), 4 deletions(-) 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 fd9fda3662a3..93f0c7f41ce3 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 1b13d4a49fec..71ce36c7c166 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; -- cgit v1.2.3-59-g8ed1b