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
This commit is contained in:
Remi NGUYEN VAN
2021-01-15 23:42:00 +09:00
parent a1495b8c6a
commit ad78bf1f22

View File

@@ -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;
}
listBuilder = listBuilder.append(exclDomain.trim());
trimmedExclList.add(exclDomain.trim());
}
exclSpec = listBuilder.toString();
}
if (android.net.Proxy.validate(hostName, Integer.toString(port), exclSpec)
!= android.net.Proxy.PROXY_VALID) throw new IllegalArgumentException();
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();
}
return new Pair<>(hostSpec, exclSpec);
return new Pair<>(hostName + ":" + port, TextUtils.join(",", trimmedExclList));
}
/**