Disable VPN prefs for restriction or lockdown case

Change-Id: I2fcf84876bf23b92cdcd00ce93514106914d0c29
This commit is contained in:
Robin Lee
2016-01-29 13:04:04 +00:00
parent 815665a14d
commit cac0dddd2a

View File

@@ -223,6 +223,8 @@ public class VpnSettings extends SettingsPreferenceFragment implements
final List<LegacyVpnInfo> connectedLegacyVpns = getConnectedLegacyVpns(); final List<LegacyVpnInfo> connectedLegacyVpns = getConnectedLegacyVpns();
final List<AppVpnInfo> connectedAppVpns = getConnectedAppVpns(); final List<AppVpnInfo> connectedAppVpns = getConnectedAppVpns();
final Set<Integer> readOnlyUsers = getReadOnlyUserProfiles();
// Refresh the PreferenceGroup which lists VPNs // Refresh the PreferenceGroup which lists VPNs
getActivity().runOnUiThread(new Runnable() { getActivity().runOnUiThread(new Runnable() {
@Override @Override
@@ -233,11 +235,13 @@ public class VpnSettings extends SettingsPreferenceFragment implements
for (VpnProfile profile : vpnProfiles) { for (VpnProfile profile : vpnProfiles) {
ConfigPreference p = findOrCreatePreference(profile); ConfigPreference p = findOrCreatePreference(profile);
p.setState(ConfigPreference.STATE_NONE); p.setState(ConfigPreference.STATE_NONE);
p.setEnabled(!readOnlyUsers.contains(UserHandle.myUserId()));
updates.add(p); updates.add(p);
} }
for (AppVpnInfo app : vpnApps) { for (AppVpnInfo app : vpnApps) {
AppPreference p = findOrCreatePreference(app); AppPreference p = findOrCreatePreference(app);
p.setState(AppPreference.STATE_DISCONNECTED); p.setState(AppPreference.STATE_DISCONNECTED);
p.setEnabled(!readOnlyUsers.contains(app.userId));
updates.add(p); updates.add(p);
} }
@@ -417,6 +421,19 @@ public class VpnSettings extends SettingsPreferenceFragment implements
return connections; return connections;
} }
@WorkerThread
private Set<Integer> getReadOnlyUserProfiles() {
Set<Integer> result = new ArraySet<>();
for (UserHandle profile : mUserManager.getUserProfiles()) {
final int profileId = profile.getIdentifier();
if (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN, profile)
|| mConnectivityManager.getAlwaysOnVpnPackageForUser(profileId) != null) {
result.add(profileId);
}
}
return result;
}
static List<AppVpnInfo> getVpnApps(Context context, boolean includeProfiles) { static List<AppVpnInfo> getVpnApps(Context context, boolean includeProfiles) {
List<AppVpnInfo> result = Lists.newArrayList(); List<AppVpnInfo> result = Lists.newArrayList();