summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-10-08 19:26:31 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-10-08 19:26:31 +0000
commit91ede359fa122d8e3defb08d451fae1814d1ded4 (patch)
tree83fe9a7ece35b2991834c50a34ae90f1b445315b
parent88bfff3262c894041e4ebf8d9aea0cde33323b4a (diff)
parente4d912f1d0367fb29c302b048f653c8c912773a6 (diff)
Merge "Replace targetSDK check with platform compat framework gating."
-rw-r--r--Android.bp2
-rw-r--r--core/java/android/content/pm/AndroidTestBaseUpdater.java31
2 files changed, 28 insertions, 5 deletions
diff --git a/Android.bp b/Android.bp
index 5250dc5895c8..a1061681358f 100644
--- a/Android.bp
+++ b/Android.bp
@@ -426,7 +426,7 @@ java_library {
java_library {
name: "framework-annotation-proc",
- defaults: ["framework-defaults"],
+ defaults: ["framework-aidl-export-defaults"],
srcs: [":framework-all-sources"],
installable: false,
plugins: [
diff --git a/core/java/android/content/pm/AndroidTestBaseUpdater.java b/core/java/android/content/pm/AndroidTestBaseUpdater.java
index da1a693b13c3..8fcfe711a882 100644
--- a/core/java/android/content/pm/AndroidTestBaseUpdater.java
+++ b/core/java/android/content/pm/AndroidTestBaseUpdater.java
@@ -18,10 +18,17 @@ package android.content.pm;
import static android.content.pm.SharedLibraryNames.ANDROID_TEST_BASE;
import static android.content.pm.SharedLibraryNames.ANDROID_TEST_RUNNER;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledAfter;
+import android.content.Context;
import android.content.pm.PackageParser.Package;
import android.os.Build;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.compat.IPlatformCompat;
/**
* Updates a package to ensure that if it targets <= Q that the android.test.base library is
@@ -37,10 +44,26 @@ import com.android.internal.annotations.VisibleForTesting;
*/
@VisibleForTesting
public class AndroidTestBaseUpdater extends PackageSharedLibraryUpdater {
+ private static final String TAG = "AndroidTestBaseUpdater";
- private static boolean apkTargetsApiLevelLessThanOrEqualToQ(Package pkg) {
- int targetSdkVersion = pkg.applicationInfo.targetSdkVersion;
- return targetSdkVersion <= Build.VERSION_CODES.Q;
+ /**
+ * Remove android.test.base library for apps that target SDK R or more and do not depend on
+ * android.test.runner (as it depends on classes from the android.test.base library).
+ */
+ @ChangeId
+ @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
+ private static final long REMOVE_ANDROID_TEST_BASE = 133396946L;
+
+ private static boolean isChangeEnabled(Package pkg) {
+ IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface(
+ ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE));
+ try {
+ return platformCompat.isChangeEnabled(REMOVE_ANDROID_TEST_BASE, pkg.applicationInfo);
+ } catch (RemoteException | NullPointerException e) {
+ Log.e(TAG, "Failed to get a response from PLATFORM_COMPAT_SERVICE", e);
+ }
+ // Fall back to previous behaviour.
+ return pkg.applicationInfo.targetSdkVersion <= Build.VERSION_CODES.Q;
}
@Override
@@ -48,7 +71,7 @@ public class AndroidTestBaseUpdater extends PackageSharedLibraryUpdater {
// Packages targeted at <= Q expect the classes in the android.test.base library
// to be accessible so this maintains backward compatibility by adding the
// android.test.base library to those packages.
- if (apkTargetsApiLevelLessThanOrEqualToQ(pkg)) {
+ if (!isChangeEnabled(pkg)) {
prefixRequiredLibrary(pkg, ANDROID_TEST_BASE);
} else {
// If a package already depends on android.test.runner then add a dependency on