Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 943dedaf authored by Suprabh Shukla's avatar Suprabh Shukla Committed by Android (Google) Code Review
Browse files

Merge "Setting TaskRecord#mUserSetupComplete directly from Settings" into nyc-dev

parents cf39c8de 7745c14a
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1899,7 +1899,9 @@ public final class ActivityManagerService extends ActivityManagerNative
            case SYSTEM_USER_UNLOCK_MSG: {
                final int userId = msg.arg1;
                mSystemServiceManager.unlockUser(userId);
                synchronized (ActivityManagerService.this) {
                    mRecentTasks.loadUserRecentsLocked(userId);
                }
                if (userId == UserHandle.USER_SYSTEM) {
                    startPersistentApps(PackageManager.MATCH_ENCRYPTION_UNAWARE);
                }
+5 −2
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import android.os.Debug;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.UserHandle;
import android.provider.Settings;
import android.service.voice.IVoiceInteractionSession;
import android.util.DisplayMetrics;
import android.util.Slog;
@@ -74,6 +75,7 @@ import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE;
import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE;
import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRIVILEGED;
import static android.provider.Settings.Secure.USER_SETUP_COMPLETE;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ADD_REMOVE;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_RECENTS;
@@ -444,9 +446,9 @@ final class TaskRecord {
            // task as having a true root activity.
            rootWasReset = true;
        }

        userId = UserHandle.getUserId(info.applicationInfo.uid);
        mUserSetupComplete = mService.mUserController.isUserSetupCompleteLocked(userId);
        mUserSetupComplete = Settings.Secure.getIntForUser(mService.mContext.getContentResolver(),
                USER_SETUP_COMPLETE, 0, userId) != 0;
        if ((info.flags & ActivityInfo.FLAG_AUTO_REMOVE_FROM_RECENTS) != 0) {
            // If the activity itself has requested auto-remove, then just always do it.
            autoRemoveRecents = true;
@@ -1570,6 +1572,7 @@ final class TaskRecord {
        pw.print(prefix); pw.print("userId="); pw.print(userId);
                pw.print(" effectiveUid="); UserHandle.formatUid(pw, effectiveUid);
                pw.print(" mCallingUid="); UserHandle.formatUid(pw, mCallingUid);
                pw.print(" mUserSetupComplete="); pw.print(mUserSetupComplete);
                pw.print(" mCallingPackage="); pw.println(mCallingPackage);
        if (affinity != null || rootAffinity != null) {
            pw.print(prefix); pw.print("affinity="); pw.print(affinity);
+0 −54
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import static android.app.ActivityManager.USER_OP_IS_CURRENT;
import static android.app.ActivityManager.USER_OP_SUCCESS;
import static android.content.Context.KEYGUARD_SERVICE;
import static android.os.Process.SYSTEM_UID;
import static android.provider.Settings.Secure.USER_SETUP_COMPLETE;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_MU;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
@@ -46,14 +45,11 @@ import android.app.Dialog;
import android.app.IStopUserCallback;
import android.app.IUserSwitchObserver;
import android.app.KeyguardManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.IIntentReceiver;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.BatteryStats;
import android.os.Binder;
import android.os.Bundle;
@@ -71,12 +67,10 @@ import android.os.UserManager;
import android.os.UserManagerInternal;
import android.os.storage.IMountService;
import android.os.storage.StorageManager;
import android.provider.Settings;
import android.util.IntArray;
import android.util.Pair;
import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
import android.util.SparseIntArray;

import com.android.internal.R;
@@ -153,34 +147,6 @@ final class UserController {

    private final LockPatternUtils mLockPatternUtils;

    // Set of users who have completed the set-up process.
    private final SparseBooleanArray mSetupCompletedUsers = new SparseBooleanArray();
    private final UserSetupCompleteContentObserver mUserSetupCompleteContentObserver;

    private class UserSetupCompleteContentObserver extends ContentObserver {
        private final Uri mUserSetupComplete = Settings.Secure.getUriFor(USER_SETUP_COMPLETE);

        public UserSetupCompleteContentObserver(Handler handler) {
            super(handler);
        }

        void register(ContentResolver resolver) {
            resolver.registerContentObserver(mUserSetupComplete, false, this, UserHandle.USER_ALL);
            synchronized (mService) {
                updateUserSetupCompleteLocked(UserHandle.USER_ALL);
            }
        }

        @Override
        public void onChange(boolean selfChange, Uri uri, int userId) {
            if (mUserSetupComplete.equals(uri)) {
                synchronized (mService) {
                    updateUserSetupCompleteLocked(userId);
                }
            }
        }
    }

    UserController(ActivityManagerService service) {
        mService = service;
        mHandler = mService.mHandler;
@@ -190,7 +156,6 @@ final class UserController {
        mUserLru.add(UserHandle.USER_SYSTEM);
        mLockPatternUtils = new LockPatternUtils(mService.mContext);
        updateStartedUserArrayLocked();
        mUserSetupCompleteContentObserver = new UserSetupCompleteContentObserver(mHandler);
    }

    void finishUserSwitch(UserState uss) {
@@ -477,7 +442,6 @@ final class UserController {
                mStartedUsers.remove(userId);
                mUserLru.remove(Integer.valueOf(userId));
                updateStartedUserArrayLocked();
                mSetupCompletedUsers.delete(userId);

                mService.onUserStoppedLocked(userId);
                // Clean up all state and processes associated with the user.
@@ -677,7 +641,6 @@ final class UserController {
                final Integer userIdInt = userId;
                mUserLru.remove(userIdInt);
                mUserLru.add(userIdInt);
                updateUserSetupCompleteLocked(userId);

                if (foreground) {
                    mCurrentUserId = userId;
@@ -892,22 +855,6 @@ final class UserController {
        mUserSwitchObservers.finishBroadcast();
    }

    void updateUserSetupCompleteLocked(int userId) {
        final ContentResolver cr = mService.mContext.getContentResolver();
        for (int i = mStartedUsers.size() - 1; i >= 0; i--) {
            int startedUser = mStartedUsers.keyAt(i);
            if (startedUser == userId || userId == UserHandle.USER_ALL) {
                final boolean setupComplete =
                        Settings.Secure.getIntForUser(cr, USER_SETUP_COMPLETE, 0, startedUser) != 0;
                mSetupCompletedUsers.put(startedUser, setupComplete);
            }
        }
    }

    boolean isUserSetupCompleteLocked(int userId) {
        return mSetupCompletedUsers.get(userId);
    }

    private void stopBackgroundUsersIfEnforced(int oldUserId) {
        // Never stop system user
        if (oldUserId == UserHandle.USER_SYSTEM) {
@@ -1218,7 +1165,6 @@ final class UserController {

    void onSystemReady() {
        updateCurrentProfileIdsLocked();
        mUserSetupCompleteContentObserver.register(mService.mContext.getContentResolver());
    }

    /**