Merge "Guard the usage of PacProxyManager when it is not supported by the device." am: 76f61bb2e8 am: 89c7b7db4e

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2623371

Change-Id: If09f3be68f63c610e4bb5e01ec9bc8e0fe735ea8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Abdelrahman Ibrahim
2023-06-20 17:07:18 +00:00
committed by Automerger Merge Worker
2 changed files with 18 additions and 7 deletions

View File

@@ -86,6 +86,7 @@ public class ProxyTracker {
private final Handler mConnectivityServiceHandler;
@Nullable
private final PacProxyManager mPacProxyManager;
private class PacProxyInstalledListener implements PacProxyManager.PacProxyInstalledListener {
@@ -109,9 +110,11 @@ public class ProxyTracker {
mConnectivityServiceHandler = connectivityServiceInternalHandler;
mPacProxyManager = context.getSystemService(PacProxyManager.class);
PacProxyInstalledListener listener = new PacProxyInstalledListener(pacChangedEvent);
mPacProxyManager.addPacProxyInstalledListener(
if (mPacProxyManager != null) {
PacProxyInstalledListener listener = new PacProxyInstalledListener(pacChangedEvent);
mPacProxyManager.addPacProxyInstalledListener(
mConnectivityServiceHandler::post, listener);
}
}
// Convert empty ProxyInfo's to null as null-checks are used to determine if proxies are present
@@ -205,7 +208,7 @@ public class ProxyTracker {
mGlobalProxy = proxyProperties;
}
if (!TextUtils.isEmpty(pacFileUrl)) {
if (!TextUtils.isEmpty(pacFileUrl) && mPacProxyManager != null) {
mConnectivityServiceHandler.post(
() -> mPacProxyManager.setCurrentProxyScriptUrl(proxyProperties));
}
@@ -251,7 +254,10 @@ public class ProxyTracker {
final ProxyInfo defaultProxy = getDefaultProxy();
final ProxyInfo proxyInfo = null != defaultProxy ?
defaultProxy : ProxyInfo.buildDirectProxy("", 0, Collections.emptyList());
mPacProxyManager.setCurrentProxyScriptUrl(proxyInfo);
if (mPacProxyManager != null) {
mPacProxyManager.setCurrentProxyScriptUrl(proxyInfo);
}
if (!shouldSendBroadcast(proxyInfo)) {
return;

View File

@@ -44,12 +44,15 @@ import android.util.Range;
import androidx.test.InstrumentationRegistry;
import com.android.compatibility.common.util.RequiredFeatureRule;
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
import com.android.testutils.DevSdkIgnoreRunner;
import com.android.testutils.TestHttpServer;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -76,6 +79,11 @@ public final class PacProxyManagerTest {
private ServerSocket mServerSocket;
private Instrumentation mInstrumentation;
// Devices without WebView/JavaScript cannot support PAC proxies.
@Rule
public RequiredFeatureRule mRequiredWebviewFeatureRule =
new RequiredFeatureRule(PackageManager.FEATURE_WEBVIEW);
private static final String PAC_FILE = "function FindProxyForURL(url, host)"
+ "{"
+ " return \"PROXY 192.168.0.1:9091\";"
@@ -152,9 +160,6 @@ public final class PacProxyManagerTest {
@AppModeFull(reason = "Instant apps can't bind sockets to localhost for a test proxy server")
@Test
public void testSetCurrentProxyScriptUrl() throws Exception {
// Devices without WebView/JavaScript cannot support PAC proxies
assumeTrue(mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WEBVIEW));
// Register a PacProxyInstalledListener
final TestPacProxyInstalledListener listener = new TestPacProxyInstalledListener();
final Executor executor = (Runnable r) -> r.run();