summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Stephanie Bak <dasol@google.com> 2022-02-04 15:59:37 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-02-04 15:59:37 +0000
commitb67c420a0c37ab865351d27e4342f149f5387d9b (patch)
tree5e4cf218da5d43326e6aeba3a7dc0effcec45746
parent135c992b0e3aa379c0dd27d3afa65a98a9568ec7 (diff)
parent22caa6fb93fec147c7811981eb80f0ae04550a87 (diff)
Merge "Replace SSID String with WifiSsid"
-rw-r--r--core/api/current.txt6
-rw-r--r--core/java/android/app/admin/DevicePolicyManager.java24
-rw-r--r--core/java/android/app/admin/WifiSsidPolicy.java19
-rw-r--r--services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java28
4 files changed, 53 insertions, 24 deletions
diff --git a/core/api/current.txt b/core/api/current.txt
index ab1805890215..da14dfeec5c8 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -7933,11 +7933,11 @@ package android.app.admin {
}
public final class WifiSsidPolicy implements android.os.Parcelable {
- method @NonNull public static android.app.admin.WifiSsidPolicy createAllowlistPolicy(@NonNull java.util.Set<java.lang.String>);
- method @NonNull public static android.app.admin.WifiSsidPolicy createDenylistPolicy(@NonNull java.util.Set<java.lang.String>);
+ method @NonNull public static android.app.admin.WifiSsidPolicy createAllowlistPolicy(@NonNull java.util.Set<android.net.wifi.WifiSsid>);
+ method @NonNull public static android.app.admin.WifiSsidPolicy createDenylistPolicy(@NonNull java.util.Set<android.net.wifi.WifiSsid>);
method public int describeContents();
method public int getPolicyType();
- method @NonNull public java.util.Set<java.lang.String> getSsids();
+ method @NonNull public java.util.Set<android.net.wifi.WifiSsid> getSsids();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.WifiSsidPolicy> CREATOR;
field public static final int WIFI_SSID_POLICY_TYPE_ALLOWLIST = 0; // 0x0
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index a709afe9910d..4704a24d2ca5 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -59,6 +59,7 @@ import android.graphics.drawable.Drawable;
import android.net.PrivateDnsConnectivityChecker;
import android.net.ProxyInfo;
import android.net.Uri;
+import android.net.wifi.WifiSsid;
import android.nfc.NfcAdapter;
import android.os.Binder;
import android.os.Build;
@@ -111,6 +112,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.net.InetSocketAddress;
import java.net.Proxy;
+import java.nio.charset.StandardCharsets;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.NoSuchAlgorithmException;
@@ -14909,10 +14911,14 @@ public class DevicePolicyManager {
mService.setSsidAllowlist(new ArrayList<>());
} else {
int policyType = policy.getPolicyType();
+ List<String> ssidList = new ArrayList<>();
+ for (WifiSsid ssid : policy.getSsids()) {
+ ssidList.add(new String(ssid.getBytes(), StandardCharsets.UTF_8));
+ }
if (policyType == WifiSsidPolicy.WIFI_SSID_POLICY_TYPE_ALLOWLIST) {
- mService.setSsidAllowlist(new ArrayList<>(policy.getSsids()));
+ mService.setSsidAllowlist(ssidList);
} else {
- mService.setSsidDenylist(new ArrayList<>(policy.getSsids()));
+ mService.setSsidDenylist(ssidList);
}
}
} catch (RemoteException e) {
@@ -14938,11 +14944,21 @@ public class DevicePolicyManager {
try {
List<String> allowlist = mService.getSsidAllowlist();
if (!allowlist.isEmpty()) {
- return WifiSsidPolicy.createAllowlistPolicy(new ArraySet<>(allowlist));
+ List<WifiSsid> wifiSsidAllowlist = new ArrayList<>();
+ for (String ssid : allowlist) {
+ wifiSsidAllowlist.add(
+ WifiSsid.fromBytes(ssid.getBytes(StandardCharsets.UTF_8)));
+ }
+ return WifiSsidPolicy.createAllowlistPolicy(new ArraySet<>(wifiSsidAllowlist));
}
List<String> denylist = mService.getSsidDenylist();
if (!denylist.isEmpty()) {
- return WifiSsidPolicy.createDenylistPolicy(new ArraySet<>(denylist));
+ List<WifiSsid> wifiSsidDenylist = new ArrayList<>();
+ for (String ssid : denylist) {
+ wifiSsidDenylist.add(
+ WifiSsid.fromBytes(ssid.getBytes(StandardCharsets.UTF_8)));
+ }
+ return WifiSsidPolicy.createDenylistPolicy(new ArraySet<>(wifiSsidDenylist));
}
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
diff --git a/core/java/android/app/admin/WifiSsidPolicy.java b/core/java/android/app/admin/WifiSsidPolicy.java
index 37150179cc68..a7046d41704a 100644
--- a/core/java/android/app/admin/WifiSsidPolicy.java
+++ b/core/java/android/app/admin/WifiSsidPolicy.java
@@ -18,6 +18,7 @@ package android.app.admin;
import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.net.wifi.WifiSsid;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.ArraySet;
@@ -70,25 +71,25 @@ public final class WifiSsidPolicy implements Parcelable {
public @interface WifiSsidPolicyType {}
private @WifiSsidPolicyType int mPolicyType;
- private ArraySet<String> mSsids;
+ private ArraySet<WifiSsid> mSsids;
- private WifiSsidPolicy(@WifiSsidPolicyType int policyType, @NonNull Set<String> ssids) {
+ private WifiSsidPolicy(@WifiSsidPolicyType int policyType, @NonNull Set<WifiSsid> ssids) {
mPolicyType = policyType;
mSsids = new ArraySet<>(ssids);
}
private WifiSsidPolicy(Parcel in) {
mPolicyType = in.readInt();
- mSsids = (ArraySet<String>) in.readArraySet(null);
+ mSsids = (ArraySet<WifiSsid>) in.readArraySet(null);
}
/**
* Create the allowlist Wi-Fi SSID Policy.
*
- * @param ssids allowlist of SSIDs in UTF-8 without double quotes format
+ * @param ssids allowlist of {@link WifiSsid}
* @throws IllegalArgumentException if the input ssids list is empty
*/
@NonNull
- public static WifiSsidPolicy createAllowlistPolicy(@NonNull Set<String> ssids) {
+ public static WifiSsidPolicy createAllowlistPolicy(@NonNull Set<WifiSsid> ssids) {
if (ssids.isEmpty()) {
throw new IllegalArgumentException("SSID list cannot be empty");
}
@@ -98,11 +99,11 @@ public final class WifiSsidPolicy implements Parcelable {
/**
* Create the denylist Wi-Fi SSID Policy.
*
- * @param ssids denylist of SSIDs in UTF-8 without double quotes format
+ * @param ssids denylist of {@link WifiSsid}
* @throws IllegalArgumentException if the input ssids list is empty
*/
@NonNull
- public static WifiSsidPolicy createDenylistPolicy(@NonNull Set<String> ssids) {
+ public static WifiSsidPolicy createDenylistPolicy(@NonNull Set<WifiSsid> ssids) {
if (ssids.isEmpty()) {
throw new IllegalArgumentException("SSID list cannot be empty");
}
@@ -110,10 +111,10 @@ public final class WifiSsidPolicy implements Parcelable {
}
/**
- * Returns the set of SSIDs in UTF-8 without double quotes format.
+ * Returns the set of {@link WifiSsid}
*/
@NonNull
- public Set<String> getSsids() {
+ public Set<WifiSsid> getSsids() {
return mSsids;
}
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index c877bd141220..b96bb23f8951 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -120,6 +120,7 @@ import android.graphics.Color;
import android.hardware.usb.UsbManager;
import android.net.ProfileNetworkPreference;
import android.net.Uri;
+import android.net.wifi.WifiSsid;
import android.os.Build;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
@@ -164,6 +165,7 @@ import org.mockito.stubbing.Answer;
import java.io.File;
import java.net.InetSocketAddress;
import java.net.Proxy;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -8334,7 +8336,8 @@ public class DevicePolicyManagerTest extends DpmTestBase {
@Test
public void testSetSsidAllowlist_noDeviceOwnerOrPoOfOrgOwnedDevice() {
- final Set<String> ssids = Collections.singleton("ssid1");
+ final Set<WifiSsid> ssids = new ArraySet<>(
+ Arrays.asList(WifiSsid.fromBytes("ssid1".getBytes(StandardCharsets.UTF_8))));
WifiSsidPolicy policy = WifiSsidPolicy.createAllowlistPolicy(ssids);
assertThrows(SecurityException.class, () -> dpm.setWifiSsidPolicy(policy));
}
@@ -8343,7 +8346,8 @@ public class DevicePolicyManagerTest extends DpmTestBase {
public void testSetSsidAllowlist_asDeviceOwner() throws Exception {
setDeviceOwner();
- final Set<String> ssids = Collections.singleton("ssid1");
+ final Set<WifiSsid> ssids = new ArraySet<>(
+ Arrays.asList(WifiSsid.fromBytes("ssid1".getBytes(StandardCharsets.UTF_8))));
WifiSsidPolicy policy = WifiSsidPolicy.createAllowlistPolicy(ssids);
dpm.setWifiSsidPolicy(policy);
assertThat(dpm.getWifiSsidPolicy().getSsids()).isEqualTo(ssids);
@@ -8359,7 +8363,10 @@ public class DevicePolicyManagerTest extends DpmTestBase {
configureProfileOwnerOfOrgOwnedDevice(admin1, managedProfileUserId);
mContext.binder.callingUid = managedProfileAdminUid;
- final Set<String> ssids = new ArraySet<>(Arrays.asList("ssid1", "ssid2", "ssid3"));
+ final Set<WifiSsid> ssids = new ArraySet<>(
+ Arrays.asList(WifiSsid.fromBytes("ssid1".getBytes(StandardCharsets.UTF_8)),
+ WifiSsid.fromBytes("ssid2".getBytes(StandardCharsets.UTF_8)),
+ WifiSsid.fromBytes("ssid3".getBytes(StandardCharsets.UTF_8))));
WifiSsidPolicy policy = WifiSsidPolicy.createAllowlistPolicy(ssids);
dpm.setWifiSsidPolicy(policy);
assertThat(dpm.getWifiSsidPolicy().getSsids()).isEqualTo(ssids);
@@ -8371,14 +8378,15 @@ public class DevicePolicyManagerTest extends DpmTestBase {
public void testSetSsidAllowlist_emptyList() throws Exception {
setDeviceOwner();
- final Set<String> ssids = new ArraySet<>();
+ final Set<WifiSsid> ssids = new ArraySet<>();
assertThrows(IllegalArgumentException.class,
() -> WifiSsidPolicy.createAllowlistPolicy(ssids));
}
@Test
public void testSetSsidDenylist_noDeviceOwnerOrPoOfOrgOwnedDevice() {
- final Set<String> ssids = Collections.singleton("ssid1");
+ final Set<WifiSsid> ssids = new ArraySet<>(
+ Arrays.asList(WifiSsid.fromBytes("ssid1".getBytes(StandardCharsets.UTF_8))));
WifiSsidPolicy policy = WifiSsidPolicy.createDenylistPolicy(ssids);
assertThrows(SecurityException.class, () -> dpm.setWifiSsidPolicy(policy));
}
@@ -8387,7 +8395,8 @@ public class DevicePolicyManagerTest extends DpmTestBase {
public void testSetSsidDenylist_asDeviceOwner() throws Exception {
setDeviceOwner();
- final Set<String> ssids = Collections.singleton("ssid1");
+ final Set<WifiSsid> ssids = new ArraySet<>(
+ Arrays.asList(WifiSsid.fromBytes("ssid1".getBytes(StandardCharsets.UTF_8))));
WifiSsidPolicy policy = WifiSsidPolicy.createDenylistPolicy(ssids);
dpm.setWifiSsidPolicy(policy);
assertThat(dpm.getWifiSsidPolicy().getSsids()).isEqualTo(ssids);
@@ -8403,7 +8412,10 @@ public class DevicePolicyManagerTest extends DpmTestBase {
configureProfileOwnerOfOrgOwnedDevice(admin1, managedProfileUserId);
mContext.binder.callingUid = managedProfileAdminUid;
- final Set<String> ssids = new ArraySet<>(Arrays.asList("ssid1", "ssid2", "ssid3"));
+ final Set<WifiSsid> ssids = new ArraySet<>(
+ Arrays.asList(WifiSsid.fromBytes("ssid1".getBytes(StandardCharsets.UTF_8)),
+ WifiSsid.fromBytes("ssid2".getBytes(StandardCharsets.UTF_8)),
+ WifiSsid.fromBytes("ssid3".getBytes(StandardCharsets.UTF_8))));
WifiSsidPolicy policy = WifiSsidPolicy.createDenylistPolicy(ssids);
dpm.setWifiSsidPolicy(policy);
assertThat(dpm.getWifiSsidPolicy().getSsids()).isEqualTo(ssids);
@@ -8415,7 +8427,7 @@ public class DevicePolicyManagerTest extends DpmTestBase {
public void testSetSsidDenylist_emptyList() throws Exception {
setDeviceOwner();
- final Set<String> ssids = new ArraySet<>();
+ final Set<WifiSsid> ssids = new ArraySet<>();
assertThrows(IllegalArgumentException.class,
() -> WifiSsidPolicy.createDenylistPolicy(ssids));
}