OSDN Git Service

Part2 - Don't add padlock if the restriction is not set by admin.
authorSudheer Shanka <sudheersai@google.com>
Thu, 11 Feb 2016 17:17:21 +0000 (17:17 +0000)
committerSudheer Shanka <sudheersai@google.com>
Fri, 19 Feb 2016 19:24:34 +0000 (19:24 +0000)
Bug: 26687435
Change-Id: I85ef42e1ff1216791d1393a975e8559191b3781f

src/com/android/settings/notification/SoundSettings.java
src/com/android/settings/users/UserSettings.java

index 4eb4f7d..274ce59 100644 (file)
@@ -169,7 +169,9 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab
         } catch (IllegalArgumentException ignored) {
             isCellBroadcastAppLinkEnabled = false;  // CMAS app not installed
         }
-        if (!mUserManager.isAdminUser() || !isCellBroadcastAppLinkEnabled) {
+        if (!mUserManager.isAdminUser() || !isCellBroadcastAppLinkEnabled ||
+                RestrictedLockUtils.hasBaseUserRestriction(mContext,
+                        UserManager.DISALLOW_CONFIG_CELL_BROADCASTS, UserHandle.myUserId())) {
             removePreference(KEY_CELL_BROADCAST_SETTINGS);
         }
         initRingtones();
@@ -193,12 +195,15 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab
 
         final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(mContext,
                 UserManager.DISALLOW_ADJUST_VOLUME, UserHandle.myUserId());
+        final boolean hasBaseRestriction = RestrictedLockUtils.hasBaseUserRestriction(mContext,
+                UserManager.DISALLOW_ADJUST_VOLUME, UserHandle.myUserId());
         for (String key : RESTRICTED_KEYS) {
             Preference pref = findPreference(key);
-            if (pref instanceof RestrictedPreference) {
+            if (pref != null) {
+                pref.setEnabled(!hasBaseRestriction);
+            }
+            if (pref instanceof RestrictedPreference && !hasBaseRestriction) {
                 ((RestrictedPreference) pref).setDisabledByAdmin(admin);
-            } else if (pref != null) {
-                pref.setEnabled(admin == null);
             }
         }
         RestrictedPreference broadcastSettingsPref = (RestrictedPreference) findPreference(
index 8ff26f7..a871297 100644 (file)
@@ -767,7 +767,9 @@ public class UserSettings extends SettingsPreferenceFragment
         }
 
         // Check if Guest tile should be added.
-        if (!mUserCaps.mIsGuest && (mUserCaps.mCanAddGuest || mUserCaps.mDisallowAddUser)) {
+        if (!mUserCaps.mIsGuest && (mUserCaps.mCanAddGuest ||
+                mUserCaps.mDisallowAddUserSetByAdmin)) {
+            // Add a virtual Guest user for guest defaults
             UserPreference pref = new UserPreference(getPrefContext(), null,
                     UserPreference.USERID_GUEST_DEFAULTS,
                     mUserCaps.mIsAdmin && voiceCapable? this : null /* settings icon handler */,
@@ -810,7 +812,7 @@ public class UserSettings extends SettingsPreferenceFragment
         }
 
         // Append Add user to the end of the list
-        if (mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUser) {
+        if (mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin) {
             boolean moreUsers = mUserManager.canAddMoreUsers();
             mAddUser.setOrder(Preference.DEFAULT_ORDER);
             preferenceScreen.addPreference(mAddUser);
@@ -825,7 +827,8 @@ public class UserSettings extends SettingsPreferenceFragment
                         mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
             }
         }
-        if (mUserCaps.mIsAdmin) {
+        if (mUserCaps.mIsAdmin &&
+                (!mUserCaps.mDisallowAddUser || mUserCaps.mDisallowAddUserSetByAdmin)) {
             mLockScreenSettings.setOrder(Preference.DEFAULT_ORDER);
             preferenceScreen.addPreference(mLockScreenSettings);
             mAddUserWhenLocked.setChecked(Settings.Global.getInt(getContentResolver(),
@@ -1006,6 +1009,7 @@ public class UserSettings extends SettingsPreferenceFragment
         boolean mIsGuest;
         boolean mCanAddGuest;
         boolean mDisallowAddUser;
+        boolean mDisallowAddUserSetByAdmin;
         EnforcedAdmin mEnforcedAdmin;
 
         private UserCapabilities() {}
@@ -1023,7 +1027,12 @@ public class UserSettings extends SettingsPreferenceFragment
             caps.mIsAdmin = myUserInfo.isAdmin();
             caps.mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(context,
                     UserManager.DISALLOW_ADD_USER, UserHandle.myUserId());
-            caps.mDisallowAddUser = (caps.mEnforcedAdmin != null);
+            final boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction(
+                    context, UserManager.DISALLOW_ADD_USER, UserHandle.myUserId());
+            caps.mDisallowAddUserSetByAdmin =
+                    caps.mEnforcedAdmin != null && !hasBaseUserRestriction;
+            caps.mDisallowAddUser =
+                    (caps.mEnforcedAdmin != null || hasBaseUserRestriction);
             if (!caps.mIsAdmin || UserManager.getMaxSupportedUsers() < 2
                     || !UserManager.supportsMultipleUsers()
                     || caps.mDisallowAddUser) {
@@ -1103,7 +1112,7 @@ public class UserSettings extends SettingsPreferenceFragment
                     data.screenTitle = res.getString(R.string.user_settings_title);
                     result.add(data);
 
-                    if (userCaps.mCanAddUser || userCaps.mDisallowAddUser) {
+                    if (userCaps.mCanAddUser || userCaps.mDisallowAddUserSetByAdmin) {
                         data = new SearchIndexableRaw(context);
                         data.title = res.getString(userCaps.mCanAddRestrictedProfile ?
                                 R.string.user_add_user_or_profile_menu