Merge "Insert org.apache.http.legacy at the start of the shared library list"

This commit is contained in:
TreeHugger Robot
2018-01-08 20:00:28 +00:00
committed by Android (Google) Code Review
2 changed files with 25 additions and 1 deletions

View File

@@ -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;
}
}

View File

@@ -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;