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

Commit ad78bf1f authored by Remi NGUYEN VAN's avatar Remi NGUYEN VAN
Browse files

Remove hidden API usage of Proxy.validate

Proxy is planned to move to the connectivity module, so framework
classes like DevicePolicyManager cannot depend on its private symbols.

Replace usage of ProxyInfo.validate by the equivalent isValid method on
ProxyInfo.

Bug: 174436414
Test: atest DevicePolicyManagerTest#testGetProxyParameters
Change-Id: I6da49a34c9893d07ef7cbee6a7386c9258839467
parent a1495b8c
Loading
Loading
Loading
Loading
+12 −17
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ import android.security.keystore.StrongBoxUnavailableException;
import android.service.restrictions.RestrictionsReceiver;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.Log;
import android.util.Pair;
@@ -4548,29 +4549,23 @@ public class DevicePolicyManager {
        InetSocketAddress sa = (InetSocketAddress) proxySpec.address();
        String hostName = sa.getHostName();
        int port = sa.getPort();
        StringBuilder hostBuilder = new StringBuilder();
        final String hostSpec = hostBuilder.append(hostName)
                .append(":").append(Integer.toString(port)).toString();
        final String exclSpec;
        final List<String> trimmedExclList;
        if (exclusionList == null) {
            exclSpec = "";
            trimmedExclList = Collections.emptyList();
        } else {
            StringBuilder listBuilder = new StringBuilder();
            boolean firstDomain = true;
            trimmedExclList = new ArrayList<>(exclusionList.size());
            for (String exclDomain : exclusionList) {
                if (!firstDomain) {
                    listBuilder = listBuilder.append(",");
                } else {
                    firstDomain = false;
                trimmedExclList.add(exclDomain.trim());
            }
                listBuilder = listBuilder.append(exclDomain.trim());
        }
            exclSpec = listBuilder.toString();
        final ProxyInfo info = ProxyInfo.buildDirectProxy(hostName, port, trimmedExclList);
        // The hostSpec is built assuming that there is a specified port and hostname,
        // but ProxyInfo.isValid() accepts 0 / empty as unspecified: also reject them.
        if (port == 0 || TextUtils.isEmpty(hostName) || !info.isValid()) {
            throw new IllegalArgumentException();
        }
        if (android.net.Proxy.validate(hostName, Integer.toString(port), exclSpec)
                != android.net.Proxy.PROXY_VALID) throw new IllegalArgumentException();
        return new Pair<>(hostSpec, exclSpec);
        return new Pair<>(hostName + ":" + port, TextUtils.join(",", trimmedExclList));
    }
    /**