summaryrefslogtreecommitdiff
path: root/services/appwidget/java
diff options
context:
space:
mode:
author Fyodor Kupolov <fkupolov@google.com> 2016-04-29 17:24:21 -0700
committer Fyodor Kupolov <fkupolov@google.com> 2016-04-29 17:27:16 -0700
commit4d01f61e7bb0d1f3a9ba598c6bc35df0b6a1a43f (patch)
treecdaad8d4aeeccb376a411079f732fe9acd9da292 /services/appwidget/java
parentede4fcea6b4fb5950b2a4eaf34b0fa6fa2f8a696 (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
Diffstat (limited to 'services/appwidget/java')
-rw-r--r--services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java12
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);
}
}