Merge "Insert org.apache.http.legacy at the start of the shared library list"
This commit is contained in:
committed by
Android (Google) Code Review
commit
0b033791b4
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user