From 0e43d324af7082229108bfe51c02647d8a07fdeb Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Wed, 7 May 2014 10:19:34 -0700 Subject: [PATCH] Don't allow restricted profile creation for corp/edu owned devices Bug: 14613459 Change-Id: I64dfba35418def8ae8793d7371b8960f5ff5946f --- res/values/strings.xml | 4 ++- res/xml/user_settings.xml | 2 +- .../android/settings/users/UserSettings.java | 25 +++++++++++++++---- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 4c605a4e4c3..d4051cabdf6 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4842,8 +4842,10 @@ Users Users & profiles + + Add user or profile - Add user or profile + Add user Restricted profile diff --git a/res/xml/user_settings.xml b/res/xml/user_settings.xml index 3a0ab742d27..6bbeffa2430 100644 --- a/res/xml/user_settings.xml +++ b/res/xml/user_settings.xml @@ -25,7 +25,7 @@ diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index b218bc74c11..a05aaa955e0 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -129,6 +129,7 @@ public class UserSettings extends RestrictedSettingsFragment private boolean mAddingUser; private boolean mProfileExists; private boolean mEnabled = true; + private boolean mCanAddRestrictedProfile = true; private final Object mUserLock = new Object(); private UserManager mUserManager; @@ -183,15 +184,16 @@ public class UserSettings extends RestrictedSettingsFragment mRemovingUserId = icicle.getInt(SAVE_REMOVING_USER); } } - - mUserManager = (UserManager) getActivity().getSystemService(Context.USER_SERVICE); + final Context context = getActivity(); + mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); if (!mUserManager.supportsMultipleUsers() || Utils.isMonkeyRunning()) { mEnabled = false; return; } + addPreferencesFromResource(R.xml.user_settings); mUserListCategory = (PreferenceGroup) findPreference(KEY_USER_LIST); - mMePreference = new UserPreference(getActivity(), null, UserHandle.myUserId(), + mMePreference = new UserPreference(context, null, UserHandle.myUserId(), mUserManager.isLinkedUser() ? null : this, null); mMePreference.setKey(KEY_USER_ME); mMePreference.setOnPreferenceClickListener(this); @@ -199,9 +201,16 @@ public class UserSettings extends RestrictedSettingsFragment mMePreference.setSummary(R.string.user_owner); } mAddUser = findPreference(KEY_ADD_USER); - mAddUser.setOnPreferenceClickListener(this); if (!mIsOwner || UserManager.getMaxSupportedUsers() < 2) { removePreference(KEY_ADD_USER); + } else { + mAddUser.setOnPreferenceClickListener(this); + DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService( + Context.DEVICE_POLICY_SERVICE); + if (dpm.getDeviceOwner() != null) { + mCanAddRestrictedProfile = false; + mAddUser.setTitle(R.string.user_add_user_menu); + } } loadProfile(); setHasOptionsMenu(true); @@ -771,7 +780,13 @@ public class UserSettings extends RestrictedSettingsFragment } } } else if (pref == mAddUser) { - showDialog(DIALOG_CHOOSE_USER_TYPE); + // If we allow both types, show a picker, otherwise directly go to + // flow for full user. + if (mCanAddRestrictedProfile) { + showDialog(DIALOG_CHOOSE_USER_TYPE); + } else { + onAddUserClicked(USER_TYPE_USER); + } } return false; }