diff options
| author | 2013-08-06 18:20:55 +0000 | |
|---|---|---|
| committer | 2013-08-06 18:20:55 +0000 | |
| commit | aac3954414d34bb22c9db2675fb34ee196685b49 (patch) | |
| tree | 0d05b581a14927b3c015393f0c8d981834dce934 | |
| parent | 3ed2ba3e769ccfb1ec14f52a703f339d643ed555 (diff) | |
| parent | 350962ca82ddd3d455221c0f29fafb92542f38ea (diff) | |
Merge "Remove restrictions PIN for all users"
| -rw-r--r-- | services/java/com/android/server/pm/UserManagerService.java | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/services/java/com/android/server/pm/UserManagerService.java b/services/java/com/android/server/pm/UserManagerService.java index 4ead8d50a40d..35b5c85c0952 100644 --- a/services/java/com/android/server/pm/UserManagerService.java +++ b/services/java/com/android/server/pm/UserManagerService.java @@ -116,7 +116,7 @@ public class UserManagerService extends IUserManager.Stub { private static final int MIN_USER_ID = 10; - private static final int USER_VERSION = 2; + private static final int USER_VERSION = 3; private static final long EPOCH_PLUS_30_YEARS = 30L * 365 * 24 * 60 * 60 * 1000L; // ms @@ -425,6 +425,7 @@ public class UserManagerService extends IUserManager.Stub { && restrictions.getBoolean(UserManager.DISALLOW_APP_RESTRICTIONS, false)) { restrictions.putBoolean(UserManager.DISALLOW_APP_RESTRICTIONS, false); } + mUserRestrictions.get(userId).clear(); mUserRestrictions.get(userId).putAll(restrictions); writeUserLocked(mUsers.get(userId)); } @@ -555,7 +556,7 @@ public class UserManagerService extends IUserManager.Stub { } } updateUserIdsLocked(); - upgradeIfNecessary(); + upgradeIfNecessaryLocked(); } catch (IOException ioe) { fallbackToSingleUserLocked(); } catch (XmlPullParserException pe) { @@ -573,7 +574,7 @@ public class UserManagerService extends IUserManager.Stub { /** * Upgrade steps between versions, either for fixing bugs or changing the data format. */ - private void upgradeIfNecessary() { + private void upgradeIfNecessaryLocked() { int userVersion = mUserVersion; if (userVersion < 1) { // Assign a proper name for the owner, if not initialized correctly before @@ -595,6 +596,18 @@ public class UserManagerService extends IUserManager.Stub { userVersion = 2; } + if (userVersion < 3) { + // Remove restrictions PIN for all users + for (int i = 0; i < mRestrictionsPinStates.size(); i++) { + int userId = mRestrictionsPinStates.keyAt(i); + RestrictionsPinState state = mRestrictionsPinStates.valueAt(i); + if (state.salt != 0 && state.pinHash != null) { + removeRestrictionsForUser(userId); + } + } + userVersion = 3; + } + if (userVersion < USER_VERSION) { Slog.w(LOG_TAG, "User version " + mUserVersion + " didn't upgrade as expected to " + USER_VERSION); @@ -1221,6 +1234,10 @@ public class UserManagerService extends IUserManager.Stub { public void removeRestrictions() { checkManageUsersPermission("Only system can remove restrictions"); final int userHandle = UserHandle.getCallingUserId(); + removeRestrictionsForUser(userHandle); + } + + private void removeRestrictionsForUser(final int userHandle) { synchronized (mPackagesLock) { // Remove all user restrictions setUserRestrictions(new Bundle(), userHandle); |