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

Commit f83d2d6f authored by Amith Yamasani's avatar Amith Yamasani Committed by Android (Google) Code Review
Browse files

Merge "User Manager service to manage users and query user details" into jb-mr1-dev

parents f7178d3c 258848d2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -139,6 +139,7 @@ LOCAL_SRC_FILES += \
	core/java/android/os/IRemoteCallback.aidl \
	core/java/android/os/ISchedulingPolicyService.aidl \
	core/java/android/os/IUpdateLock.aidl \
        core/java/android/os/IUserManager.aidl \
	core/java/android/os/IVibratorService.aidl \
	core/java/android/service/dreams/IDreamManager.aidl \
	core/java/android/service/dreams/IDreamService.aidl \
+6 −0
Original line number Diff line number Diff line
@@ -5386,6 +5386,7 @@ package android.content {
    field public static final java.lang.String TEXT_SERVICES_MANAGER_SERVICE = "textservices";
    field public static final java.lang.String UI_MODE_SERVICE = "uimode";
    field public static final java.lang.String USB_SERVICE = "usb";
    field public static final java.lang.String USER_SERVICE = "user";
    field public static final java.lang.String VIBRATOR_SERVICE = "vibrator";
    field public static final java.lang.String WALLPAPER_SERVICE = "wallpaper";
    field public static final java.lang.String WIFI_P2P_SERVICE = "wifip2p";
@@ -16448,6 +16449,11 @@ package android.os {
    ctor public TransactionTooLargeException();
  }
  public class UserManager {
    method public java.lang.String getUserName();
    method public boolean supportsMultipleUsers();
  }
  public abstract class Vibrator {
    method public abstract void cancel();
    method public abstract boolean hasVibrator();
+8 −3
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import com.android.internal.content.PackageHelper;

import android.app.ActivityManagerNative;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.ContainerEncryptionParams;
import android.content.pm.FeatureInfo;
@@ -39,9 +40,11 @@ import android.content.res.AssetManager;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Binder;
import android.os.IUserManager;
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserManager;

import java.io.File;
import java.lang.reflect.Field;
@@ -59,6 +62,7 @@ import javax.crypto.spec.SecretKeySpec;

public final class Pm {
    IPackageManager mPm;
    IUserManager mUm;

    private WeakHashMap<String, Resources> mResourceCache
            = new WeakHashMap<String, Resources>();
@@ -82,6 +86,7 @@ public final class Pm {
            return;
        }

        mUm = IUserManager.Stub.asInterface(ServiceManager.getService("user"));
        mPm = IPackageManager.Stub.asInterface(ServiceManager.getService("package"));
        if (mPm == null) {
            System.err.println(PM_NOT_RUNNING_ERR);
@@ -985,7 +990,7 @@ public final class Pm {
        }
        name = arg;
        try {
            if (mPm.createUser(name, 0) == null) {
            if (mUm.createUser(name, 0) == null) {
                System.err.println("Error: couldn't create User.");
                showUsage();
            }
@@ -1017,7 +1022,7 @@ public final class Pm {
            return;
        }
        try {
            if (!mPm.removeUser(userId)) {
            if (!mUm.removeUser(userId)) {
                System.err.println("Error: couldn't remove user.");
                showUsage();
            }
@@ -1034,7 +1039,7 @@ public final class Pm {
            return;
        }
        try {
            List<UserInfo> users = mPm.getUsers();
            List<UserInfo> users = mUm.getUsers();
            if (users == null) {
                System.err.println("Error: couldn't get users");
            } else {
+10 −6
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import android.os.Message;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserId;
import android.os.UserManager;
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
@@ -92,6 +93,7 @@ public class AccountManagerService
    private final Context mContext;

    private final PackageManager mPackageManager;
    private UserManager mUserManager;

    private HandlerThread mMessageThread;
    private final MessageHandler mMessageHandler;
@@ -245,6 +247,13 @@ public class AccountManagerService
        initUser(0);
    }

    private UserManager getUserManager() {
        if (mUserManager == null) {
            mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
        }
        return mUserManager;
    }

    private UserAccounts initUser(int userId) {
        synchronized (mUsers) {
            UserAccounts accounts = mUsers.get(userId);
@@ -382,12 +391,7 @@ public class AccountManagerService
    }

    private List<UserInfo> getAllUsers() {
        try {
            return AppGlobals.getPackageManager().getUsers();
        } catch (RemoteException re) {
            // Local to system process, shouldn't happen
        }
        return null;
        return getUserManager().getUsers();
    }

    public void onServiceChanged(AuthenticatorDescription desc, boolean removed) {
+1 −75
Original line number Diff line number Diff line
@@ -41,8 +41,8 @@ import android.content.pm.PermissionInfo;
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.UserInfo;
import android.content.pm.ManifestDigest;
import android.content.pm.UserInfo;
import android.content.pm.VerifierDeviceIdentity;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
@@ -1182,80 +1182,6 @@ final class ApplicationPackageManager extends PackageManager {
        return PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
    }

    // Multi-user support

    /**
     * @hide
     */
    @Override
    public UserInfo createUser(String name, int flags) {
        try {
            return mPM.createUser(name, flags);
        } catch (RemoteException e) {
            // Should never happen!
        }
        return null;
    }

    /**
     * @hide
     */
    @Override
    public List<UserInfo> getUsers() {
        try {
            return mPM.getUsers();
        } catch (RemoteException re) {
            ArrayList<UserInfo> users = new ArrayList<UserInfo>();
            UserInfo primary = new UserInfo(0, "Root!", null,
                    UserInfo.FLAG_ADMIN | UserInfo.FLAG_PRIMARY);
            users.add(primary);
            return users;
        }
    }

    /**
     * @hide
     */
    @Override
    public UserInfo getUser(int userId) {
        try {
            return mPM.getUser(userId);
        } catch (RemoteException re) {
            return null;
        }
    }

    /**
     * @hide
     */
    @Override
    public boolean removeUser(int id) {
        try {
            return mPM.removeUser(id);
        } catch (RemoteException e) {
            return false;
        }
    }

    /**
     * @hide
     */
    @Override
    public void setUserName(int id, String name) {
        try {
            mPM.setUserName(id, name);
        } catch (RemoteException re) {
        }
    }

    /**
     * @hide
     */
    @Override
    public void updateUserFlags(int id, int flags) {
        // TODO:
    }

    /**
     * @hide
     */
Loading