sys user split: refactor user settings

BUG:19913735
Change-Id: I11e0c728d45bd74b60db89f352b356e97b755651
This commit is contained in:
Xiaohui Chen
2015-06-24 12:35:07 -07:00
parent 2e57c997fe
commit 64f530c2f1
2 changed files with 22 additions and 19 deletions

View File

@@ -5467,7 +5467,7 @@
<!-- User summary to indicate that a work profile is currently not set up [CHAR LIMIT=100] --> <!-- User summary to indicate that a work profile is currently not set up [CHAR LIMIT=100] -->
<string name="user_summary_managed_profile_not_set_up">Not set up - Work profile</string> <string name="user_summary_managed_profile_not_set_up">Not set up - Work profile</string>
<!-- User information string to represent the owner of the device [CHAR LIMIT=25] --> <!-- User information string to represent the owner of the device [CHAR LIMIT=25] -->
<string name="user_owner">Owner</string> <string name="user_admin">Admin</string>
<!-- User settings title for current user entry "You" user. [CHAR LIMIT=30] --> <!-- User settings title for current user entry "You" user. [CHAR LIMIT=30] -->
<string name="user_you">You (<xliff:g id="name" example="Name">%s</xliff:g>)</string> <string name="user_you">You (<xliff:g id="name" example="Name">%s</xliff:g>)</string>
<!-- Title for the preference to enter the nickname of the userto display in the user switcher [CHAR LIMIT=25]--> <!-- Title for the preference to enter the nickname of the userto display in the user switcher [CHAR LIMIT=25]-->

View File

@@ -211,8 +211,8 @@ public class UserSettings extends SettingsPreferenceFragment
null /* delete icon handler */); null /* delete icon handler */);
mMePreference.setKey(KEY_USER_ME); mMePreference.setKey(KEY_USER_ME);
mMePreference.setOnPreferenceClickListener(this); mMePreference.setOnPreferenceClickListener(this);
if (mUserCaps.mIsOwner) { if (mUserCaps.mIsAdmin) {
mMePreference.setSummary(R.string.user_owner); mMePreference.setSummary(R.string.user_admin);
} }
mAddUser = findPreference(KEY_ADD_USER); mAddUser = findPreference(KEY_ADD_USER);
// Determine if add user/profile button should be visible // Determine if add user/profile button should be visible
@@ -268,13 +268,13 @@ public class UserSettings extends SettingsPreferenceFragment
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
int pos = 0; int pos = 0;
UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE); UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
if (!mUserCaps.mIsOwner && !um.hasUserRestriction(UserManager.DISALLOW_REMOVE_USER)) { if (!mUserCaps.mIsAdmin && !um.hasUserRestriction(UserManager.DISALLOW_REMOVE_USER)) {
String nickname = mUserManager.getUserName(); String nickname = mUserManager.getUserName();
MenuItem removeThisUser = menu.add(0, MENU_REMOVE_USER, pos++, MenuItem removeThisUser = menu.add(0, MENU_REMOVE_USER, pos++,
getResources().getString(R.string.user_remove_user_menu, nickname)); getResources().getString(R.string.user_remove_user_menu, nickname));
removeThisUser.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); removeThisUser.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
} }
if (mUserCaps.mIsOwner && !um.hasUserRestriction(UserManager.DISALLOW_ADD_USER)) { if (mUserCaps.mIsAdmin && !um.hasUserRestriction(UserManager.DISALLOW_ADD_USER)) {
MenuItem allowAddOnLockscreen = menu.add(0, MENU_ADD_ON_LOCKSCREEN, pos++, MenuItem allowAddOnLockscreen = menu.add(0, MENU_ADD_ON_LOCKSCREEN, pos++,
R.string.user_add_on_lockscreen_menu); R.string.user_add_on_lockscreen_menu);
allowAddOnLockscreen.setCheckable(true); allowAddOnLockscreen.setCheckable(true);
@@ -436,7 +436,7 @@ public class UserSettings extends SettingsPreferenceFragment
return; return;
} }
UserInfo info = mUserManager.getUserInfo(userId); UserInfo info = mUserManager.getUserInfo(userId);
if (info.isRestricted() && mUserCaps.mIsOwner) { if (info.isRestricted() && mUserCaps.mIsAdmin) {
Bundle extras = new Bundle(); Bundle extras = new Bundle();
extras.putInt(RestrictedProfileSettings.EXTRA_USER_ID, userId); extras.putInt(RestrictedProfileSettings.EXTRA_USER_ID, userId);
extras.putBoolean(RestrictedProfileSettings.EXTRA_NEW_USER, newUser); extras.putBoolean(RestrictedProfileSettings.EXTRA_NEW_USER, newUser);
@@ -447,7 +447,7 @@ public class UserSettings extends SettingsPreferenceFragment
} else if (info.id == UserHandle.myUserId()) { } else if (info.id == UserHandle.myUserId()) {
// Jump to owner info panel // Jump to owner info panel
OwnerInfoSettings.show(this); OwnerInfoSettings.show(this);
} else if (mUserCaps.mIsOwner) { } else if (mUserCaps.mIsAdmin) {
Bundle extras = new Bundle(); Bundle extras = new Bundle();
extras.putInt(UserDetailsSettings.EXTRA_USER_ID, userId); extras.putInt(UserDetailsSettings.EXTRA_USER_ID, userId);
((SettingsActivity) getActivity()).startPreferencePanel( ((SettingsActivity) getActivity()).startPreferencePanel(
@@ -639,7 +639,7 @@ public class UserSettings extends SettingsPreferenceFragment
private void removeThisUser() { private void removeThisUser() {
try { try {
ActivityManagerNative.getDefault().switchUser(UserHandle.USER_OWNER); ActivityManagerNative.getDefault().switchUser(UserHandle.USER_SYSTEM);
((UserManager) getActivity().getSystemService(Context.USER_SERVICE)) ((UserManager) getActivity().getSystemService(Context.USER_SERVICE))
.removeUser(UserHandle.myUserId()); .removeUser(UserHandle.myUserId());
} catch (RemoteException re) { } catch (RemoteException re) {
@@ -725,9 +725,9 @@ public class UserSettings extends SettingsPreferenceFragment
// Secondary user: Delete // Secondary user: Delete
// Guest: Nothing // Guest: Nothing
// Restricted Profile: Settings // Restricted Profile: Settings
final boolean showSettings = mUserCaps.mIsOwner final boolean showSettings = mUserCaps.mIsAdmin
&& (voiceCapable || user.isRestricted()); && (voiceCapable || user.isRestricted());
final boolean showDelete = mUserCaps.mIsOwner final boolean showDelete = mUserCaps.mIsAdmin
&& (!voiceCapable && !user.isRestricted() && !user.isGuest()); && (!voiceCapable && !user.isRestricted() && !user.isGuest());
pref = new UserPreference(context, null, user.id, pref = new UserPreference(context, null, user.id,
showSettings ? this : null, showSettings ? this : null,
@@ -735,8 +735,8 @@ public class UserSettings extends SettingsPreferenceFragment
pref.setOnPreferenceClickListener(this); pref.setOnPreferenceClickListener(this);
pref.setKey("id=" + user.id); pref.setKey("id=" + user.id);
userPreferences.add(pref); userPreferences.add(pref);
if (user.id == UserHandle.USER_OWNER) { if (user.isAdmin()) {
pref.setSummary(R.string.user_owner); pref.setSummary(R.string.user_admin);
} }
pref.setTitle(user.name); pref.setTitle(user.name);
} }
@@ -777,7 +777,7 @@ public class UserSettings extends SettingsPreferenceFragment
// Add a virtual Guest user for guest defaults // Add a virtual Guest user for guest defaults
UserPreference pref = new UserPreference(getActivity(), null, UserPreference pref = new UserPreference(getActivity(), null,
UserPreference.USERID_GUEST_DEFAULTS, UserPreference.USERID_GUEST_DEFAULTS,
mUserCaps.mIsOwner && voiceCapable? this : null /* settings icon handler */, mUserCaps.mIsAdmin && voiceCapable? this : null /* settings icon handler */,
null /* delete icon handler */); null /* delete icon handler */);
pref.setTitle(R.string.user_guest); pref.setTitle(R.string.user_guest);
pref.setIcon(getEncircledDefaultIcon()); pref.setIcon(getEncircledDefaultIcon());
@@ -1022,10 +1022,12 @@ public class UserSettings extends SettingsPreferenceFragment
boolean mEnabled = true; boolean mEnabled = true;
boolean mCanAddUser = true; boolean mCanAddUser = true;
boolean mCanAddRestrictedProfile = true; boolean mCanAddRestrictedProfile = true;
boolean mIsOwner = UserHandle.myUserId() == UserHandle.USER_OWNER; boolean mIsAdmin;
boolean mIsGuest; boolean mIsGuest;
boolean mCanAddGuest; boolean mCanAddGuest;
private UserCapabilities() {}
public static UserCapabilities create(Context context) { public static UserCapabilities create(Context context) {
UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
UserCapabilities caps = new UserCapabilities(); UserCapabilities caps = new UserCapabilities();
@@ -1034,9 +1036,12 @@ public class UserSettings extends SettingsPreferenceFragment
return caps; return caps;
} }
final UserInfo myUserInfo = userManager.getUserInfo(UserHandle.myUserId());
caps.mIsGuest = myUserInfo.isGuest();
caps.mIsAdmin = myUserInfo.isAdmin();
final boolean disallowAddUser = userManager.hasUserRestriction( final boolean disallowAddUser = userManager.hasUserRestriction(
UserManager.DISALLOW_ADD_USER); UserManager.DISALLOW_ADD_USER);
if (!caps.mIsOwner || UserManager.getMaxSupportedUsers() < 2 if (!caps.mIsAdmin || UserManager.getMaxSupportedUsers() < 2
|| !UserManager.supportsMultipleUsers() || !UserManager.supportsMultipleUsers()
|| disallowAddUser) { || disallowAddUser) {
caps.mCanAddUser = false; caps.mCanAddUser = false;
@@ -1047,10 +1052,8 @@ public class UserSettings extends SettingsPreferenceFragment
if (dpm.getDeviceOwner() != null || Utils.isVoiceCapable(context)) { if (dpm.getDeviceOwner() != null || Utils.isVoiceCapable(context)) {
caps.mCanAddRestrictedProfile = false; caps.mCanAddRestrictedProfile = false;
} }
final int myUserId = UserHandle.myUserId();
caps.mIsGuest = userManager.getUserInfo(myUserId).isGuest();
final boolean canAddUsersWhenLocked = caps.mIsOwner || Settings.Global.getInt( final boolean canAddUsersWhenLocked = caps.mIsAdmin || Settings.Global.getInt(
context.getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1; context.getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1;
caps.mCanAddGuest = !caps.mIsGuest && !disallowAddUser && canAddUsersWhenLocked; caps.mCanAddGuest = !caps.mIsGuest && !disallowAddUser && canAddUsersWhenLocked;
return caps; return caps;
@@ -1062,7 +1065,7 @@ public class UserSettings extends SettingsPreferenceFragment
"mEnabled=" + mEnabled + "mEnabled=" + mEnabled +
", mCanAddUser=" + mCanAddUser + ", mCanAddUser=" + mCanAddUser +
", mCanAddRestrictedProfile=" + mCanAddRestrictedProfile + ", mCanAddRestrictedProfile=" + mCanAddRestrictedProfile +
", mIsOwner=" + mIsOwner + ", mIsAdmin=" + mIsAdmin +
", mIsGuest=" + mIsGuest + ", mIsGuest=" + mIsGuest +
'}'; '}';
} }