Loading services/core/java/com/android/server/pm/PackageManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -12196,7 +12196,7 @@ public class PackageManagerService extends IPackageManager.Stub { return; } } mSettings.writePackageRestrictionsLPr(userId); scheduleWritePackageRestrictionsLocked(userId); components = mPendingBroadcasts.get(userId, packageName); final boolean newPackage = components == null; if (newPackage) { services/core/java/com/android/server/pm/UserManagerService.java +38 −14 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.server.pm; import static android.text.format.DateUtils.MINUTE_IN_MILLIS; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManagerNative; Loading @@ -33,11 +31,11 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Binder; import android.os.Bundle; import android.os.Debug; import android.os.Environment; import android.os.FileUtils; import android.os.Handler; import android.os.IUserManager; import android.os.Message; import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; Loading Loading @@ -134,6 +132,8 @@ public class UserManagerService extends IUserManager.Stub { // BACKOFF_INC_INTERVAL times. private static final int[] BACKOFF_TIMES = { 0, 30*1000, 60*1000, 5*60*1000, 30*60*1000 }; static final int WRITE_USER_MSG = 1; static final int WRITE_USER_DELAY = 2*1000; // 2 seconds private final Context mContext; private final PackageManagerService mPm; Loading Loading @@ -210,7 +210,7 @@ public class UserManagerService extends IUserManager.Stub { mPm = pm; mInstallLock = installLock; mPackagesLock = packagesLock; mHandler = new Handler(); mHandler = new MainHandler(); synchronized (mInstallLock) { synchronized (mPackagesLock) { mUsersDir = new File(dataDir, USER_INFO_DIR); Loading Loading @@ -458,7 +458,7 @@ public class UserManagerService extends IUserManager.Stub { } if ((info.flags&UserInfo.FLAG_INITIALIZED) == 0) { info.flags |= UserInfo.FLAG_INITIALIZED; writeUserLocked(info); scheduleWriteUserLocked(info); } } } Loading Loading @@ -526,7 +526,7 @@ public class UserManagerService extends IUserManager.Stub { } finally { Binder.restoreCallingIdentity(token); } writeUserLocked(mUsers.get(userId)); scheduleWriteUserLocked(mUsers.get(userId)); } } Loading Loading @@ -692,7 +692,7 @@ public class UserManagerService extends IUserManager.Stub { UserInfo user = mUsers.get(UserHandle.USER_OWNER); if ("Primary".equals(user.name)) { user.name = mContext.getResources().getString(com.android.internal.R.string.owner_name); writeUserLocked(user); scheduleWriteUserLocked(user); } userVersion = 1; } Loading @@ -702,7 +702,7 @@ public class UserManagerService extends IUserManager.Stub { UserInfo user = mUsers.get(UserHandle.USER_OWNER); if ((user.flags & UserInfo.FLAG_INITIALIZED) == 0) { user.flags |= UserInfo.FLAG_INITIALIZED; writeUserLocked(user); scheduleWriteUserLocked(user); } userVersion = 2; } Loading Loading @@ -745,6 +745,13 @@ public class UserManagerService extends IUserManager.Stub { writeUserLocked(primary); } private void scheduleWriteUserLocked(UserInfo userInfo) { if (!mHandler.hasMessages(WRITE_USER_MSG, userInfo)) { Message msg = mHandler.obtainMessage(WRITE_USER_MSG, userInfo); mHandler.sendMessageDelayed(msg, WRITE_USER_DELAY); } } /* * Writes the user file in this format: * Loading Loading @@ -1182,14 +1189,13 @@ public class UserManagerService extends IUserManager.Stub { if (parent != null) { if (parent.profileGroupId == UserInfo.NO_PROFILE_GROUP_ID) { parent.profileGroupId = parent.id; writeUserLocked(parent); scheduleWriteUserLocked(parent); } userInfo.profileGroupId = parent.profileGroupId; } writeUserLocked(userInfo); mPm.createNewUserLILPw(userId, userPath); userInfo.partial = false; writeUserLocked(userInfo); scheduleWriteUserLocked(userInfo); updateUserIdsLocked(); Bundle restrictions = new Bundle(); mUserRestrictions.append(userId, restrictions); Loading Loading @@ -1514,12 +1520,12 @@ public class UserManagerService extends IUserManager.Stub { } if (passwordToHash(pin, pinState.salt).equals(pinState.pinHash)) { pinState.failedAttempts = 0; writeUserLocked(mUsers.get(userId)); scheduleWriteUserLocked(mUsers.get(userId)); return UserManager.PIN_VERIFICATION_SUCCESS; } else { pinState.failedAttempts++; pinState.lastAttemptTime = System.currentTimeMillis(); writeUserLocked(mUsers.get(userId)); scheduleWriteUserLocked(mUsers.get(userId)); return waitTime; } } Loading Loading @@ -1818,7 +1824,7 @@ public class UserManagerService extends IUserManager.Stub { } if (now > EPOCH_PLUS_30_YEARS) { user.lastLoggedInTime = now; writeUserLocked(user); scheduleWriteUserLocked(user); } } } Loading Loading @@ -1895,4 +1901,22 @@ public class UserManagerService extends IUserManager.Stub { } } } final class MainHandler extends Handler { @Override public void handleMessage(Message msg) { switch (msg.what) { case WRITE_USER_MSG: removeMessages(WRITE_USER_MSG, msg.obj); synchronized (mPackagesLock) { int userId = ((UserInfo) msg.obj).id; UserInfo userInfo = mUsers.get(userId); if (userInfo != null) { writeUserLocked(userInfo); } } } } } } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -12196,7 +12196,7 @@ public class PackageManagerService extends IPackageManager.Stub { return; } } mSettings.writePackageRestrictionsLPr(userId); scheduleWritePackageRestrictionsLocked(userId); components = mPendingBroadcasts.get(userId, packageName); final boolean newPackage = components == null; if (newPackage) {
services/core/java/com/android/server/pm/UserManagerService.java +38 −14 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.server.pm; import static android.text.format.DateUtils.MINUTE_IN_MILLIS; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManagerNative; Loading @@ -33,11 +31,11 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Binder; import android.os.Bundle; import android.os.Debug; import android.os.Environment; import android.os.FileUtils; import android.os.Handler; import android.os.IUserManager; import android.os.Message; import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; Loading Loading @@ -134,6 +132,8 @@ public class UserManagerService extends IUserManager.Stub { // BACKOFF_INC_INTERVAL times. private static final int[] BACKOFF_TIMES = { 0, 30*1000, 60*1000, 5*60*1000, 30*60*1000 }; static final int WRITE_USER_MSG = 1; static final int WRITE_USER_DELAY = 2*1000; // 2 seconds private final Context mContext; private final PackageManagerService mPm; Loading Loading @@ -210,7 +210,7 @@ public class UserManagerService extends IUserManager.Stub { mPm = pm; mInstallLock = installLock; mPackagesLock = packagesLock; mHandler = new Handler(); mHandler = new MainHandler(); synchronized (mInstallLock) { synchronized (mPackagesLock) { mUsersDir = new File(dataDir, USER_INFO_DIR); Loading Loading @@ -458,7 +458,7 @@ public class UserManagerService extends IUserManager.Stub { } if ((info.flags&UserInfo.FLAG_INITIALIZED) == 0) { info.flags |= UserInfo.FLAG_INITIALIZED; writeUserLocked(info); scheduleWriteUserLocked(info); } } } Loading Loading @@ -526,7 +526,7 @@ public class UserManagerService extends IUserManager.Stub { } finally { Binder.restoreCallingIdentity(token); } writeUserLocked(mUsers.get(userId)); scheduleWriteUserLocked(mUsers.get(userId)); } } Loading Loading @@ -692,7 +692,7 @@ public class UserManagerService extends IUserManager.Stub { UserInfo user = mUsers.get(UserHandle.USER_OWNER); if ("Primary".equals(user.name)) { user.name = mContext.getResources().getString(com.android.internal.R.string.owner_name); writeUserLocked(user); scheduleWriteUserLocked(user); } userVersion = 1; } Loading @@ -702,7 +702,7 @@ public class UserManagerService extends IUserManager.Stub { UserInfo user = mUsers.get(UserHandle.USER_OWNER); if ((user.flags & UserInfo.FLAG_INITIALIZED) == 0) { user.flags |= UserInfo.FLAG_INITIALIZED; writeUserLocked(user); scheduleWriteUserLocked(user); } userVersion = 2; } Loading Loading @@ -745,6 +745,13 @@ public class UserManagerService extends IUserManager.Stub { writeUserLocked(primary); } private void scheduleWriteUserLocked(UserInfo userInfo) { if (!mHandler.hasMessages(WRITE_USER_MSG, userInfo)) { Message msg = mHandler.obtainMessage(WRITE_USER_MSG, userInfo); mHandler.sendMessageDelayed(msg, WRITE_USER_DELAY); } } /* * Writes the user file in this format: * Loading Loading @@ -1182,14 +1189,13 @@ public class UserManagerService extends IUserManager.Stub { if (parent != null) { if (parent.profileGroupId == UserInfo.NO_PROFILE_GROUP_ID) { parent.profileGroupId = parent.id; writeUserLocked(parent); scheduleWriteUserLocked(parent); } userInfo.profileGroupId = parent.profileGroupId; } writeUserLocked(userInfo); mPm.createNewUserLILPw(userId, userPath); userInfo.partial = false; writeUserLocked(userInfo); scheduleWriteUserLocked(userInfo); updateUserIdsLocked(); Bundle restrictions = new Bundle(); mUserRestrictions.append(userId, restrictions); Loading Loading @@ -1514,12 +1520,12 @@ public class UserManagerService extends IUserManager.Stub { } if (passwordToHash(pin, pinState.salt).equals(pinState.pinHash)) { pinState.failedAttempts = 0; writeUserLocked(mUsers.get(userId)); scheduleWriteUserLocked(mUsers.get(userId)); return UserManager.PIN_VERIFICATION_SUCCESS; } else { pinState.failedAttempts++; pinState.lastAttemptTime = System.currentTimeMillis(); writeUserLocked(mUsers.get(userId)); scheduleWriteUserLocked(mUsers.get(userId)); return waitTime; } } Loading Loading @@ -1818,7 +1824,7 @@ public class UserManagerService extends IUserManager.Stub { } if (now > EPOCH_PLUS_30_YEARS) { user.lastLoggedInTime = now; writeUserLocked(user); scheduleWriteUserLocked(user); } } } Loading Loading @@ -1895,4 +1901,22 @@ public class UserManagerService extends IUserManager.Stub { } } } final class MainHandler extends Handler { @Override public void handleMessage(Message msg) { switch (msg.what) { case WRITE_USER_MSG: removeMessages(WRITE_USER_MSG, msg.obj); synchronized (mPackagesLock) { int userId = ((UserInfo) msg.obj).id; UserInfo userInfo = mUsers.get(userId); if (userInfo != null) { writeUserLocked(userInfo); } } } } } }