Making UserCache the source of truth for all user events
Bug: 243688989
Test: Presubmit
Flag: N/A
Change-Id: I0e6b853d965eff1abaeb3b26dd6b94424e5212df
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index f225f85..ddafd53 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -95,15 +95,6 @@
static final String TAG = "Launcher.Model";
- // Broadcast intent to track when the profile gets locked:
- // ACTION_MANAGED_PROFILE_UNAVAILABLE can be used until Android U where profile no longer gets
- // locked when paused.
- // ACTION_PROFILE_INACCESSIBLE always means that the profile is getting locked but it only
- // appeared in Android S.
- private static final String ACTION_PROFILE_LOCKED = Utilities.ATLEAST_U
- ? Intent.ACTION_PROFILE_INACCESSIBLE
- : Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE;
-
@NonNull
private final LauncherAppState mApp;
@NonNull
@@ -303,28 +294,6 @@
if (Intent.ACTION_LOCALE_CHANGED.equals(action)) {
// If we have changed locale we need to clear out the labels in all apps/workspace.
forceReload();
- } else if (Intent.ACTION_MANAGED_PROFILE_AVAILABLE.equals(action)
- || Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action)
- || Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)
- || Intent.ACTION_PROFILE_INACCESSIBLE.equals(action)) {
- UserHandle user = intent.getParcelableExtra(Intent.EXTRA_USER);
- if (TestProtocol.sDebugTracing) {
- Log.d(TestProtocol.WORK_TAB_MISSING, "onBroadcastIntent intentAction: " + action +
- " user: " + user);
- }
- if (user != null) {
- if (Intent.ACTION_MANAGED_PROFILE_AVAILABLE.equals(action) ||
- Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action)) {
- enqueueModelUpdateTask(new PackageUpdatedTask(
- PackageUpdatedTask.OP_USER_AVAILABILITY_CHANGE, user));
- }
-
- if (ACTION_PROFILE_LOCKED.equals(action)
- || Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)) {
- enqueueModelUpdateTask(new UserLockStateChangedTask(
- user, Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)));
- }
- }
} else if (ACTION_DEVICE_POLICY_RESOURCE_UPDATED.equals(action)) {
enqueueModelUpdateTask(new ReloadStringCacheTask(mModelDelegate));
} else if (IS_STUDIO_BUILD && ACTION_FORCE_ROLOAD.equals(action)) {
@@ -337,6 +306,33 @@
}
/**
+ * Called then there use a user event
+ * @see UserCache#addUserEventListener
+ */
+ public void onUserEvent(UserHandle user, String action) {
+ if (TestProtocol.sDebugTracing) {
+ Log.d(TestProtocol.WORK_TAB_MISSING, "onBroadcastIntent intentAction: "
+ + action + " user: " + user);
+ }
+
+ if (Intent.ACTION_MANAGED_PROFILE_AVAILABLE.equals(action)
+ || Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action)) {
+ enqueueModelUpdateTask(new PackageUpdatedTask(
+ PackageUpdatedTask.OP_USER_AVAILABILITY_CHANGE, user));
+ }
+
+ if (UserCache.ACTION_PROFILE_LOCKED.equals(action)
+ || UserCache.ACTION_PROFILE_UNLOCKED.equals(action)) {
+ enqueueModelUpdateTask(new UserLockStateChangedTask(
+ user, UserCache.ACTION_PROFILE_UNLOCKED.equals(action)));
+ }
+ if (UserCache.ACTION_PROFILE_ADDED.equals(action)
+ || UserCache.ACTION_PROFILE_REMOVED.equals(action)) {
+ forceReload();
+ }
+ }
+
+ /**
* Reloads the workspace items from the DB and re-binds the workspace. This should generally
* not be called as DB updates are automatically followed by UI update
*/