summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreric_kuang <eric_kuang@realsil.com.cn>2023-12-07 17:06:12 +0800
committerGregory Montoir <gmontoir@google.com>2023-12-11 08:26:47 +0800
commit85a0e6835b9f797fe4c521f30f416919d2edddff (patch)
tree7e3c083eebe74808f74c03dc926ee3ff8d1810b2
parente6920c7ede6abcf134750582b732cba13c11993b (diff)
downloadTvSettings-85a0e6835b9f797fe4c521f30f416919d2edddff.tar.gz
Check UserManager.DISALLOW_ADD_WIFI_CONFIG restriction when network fragment is shown.
If UserManager.DISALLOW_ADD_WIFI_CONFIG restriction is set, user can view wifi lists but cannot connect a new wifi. Test: Manual test CTS Verifier: com.android.cts.verifier.managedprovisioning.DeviceOwnerPositiveTestActivity#Disallow adding Wifi config com.android.cts.verifier.managedprovisioning.DeviceOwnerPositiveTestActivity#Disallow configuring Wifi Bug: 271948312 Bug: 313360020 Change-Id: I8af554f37b07140996fe62a1effa3b08fc786133
-rw-r--r--Settings/src/com/android/tv/settings/RestrictedPreferenceAdapter.java39
-rw-r--r--Settings/src/com/android/tv/settings/connectivity/NetworkFragment.java12
2 files changed, 43 insertions, 8 deletions
diff --git a/Settings/src/com/android/tv/settings/RestrictedPreferenceAdapter.java b/Settings/src/com/android/tv/settings/RestrictedPreferenceAdapter.java
index 024965d58..a483ec685 100644
--- a/Settings/src/com/android/tv/settings/RestrictedPreferenceAdapter.java
+++ b/Settings/src/com/android/tv/settings/RestrictedPreferenceAdapter.java
@@ -56,9 +56,10 @@ public class RestrictedPreferenceAdapter<T extends Preference> {
private final Context mContext;
private final T mOriginalPreference;
private final List<String> mUserRestrictions;
- private final boolean mRestricted;
- private final EnforcedAdmin mEnforcingAdmin;
- private final RestrictedPreference mRestrictedPreference;
+ private boolean mRestricted;
+ private EnforcedAdmin mEnforcingAdmin;
+ private RestrictedPreference mRestrictedPreference;
+ private boolean mIsApSaved;
public RestrictedPreferenceAdapter(Context context, T originalPreference,
List<String> userRestrictions) {
@@ -125,6 +126,15 @@ public class RestrictedPreferenceAdapter<T extends Preference> {
return false;
}
+ /**
+ * Returns {@code true} if given restriction applies to this preference,
+ * {@code false} otherwise.
+ */
+ public boolean isRestricted(String restriction) {
+ UserManager userManager = UserManager.get(mContext);
+ return userManager.hasUserRestriction(restriction);
+ }
+
private EnforcedAdmin isRestrictedByAdmin() {
if (mUserRestrictions == null) {
return null;
@@ -156,6 +166,11 @@ public class RestrictedPreferenceAdapter<T extends Preference> {
screen.addPreference(mRestrictedPreference);
}
+ /** Set access point saved or not. */
+ public void setApSaved(boolean saved) {
+ mIsApSaved = saved;
+ }
+
/**
* Returns the preference to be inserted into the preference screen.
*
@@ -164,7 +179,8 @@ public class RestrictedPreferenceAdapter<T extends Preference> {
* the original preference.
*/
public Preference getPreference() {
- if (mRestrictedPreference != null) {
+ if (mRestrictedPreference != null && (isRestricted(UserManager.DISALLOW_CONFIG_WIFI)
+ || (isRestricted(UserManager.DISALLOW_ADD_WIFI_CONFIG) && !mIsApSaved))) {
return mRestrictedPreference;
}
@@ -194,8 +210,19 @@ public class RestrictedPreferenceAdapter<T extends Preference> {
* Call this after making direct changes to the original preference.
*/
public void updatePreference() {
- if (mRestricted) {
+ mRestricted = isRestricted();
+ mEnforcingAdmin = isRestrictedByAdmin();
+ if (mEnforcingAdmin != null) {
+ if (mRestrictedPreference == null) {
+ mRestrictedPreference = new RestrictedPreference(mContext);
+ }
+ } else {
+ mRestrictedPreference = null;
+ }
+ if (mRestricted && isRestricted(UserManager.DISALLOW_CONFIG_WIFI)) {
mOriginalPreference.setEnabled(false);
+ } else {
+ mOriginalPreference.setEnabled(true);
}
updateRestrictedPreference();
}
@@ -204,8 +231,8 @@ public class RestrictedPreferenceAdapter<T extends Preference> {
if (mRestrictedPreference == null) {
return;
}
-
mRestrictedPreference.setKey(mOriginalPreference.getKey());
+ mRestrictedPreference.setOrder(mOriginalPreference.getOrder());
mRestrictedPreference.setTitle(mOriginalPreference.getTitle());
mRestrictedPreference.setSummary(mOriginalPreference.getSummary());
mRestrictedPreference.setIcon(mOriginalPreference.getIcon());
diff --git a/Settings/src/com/android/tv/settings/connectivity/NetworkFragment.java b/Settings/src/com/android/tv/settings/connectivity/NetworkFragment.java
index 522d4b501..900963789 100644
--- a/Settings/src/com/android/tv/settings/connectivity/NetworkFragment.java
+++ b/Settings/src/com/android/tv/settings/connectivity/NetworkFragment.java
@@ -58,8 +58,10 @@ import com.android.tv.settings.widget.TvAccessPointPreference;
import com.android.tv.twopanelsettings.slices.SlicePreference;
import com.android.wifitrackerlib.WifiEntry;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
/**
@@ -414,10 +416,15 @@ public class NetworkFragment extends SettingsPreferenceFragment implements
if (restrictedPref == null) {
pref = new TvAccessPointPreference(accessPoint, themedContext, mUserBadgeCache,
false);
+ List<String> userRestrictions = new ArrayList<>();
+ userRestrictions.add(UserManager.DISALLOW_CONFIG_WIFI);
+ userRestrictions.add(UserManager.DISALLOW_ADD_WIFI_CONFIG);
restrictedPref = new RestrictedPreferenceAdapter(themedContext, pref,
- UserManager.DISALLOW_CONFIG_WIFI);
+ userRestrictions);
+ restrictedPref.setApSaved(accessPoint.isSaved());
accessPoint.setTag(restrictedPref);
} else {
+ restrictedPref.setApSaved(accessPoint.isSaved());
toRemove.remove(restrictedPref.getPreference());
pref = restrictedPref.getOriginalPreference();
}
@@ -436,7 +443,8 @@ public class NetworkFragment extends SettingsPreferenceFragment implements
return false;
});
}
- pref.setVisible(!restrictedPref.isRestricted() || accessPoint.isSaved());
+ pref.setVisible(!restrictedPref.isRestricted(UserManager.DISALLOW_CONFIG_WIFI)
+ || accessPoint.isSaved());
pref.setOrder(index++);
pref.setSummary(accessPoint.isActive()? R.string.connected : R.string.not_connected);
restrictedPref.updatePreference();