Merge "Don't depend directly on AppplicationInfo" into nyc-dev

This commit is contained in:
TreeHugger Robot
2016-06-09 06:22:19 +00:00
committed by Android (Google) Code Review
3 changed files with 19 additions and 19 deletions

View File

@@ -5260,7 +5260,7 @@ public final class ActivityThread {
// code is loaded to prevent issues with instances of TLS objects being created before
// the provider is installed.
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "NetworkSecurityConfigProvider.install");
NetworkSecurityConfigProvider.install(appContext, data.appInfo);
NetworkSecurityConfigProvider.install(appContext);
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
// Continue loading instrumentation.

View File

@@ -29,13 +29,19 @@ public class ManifestConfigSource implements ConfigSource {
private final Object mLock = new Object();
private final Context mContext;
private final ApplicationInfo mInfo;
private final int mApplicationInfoFlags;
private final int mTargetSdkVersion;
private final int mConfigResourceId;
private ConfigSource mConfigSource;
public ManifestConfigSource(Context context, ApplicationInfo info) {
public ManifestConfigSource(Context context) {
mContext = context;
mInfo = info;
// Cache values because ApplicationInfo is mutable and apps do modify it :(
ApplicationInfo info = context.getApplicationInfo();
mApplicationInfoFlags = info.flags;
mTargetSdkVersion = info.targetSdkVersion;
mConfigResourceId = info.networkSecurityConfigRes;
}
@Override
@@ -53,29 +59,24 @@ public class ManifestConfigSource implements ConfigSource {
if (mConfigSource != null) {
return mConfigSource;
}
int targetSdkVersion = mInfo.targetSdkVersion;
int configResourceId = 0;
if (mInfo != null) {
configResourceId = mInfo.networkSecurityConfigRes;
}
ConfigSource source;
if (configResourceId != 0) {
boolean debugBuild = (mInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
if (mConfigResourceId != 0) {
boolean debugBuild = (mApplicationInfoFlags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
if (DBG) {
Log.d(LOG_TAG, "Using Network Security Config from resource "
+ mContext.getResources().getResourceEntryName(configResourceId)
+ mContext.getResources().getResourceEntryName(mConfigResourceId)
+ " debugBuild: " + debugBuild);
}
source = new XmlConfigSource(mContext, configResourceId, debugBuild,
targetSdkVersion);
source = new XmlConfigSource(mContext, mConfigResourceId, debugBuild,
mTargetSdkVersion);
} else {
if (DBG) {
Log.d(LOG_TAG, "No Network Security Config specified, using platform default");
}
boolean usesCleartextTraffic =
(mInfo.flags & ApplicationInfo.FLAG_USES_CLEARTEXT_TRAFFIC) != 0;
source = new DefaultConfigSource(usesCleartextTraffic, targetSdkVersion);
(mApplicationInfoFlags & ApplicationInfo.FLAG_USES_CLEARTEXT_TRAFFIC) != 0;
source = new DefaultConfigSource(usesCleartextTraffic, mTargetSdkVersion);
}
mConfigSource = source;
return mConfigSource;

View File

@@ -17,7 +17,6 @@
package android.security.net.config;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import java.security.Security;
import java.security.Provider;
@@ -33,8 +32,8 @@ public final class NetworkSecurityConfigProvider extends Provider {
put("Alg.Alias.TrustManagerFactory.X509", "PKIX");
}
public static void install(Context context, ApplicationInfo info) {
ApplicationConfig config = new ApplicationConfig(new ManifestConfigSource(context, info));
public static void install(Context context) {
ApplicationConfig config = new ApplicationConfig(new ManifestConfigSource(context));
ApplicationConfig.setDefaultInstance(config);
int pos = Security.insertProviderAt(new NetworkSecurityConfigProvider(), 1);
if (pos != 1) {