Merge "Fix: ConnectivityManager methods crashing with SecurityException" into sc-dev

This commit is contained in:
Chalard Jean
2021-07-29 05:55:06 +00:00
committed by Android (Google) Code Review

View File

@@ -369,11 +369,12 @@ public final class ActivityThread extends ClientTransactionHandler
@UnsupportedAppUsage(trackingBug = 176961850, maxTargetSdk = Build.VERSION_CODES.R,
publicAlternatives = "Use {@code Context#getResources()#getConfiguration()} instead.")
Configuration mConfiguration;
@GuardedBy("this")
private boolean mUpdateHttpProxyOnBind = false;
@UnsupportedAppUsage
Application mInitialApplication;
@UnsupportedAppUsage
final ArrayList<Application> mAllApplications
= new ArrayList<Application>();
final ArrayList<Application> mAllApplications = new ArrayList<>();
/**
* Bookkeeping of instantiated backup agents indexed first by user id, then by package name.
* Indexing by user id supports parallel backups across users on system packages as they run in
@@ -1187,8 +1188,18 @@ public final class ActivityThread extends ClientTransactionHandler
}
public void updateHttpProxy() {
ActivityThread.updateHttpProxy(
getApplication() != null ? getApplication() : getSystemContext());
final Application app;
synchronized (ActivityThread.this) {
app = getApplication();
if (null == app) {
// The app is not bound yet. Make a note to update the HTTP proxy when the
// app is bound.
mUpdateHttpProxyOnBind = true;
return;
}
}
// App is present, update the proxy inline.
ActivityThread.updateHttpProxy(app);
}
public void processInBackground() {
@@ -6685,6 +6696,15 @@ public final class ActivityThread extends ClientTransactionHandler
sendMessage(H.SET_CONTENT_CAPTURE_OPTIONS_CALLBACK, data.appInfo.packageName);
mInitialApplication = app;
final boolean updateHttpProxy;
synchronized (this) {
updateHttpProxy = mUpdateHttpProxyOnBind;
// This synchronized block ensures that any subsequent call to updateHttpProxy()
// will see a non-null mInitialApplication.
}
if (updateHttpProxy) {
ActivityThread.updateHttpProxy(app);
}
// don't bring up providers in restricted mode; they may depend on the
// app's custom Application class