Merge "Use formal API for ActivityThread to set proxy" am: 394170f9cc am: b70ef11f73

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1512874

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ifae677c9751d618617083696a89252f11bd222b4
This commit is contained in:
Treehugger Robot
2021-02-19 07:06:33 +00:00
committed by Automerger Merge Worker
4 changed files with 41 additions and 26 deletions

View File

@@ -36,6 +36,10 @@ package android.net {
field public static final int TRANSPORT_TEST = 7; // 0x7 field public static final int TRANSPORT_TEST = 7; // 0x7
} }
public final class Proxy {
method public static void setHttpProxyConfiguration(@Nullable android.net.ProxyInfo);
}
public final class TcpRepairWindow { public final class TcpRepairWindow {
ctor public TcpRepairWindow(int, int, int, int, int, int); ctor public TcpRepairWindow(int, int, int, int, int, int);
field public final int maxWindow; field public final int maxWindow;

View File

@@ -88,7 +88,6 @@ import android.graphics.ImageDecoder;
import android.hardware.display.DisplayManagerGlobal; import android.hardware.display.DisplayManagerGlobal;
import android.inputmethodservice.InputMethodService; import android.inputmethodservice.InputMethodService;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.IConnectivityManager;
import android.net.Proxy; import android.net.Proxy;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
@@ -6546,25 +6545,6 @@ public final class ActivityThread extends ClientTransactionHandler {
HardwareRenderer.setDebuggingEnabled(isAppDebuggable || Build.IS_DEBUGGABLE); HardwareRenderer.setDebuggingEnabled(isAppDebuggable || Build.IS_DEBUGGABLE);
HardwareRenderer.setPackageName(data.appInfo.packageName); HardwareRenderer.setPackageName(data.appInfo.packageName);
/**
* Initialize the default http proxy in this process for the reasons we set the time zone.
*/
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "Setup proxies");
final IBinder b = ServiceManager.getService(Context.CONNECTIVITY_SERVICE);
if (b != null) {
// In pre-boot mode (doing initial launch to collect password), not
// all system is up. This includes the connectivity service, so don't
// crash if we can't get it.
final IConnectivityManager service = IConnectivityManager.Stub.asInterface(b);
try {
Proxy.setHttpProxySystemProperty(service.getProxyForNetwork(null));
} catch (RemoteException e) {
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
throw e.rethrowFromSystemServer();
}
}
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
// Instrumentation info affects the class loader, so load it before // Instrumentation info affects the class loader, so load it before
// setting up the app context. // setting up the app context.
final InstrumentationInfo ii; final InstrumentationInfo ii;
@@ -6603,6 +6583,23 @@ public final class ActivityThread extends ClientTransactionHandler {
updateLocaleListFromAppContext(appContext, updateLocaleListFromAppContext(appContext,
mResourcesManager.getConfiguration().getLocales()); mResourcesManager.getConfiguration().getLocales());
// Initialize the default http proxy in this process.
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "Setup proxies");
try {
// In pre-boot mode (doing initial launch to collect password), not all system is up.
// This includes the connectivity service, so trying to obtain ConnectivityManager at
// that point would return null. Check whether the ConnectivityService is available, and
// avoid crashing with a NullPointerException if it is not.
final IBinder b = ServiceManager.getService(Context.CONNECTIVITY_SERVICE);
if (b != null) {
final ConnectivityManager cm =
appContext.getSystemService(ConnectivityManager.class);
Proxy.setHttpProxyConfiguration(cm.getDefaultProxy());
}
} finally {
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
}
if (!Process.isIsolated()) { if (!Process.isIsolated()) {
final int oldMask = StrictMode.allowThreadDiskWritesMask(); final int oldMask = StrictMode.allowThreadDiskWritesMask();
try { try {
@@ -7429,8 +7426,8 @@ public final class ActivityThread extends ClientTransactionHandler {
} }
public static void updateHttpProxy(@NonNull Context context) { public static void updateHttpProxy(@NonNull Context context) {
final ConnectivityManager cm = ConnectivityManager.from(context); final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
Proxy.setHttpProxySystemProperty(cm.getDefaultProxy()); Proxy.setHttpProxyConfiguration(cm.getDefaultProxy());
} }
@UnsupportedAppUsage @UnsupportedAppUsage

View File

@@ -4606,7 +4606,7 @@ public class ConnectivityManager {
// Set HTTP proxy system properties to match network. // Set HTTP proxy system properties to match network.
// TODO: Deprecate this static method and replace it with a non-static version. // TODO: Deprecate this static method and replace it with a non-static version.
try { try {
Proxy.setHttpProxySystemProperty(getInstance().getDefaultProxy()); Proxy.setHttpProxyConfiguration(getInstance().getDefaultProxy());
} catch (SecurityException e) { } catch (SecurityException e) {
// The process doesn't have ACCESS_NETWORK_STATE, so we can't fetch the proxy. // The process doesn't have ACCESS_NETWORK_STATE, so we can't fetch the proxy.
Log.e(TAG, "Can't set proxy properties", e); Log.e(TAG, "Can't set proxy properties", e);

View File

@@ -16,8 +16,10 @@
package android.net; package android.net;
import android.annotation.Nullable;
import android.annotation.SdkConstant; import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage; import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context; import android.content.Context;
import android.os.Build; import android.os.Build;
@@ -185,7 +187,19 @@ public final class Proxy {
/** @hide */ /** @hide */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
public static final void setHttpProxySystemProperty(ProxyInfo p) { @Deprecated
public static void setHttpProxySystemProperty(ProxyInfo p) {
setHttpProxyConfiguration(p);
}
/**
* Set HTTP proxy configuration for the process to match the provided ProxyInfo.
*
* If the provided ProxyInfo is null, the proxy configuration will be cleared.
* @hide
*/
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
public static void setHttpProxyConfiguration(@Nullable ProxyInfo p) {
String host = null; String host = null;
String port = null; String port = null;
String exclList = null; String exclList = null;
@@ -196,11 +210,11 @@ public final class Proxy {
exclList = ProxyUtils.exclusionListAsString(p.getExclusionList()); exclList = ProxyUtils.exclusionListAsString(p.getExclusionList());
pacFileUrl = p.getPacFileUrl(); pacFileUrl = p.getPacFileUrl();
} }
setHttpProxySystemProperty(host, port, exclList, pacFileUrl); setHttpProxyConfiguration(host, port, exclList, pacFileUrl);
} }
/** @hide */ /** @hide */
public static final void setHttpProxySystemProperty(String host, String port, String exclList, public static void setHttpProxyConfiguration(String host, String port, String exclList,
Uri pacFileUrl) { Uri pacFileUrl) {
if (exclList != null) exclList = exclList.replace(",", "|"); if (exclList != null) exclList = exclList.replace(",", "|");
if (false) Log.d(TAG, "setHttpProxySystemProperty :"+host+":"+port+" - "+exclList); if (false) Log.d(TAG, "setHttpProxySystemProperty :"+host+":"+port+" - "+exclList);