summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Amith Yamasani <yamasani@google.com> 2013-08-06 18:20:55 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2013-08-06 18:20:55 +0000
commitaac3954414d34bb22c9db2675fb34ee196685b49 (patch)
tree0d05b581a14927b3c015393f0c8d981834dce934
parent3ed2ba3e769ccfb1ec14f52a703f339d643ed555 (diff)
parent350962ca82ddd3d455221c0f29fafb92542f38ea (diff)
Merge "Remove restrictions PIN for all users"
-rw-r--r--services/java/com/android/server/pm/UserManagerService.java23
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);