Merge "Do not enforce unlocked state when there is no caller" into nyc-dev

This commit is contained in:
Fyodor Kupolov
2016-05-02 16:05:39 +00:00
committed by Android (Google) Code Review

View File

@@ -656,11 +656,15 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
} }
private void ensureGroupStateLoadedLocked(int userId) { 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( throw new IllegalStateException(
"User " + userId + " must be unlocked for widgets to be available"); "User " + userId + " must be unlocked for widgets to be available");
} }
if (isProfileWithLockedParent(userId)) { if (enforceUserUnlockingOrUnlocked && isProfileWithLockedParent(userId)) {
throw new IllegalStateException( throw new IllegalStateException(
"Profile " + userId + " must have unlocked parent"); "Profile " + userId + " must have unlocked parent");
} }
@@ -3945,7 +3949,9 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
@Override @Override
public void run() { public void run() {
synchronized (mLock) { 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); saveStateLocked(mUserId);
} }
} }