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:
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user