Loading core/java/android/content/pm/PackageBackwardCompatibility.java +11 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.content.pm; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.pm.PackageParser.Package; import android.os.Build; Loading Loading @@ -56,7 +58,7 @@ public class PackageBackwardCompatibility { boolean apacheHttpLegacyPresent = isLibraryPresent( usesLibraries, usesOptionalLibraries, APACHE_HTTP_LEGACY); if (!apacheHttpLegacyPresent) { usesLibraries = ArrayUtils.add(usesLibraries, APACHE_HTTP_LEGACY); usesLibraries = prefix(usesLibraries, APACHE_HTTP_LEGACY); } } Loading Loading @@ -86,4 +88,12 @@ public class PackageBackwardCompatibility { return ArrayUtils.contains(usesLibraries, apacheHttpLegacy) || ArrayUtils.contains(usesOptionalLibraries, apacheHttpLegacy); } private static @NonNull <T> ArrayList<T> prefix(@Nullable ArrayList<T> cur, T val) { if (cur == null) { cur = new ArrayList<>(); } cur.add(0, val); return cur; } } core/tests/coretests/src/android/content/pm/PackageBackwardCompatibilityTest.java +14 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ public class PackageBackwardCompatibilityTest { private static final String ANDROID_TEST_MOCK = "android.test.mock"; private static final String OTHER_LIBRARY = "other.library"; private Package mPackage; private static ArrayList<String> arrayList(String... strings) { Loading Loading @@ -77,6 +79,18 @@ public class PackageBackwardCompatibilityTest { assertNull("usesOptionalLibraries not updated correctly", mPackage.usesOptionalLibraries); } @Test public void targeted_at_O_not_empty_usesLibraries() { mPackage.applicationInfo.targetSdkVersion = Build.VERSION_CODES.O; mPackage.usesLibraries = arrayList(OTHER_LIBRARY); PackageBackwardCompatibility.modifySharedLibraries(mPackage); // The org.apache.http.legacy jar should be added at the start of the list. assertEquals("usesLibraries not updated correctly", arrayList(ORG_APACHE_HTTP_LEGACY, OTHER_LIBRARY), mPackage.usesLibraries); assertNull("usesOptionalLibraries not updated correctly", mPackage.usesOptionalLibraries); } @Test public void targeted_at_O_org_apache_http_legacy_in_usesLibraries() { mPackage.applicationInfo.targetSdkVersion = Build.VERSION_CODES.O; Loading Loading
core/java/android/content/pm/PackageBackwardCompatibility.java +11 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.content.pm; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.pm.PackageParser.Package; import android.os.Build; Loading Loading @@ -56,7 +58,7 @@ public class PackageBackwardCompatibility { boolean apacheHttpLegacyPresent = isLibraryPresent( usesLibraries, usesOptionalLibraries, APACHE_HTTP_LEGACY); if (!apacheHttpLegacyPresent) { usesLibraries = ArrayUtils.add(usesLibraries, APACHE_HTTP_LEGACY); usesLibraries = prefix(usesLibraries, APACHE_HTTP_LEGACY); } } Loading Loading @@ -86,4 +88,12 @@ public class PackageBackwardCompatibility { return ArrayUtils.contains(usesLibraries, apacheHttpLegacy) || ArrayUtils.contains(usesOptionalLibraries, apacheHttpLegacy); } private static @NonNull <T> ArrayList<T> prefix(@Nullable ArrayList<T> cur, T val) { if (cur == null) { cur = new ArrayList<>(); } cur.add(0, val); return cur; } }
core/tests/coretests/src/android/content/pm/PackageBackwardCompatibilityTest.java +14 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ public class PackageBackwardCompatibilityTest { private static final String ANDROID_TEST_MOCK = "android.test.mock"; private static final String OTHER_LIBRARY = "other.library"; private Package mPackage; private static ArrayList<String> arrayList(String... strings) { Loading Loading @@ -77,6 +79,18 @@ public class PackageBackwardCompatibilityTest { assertNull("usesOptionalLibraries not updated correctly", mPackage.usesOptionalLibraries); } @Test public void targeted_at_O_not_empty_usesLibraries() { mPackage.applicationInfo.targetSdkVersion = Build.VERSION_CODES.O; mPackage.usesLibraries = arrayList(OTHER_LIBRARY); PackageBackwardCompatibility.modifySharedLibraries(mPackage); // The org.apache.http.legacy jar should be added at the start of the list. assertEquals("usesLibraries not updated correctly", arrayList(ORG_APACHE_HTTP_LEGACY, OTHER_LIBRARY), mPackage.usesLibraries); assertNull("usesOptionalLibraries not updated correctly", mPackage.usesOptionalLibraries); } @Test public void targeted_at_O_org_apache_http_legacy_in_usesLibraries() { mPackage.applicationInfo.targetSdkVersion = Build.VERSION_CODES.O; Loading