Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22caa6fb authored by Stephanie Bak's avatar Stephanie Bak
Browse files

Replace SSID String with WifiSsid

Bug: 215753949
Test: atest DevicePolicyManagerTest
Change-Id: I74fcb6c3476a5e1b7ac38e7f7c5b3880e3895f30
parent 50103d0a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -7930,11 +7930,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
+20 −4
Original line number Diff line number Diff line
@@ -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;
@@ -14896,10 +14898,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) {
@@ -14925,11 +14931,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();
+10 −9
Original line number Diff line number Diff line
@@ -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;
    }

+20 −8
Original line number Diff line number Diff line
@@ -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));
    }