From 673a81be1ed24590c7175f724100c59195ae2673 Mon Sep 17 00:00:00 2001 From: Charlie Anderson Date: Fri, 21 Jul 2023 15:05:33 -0400 Subject: [PATCH] When unpausing work profile after reboot, we should do a single reload of the workspace. Prevents greyed out work items from persisting that are not actually paused. Bug: 290870690 Test: manually tested pausing work profile, rebooting, unpausing work profile. Also tested just pausing/unpausing work profile. Change-Id: Iab6d51c9bf47b1732b9cc4278bec5119e7c6afbf --- src/com/android/launcher3/LauncherModel.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 5f3d27c835..fd8f66851d 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -102,6 +102,9 @@ public class LauncherModel extends LauncherApps.Callback implements InstallSessi private LoaderTask mLoaderTask; private boolean mIsLoaderTaskRunning; + // only allow this once per reboot to reload work apps + private boolean mShouldReloadWorkProfile = true; + // Indicates whether the current model data is valid or not. // We start off with everything not loaded. After that, we assume that // our monitoring of the package manager provides all updates and we never @@ -308,17 +311,19 @@ public class LauncherModel extends LauncherApps.Callback implements InstallSessi */ public void onUserEvent(UserHandle user, String action) { if (Intent.ACTION_MANAGED_PROFILE_AVAILABLE.equals(action) + && mShouldReloadWorkProfile) { + mShouldReloadWorkProfile = false; + forceReload(); + } else if (Intent.ACTION_MANAGED_PROFILE_AVAILABLE.equals(action) || Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action)) { + mShouldReloadWorkProfile = false; enqueueModelUpdateTask(new PackageUpdatedTask( PackageUpdatedTask.OP_USER_AVAILABILITY_CHANGE, user)); - } - - if (UserCache.ACTION_PROFILE_LOCKED.equals(action) + } else 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) + } else if (UserCache.ACTION_PROFILE_ADDED.equals(action) || UserCache.ACTION_PROFILE_REMOVED.equals(action)) { forceReload(); }