diff options
Diffstat (limited to 'android/security/net/config/ManifestConfigSource.java')
-rw-r--r-- | android/security/net/config/ManifestConfigSource.java | 40 |
1 files changed, 16 insertions, 24 deletions
diff --git a/android/security/net/config/ManifestConfigSource.java b/android/security/net/config/ManifestConfigSource.java index 8fcd5ab5..79115a5a 100644 --- a/android/security/net/config/ManifestConfigSource.java +++ b/android/security/net/config/ManifestConfigSource.java @@ -20,6 +20,7 @@ import android.content.Context; import android.content.pm.ApplicationInfo; import android.util.Log; import android.util.Pair; + import java.util.Set; /** @hide */ @@ -29,21 +30,14 @@ public class ManifestConfigSource implements ConfigSource { private final Object mLock = new Object(); private final Context mContext; - private final int mApplicationInfoFlags; - private final int mTargetSdkVersion; - private final int mConfigResourceId; - private final int mTargetSandboxVesrsion; + private final ApplicationInfo mApplicationInfo; private ConfigSource mConfigSource; public ManifestConfigSource(Context context) { mContext = context; - // Cache values because ApplicationInfo is mutable and apps do modify it :( - ApplicationInfo info = context.getApplicationInfo(); - mApplicationInfoFlags = info.flags; - mTargetSdkVersion = info.targetSdkVersion; - mConfigResourceId = info.networkSecurityConfigRes; - mTargetSandboxVesrsion = info.targetSandboxVersion; + // Cache the info because ApplicationInfo is mutable and apps do modify it :( + mApplicationInfo = new ApplicationInfo(context.getApplicationInfo()); } @Override @@ -61,17 +55,18 @@ public class ManifestConfigSource implements ConfigSource { if (mConfigSource != null) { return mConfigSource; } - + int configResource = mApplicationInfo.networkSecurityConfigRes; ConfigSource source; - if (mConfigResourceId != 0) { - boolean debugBuild = (mApplicationInfoFlags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; + if (configResource != 0) { + boolean debugBuild = + (mApplicationInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; if (DBG) { Log.d(LOG_TAG, "Using Network Security Config from resource " - + mContext.getResources().getResourceEntryName(mConfigResourceId) + + mContext.getResources() + .getResourceEntryName(configResource) + " debugBuild: " + debugBuild); } - source = new XmlConfigSource(mContext, mConfigResourceId, debugBuild, - mTargetSdkVersion, mTargetSandboxVesrsion); + source = new XmlConfigSource(mContext, configResource, mApplicationInfo); } else { if (DBG) { Log.d(LOG_TAG, "No Network Security Config specified, using platform default"); @@ -79,10 +74,9 @@ public class ManifestConfigSource implements ConfigSource { // the legacy FLAG_USES_CLEARTEXT_TRAFFIC is not supported for Ephemeral apps, they // should use the network security config. boolean usesCleartextTraffic = - (mApplicationInfoFlags & ApplicationInfo.FLAG_USES_CLEARTEXT_TRAFFIC) != 0 - && mTargetSandboxVesrsion < 2; - source = new DefaultConfigSource(usesCleartextTraffic, mTargetSdkVersion, - mTargetSandboxVesrsion); + (mApplicationInfo.flags & ApplicationInfo.FLAG_USES_CLEARTEXT_TRAFFIC) != 0 + && mApplicationInfo.targetSandboxVersion < 2; + source = new DefaultConfigSource(usesCleartextTraffic, mApplicationInfo); } mConfigSource = source; return mConfigSource; @@ -93,10 +87,8 @@ public class ManifestConfigSource implements ConfigSource { private final NetworkSecurityConfig mDefaultConfig; - public DefaultConfigSource(boolean usesCleartextTraffic, int targetSdkVersion, - int targetSandboxVesrsion) { - mDefaultConfig = NetworkSecurityConfig.getDefaultBuilder(targetSdkVersion, - targetSandboxVesrsion) + DefaultConfigSource(boolean usesCleartextTraffic, ApplicationInfo info) { + mDefaultConfig = NetworkSecurityConfig.getDefaultBuilder(info) .setCleartextTrafficPermitted(usesCleartextTraffic) .build(); } |