Merge "Include OrgApacheHttpLegacyUpdater unconditionally"

This commit is contained in:
Paul Duffin
2019-01-24 11:12:47 +00:00
committed by Gerrit Code Review
4 changed files with 8 additions and 67 deletions

View File

@@ -667,8 +667,6 @@ java_defaults {
exclude_srcs: [
// See comment on framework-atb-backward-compatibility module below
"core/java/android/content/pm/AndroidTestBaseUpdater.java",
// See comment on framework-oahl-backward-compatibility module below
"core/java/android/content/pm/OrgApacheHttpLegacyUpdater.java",
],
no_framework_libs: true,

View File

@@ -25,12 +25,6 @@ import com.android.internal.annotations.VisibleForTesting;
* Updates a package to ensure that if it targets < P that the org.apache.http.legacy library is
* included by default.
*
* <p>This is separated out so that it can be conditionally included at build time depending on
* whether org.apache.http.legacy is on the bootclasspath or not. In order to include this at
* build time, and remove org.apache.http.legacy from the bootclasspath pass
* REMOVE_OAHL_FROM_BCP=true on the build command line, otherwise this class will not be included
* and the
*
* @hide
*/
@VisibleForTesting

View File

@@ -45,13 +45,9 @@ public class PackageBackwardCompatibility extends PackageSharedLibraryUpdater {
static {
final List<PackageSharedLibraryUpdater> packageUpdaters = new ArrayList<>();
// Attempt to load and add the optional updater that will only be available when
// REMOVE_OAHL_FROM_BCP=true. If that could not be found then add the default updater that
// will remove any references to org.apache.http.library from the package so that it does
// not try and load the library when it is on the bootclasspath.
boolean bootClassPathContainsOAHL = !addOptionalUpdater(packageUpdaters,
"android.content.pm.OrgApacheHttpLegacyUpdater",
RemoveUnnecessaryOrgApacheHttpLegacyLibrary::new);
// Automatically add the org.apache.http.legacy library to the app classpath if the app
// targets < P.
packageUpdaters.add(new OrgApacheHttpLegacyUpdater());
packageUpdaters.add(new AndroidHidlUpdater());
@@ -70,7 +66,7 @@ public class PackageBackwardCompatibility extends PackageSharedLibraryUpdater {
PackageSharedLibraryUpdater[] updaterArray = packageUpdaters
.toArray(new PackageSharedLibraryUpdater[0]);
INSTANCE = new PackageBackwardCompatibility(
bootClassPathContainsOAHL, bootClassPathContainsATB, updaterArray);
bootClassPathContainsATB, updaterArray);
}
/**
@@ -116,15 +112,12 @@ public class PackageBackwardCompatibility extends PackageSharedLibraryUpdater {
return INSTANCE;
}
private final boolean mBootClassPathContainsOAHL;
private final boolean mBootClassPathContainsATB;
private final PackageSharedLibraryUpdater[] mPackageUpdaters;
public PackageBackwardCompatibility(boolean bootClassPathContainsOAHL,
public PackageBackwardCompatibility(
boolean bootClassPathContainsATB, PackageSharedLibraryUpdater[] packageUpdaters) {
this.mBootClassPathContainsOAHL = bootClassPathContainsOAHL;
this.mBootClassPathContainsATB = bootClassPathContainsATB;
this.mPackageUpdaters = packageUpdaters;
}
@@ -147,14 +140,6 @@ public class PackageBackwardCompatibility extends PackageSharedLibraryUpdater {
}
}
/**
* True if the org.apache.http.legacy is on the bootclasspath, false otherwise.
*/
@VisibleForTesting
public static boolean bootClassPathContainsOAHL() {
return INSTANCE.mBootClassPathContainsOAHL;
}
/**
* True if the android.test.base is on the bootclasspath, false otherwise.
*/

View File

@@ -46,22 +46,12 @@ public class PackageBackwardCompatibilityTest extends PackageSharedLibraryUpdate
checkBackwardsCompatibility(before, after);
}
/**
* Detect when the org.apache.http.legacy is not on the bootclasspath.
*
* <p>This test will be ignored when org.apache.http.legacy is not on the bootclasspath and
* succeed otherwise. This allows a developer to ensure that the tests are being
*/
@Test
public void detectWhenOAHLisOnBCP() {
Assume.assumeTrue(PackageBackwardCompatibility.bootClassPathContainsOAHL());
}
/**
* Detect when the android.test.base is not on the bootclasspath.
*
* <p>This test will be ignored when org.apache.http.legacy is not on the bootclasspath and
* succeed otherwise. This allows a developer to ensure that the tests are being
* succeed otherwise. This allows a developer to ensure that the tests are being run in the
* correct environment.
*/
@Test
public void detectWhenATBisOnBCP() {
@@ -84,9 +74,7 @@ public class PackageBackwardCompatibilityTest extends PackageSharedLibraryUpdate
if (!PackageBackwardCompatibility.bootClassPathContainsATB()) {
expected.add(ANDROID_TEST_BASE);
}
if (!PackageBackwardCompatibility.bootClassPathContainsOAHL()) {
expected.add(ORG_APACHE_HTTP_LEGACY);
}
expected.add(ORG_APACHE_HTTP_LEGACY);
PackageBuilder after = builder()
.targetSdkVersion(Build.VERSION_CODES.O)
@@ -95,30 +83,6 @@ public class PackageBackwardCompatibilityTest extends PackageSharedLibraryUpdate
checkBackwardsCompatibility(before, after);
}
/**
* Ensures that the {@link PackageBackwardCompatibility} uses
* {@link RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest}
* when necessary.
*
* <p>More comprehensive tests for that class can be found in
* {@link RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest}.
*/
@Test
public void org_apache_http_legacy_in_usesLibraries() {
Assume.assumeTrue("Test requires that "
+ ORG_APACHE_HTTP_LEGACY + " is on the bootclasspath",
PackageBackwardCompatibility.bootClassPathContainsOAHL());
PackageBuilder before = builder()
.requiredLibraries(ORG_APACHE_HTTP_LEGACY);
// org.apache.http.legacy should be removed from the libraries because it is provided
// on the bootclasspath and providing both increases start up cost unnecessarily.
PackageBuilder after = builder();
checkBackwardsCompatibility(before, after);
}
/**
* Ensures that the {@link PackageBackwardCompatibility} uses
* {@link RemoveUnnecessaryAndroidTestBaseLibrary}