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

Commit b67c420a authored by Stephanie Bak's avatar Stephanie Bak Committed by Android (Google) Code Review
Browse files

Merge "Replace SSID String with WifiSsid"

parents 135c992b 22caa6fb
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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
+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;
@@ -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();
+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));
    }