diff options
| author | 2016-04-29 17:24:21 -0700 | |
|---|---|---|
| committer | 2016-04-29 17:27:16 -0700 | |
| commit | 4d01f61e7bb0d1f3a9ba598c6bc35df0b6a1a43f (patch) | |
| tree | cdaad8d4aeeccb376a411079f732fe9acd9da292 | |
| parent | ede4fcea6b4fb5950b2a4eaf34b0fa6fa2f8a696 (diff) | |
Do not enforce unlocked state when there is no caller
Do not enforce unlocked state when running on the background thread. User can
be in the stopping state or removed by the time the message is being processed.
Bug: 28471878
Change-Id: I1862849661d93b424a07ea94e80563bea7a94ce5
| -rw-r--r-- | services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index 7b9d44560563..c62689c22b0d 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -656,11 +656,15 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku } private void ensureGroupStateLoadedLocked(int userId) { - if (!mUserManager.isUserUnlockingOrUnlocked(userId)) { + ensureGroupStateLoadedLocked(userId, /* enforceUserUnlockingOrUnlocked */ true ); + } + + private void ensureGroupStateLoadedLocked(int userId, boolean enforceUserUnlockingOrUnlocked) { + if (enforceUserUnlockingOrUnlocked && !mUserManager.isUserUnlockingOrUnlocked(userId)) { throw new IllegalStateException( "User " + userId + " must be unlocked for widgets to be available"); } - if (isProfileWithLockedParent(userId)) { + if (enforceUserUnlockingOrUnlocked && isProfileWithLockedParent(userId)) { throw new IllegalStateException( "Profile " + userId + " must have unlocked parent"); } @@ -3945,7 +3949,9 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku @Override public void run() { synchronized (mLock) { - ensureGroupStateLoadedLocked(mUserId); + // No need to enforce unlocked state when there is no caller. User can be in the + // stopping state or removed by the time the message is processed + ensureGroupStateLoadedLocked(mUserId, false /* enforceUserUnlockingOrUnlocked */ ); saveStateLocked(mUserId); } } |