summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wale Ogunwale <ogunwale@google.com> 2018-03-23 23:32:54 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-03-23 23:32:54 +0000
commit444885b10d28db7580c46368c5a3492bdc4e1efe (patch)
tree2f53c09ba0622de1b2c5953f561ab3540c4cfe11
parentf15f291777b1b0e481b0c9f4d44536707e4f6780 (diff)
parent402de825e7d1e27d34e56d71b6e2ef2e541c986d (diff)
Merge "Don't show unsupported sdk warning in test harness." into pi-dev
-rw-r--r--api/test-current.txt1
-rw-r--r--core/java/android/app/ActivityManager.java18
-rw-r--r--core/java/android/app/IActivityManager.aidl3
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java13
-rw-r--r--services/core/java/com/android/server/am/AppWarnings.java19
5 files changed, 54 insertions, 0 deletions
diff --git a/api/test-current.txt b/api/test-current.txt
index c84c77178f18..e84d204919f0 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -20,6 +20,7 @@ package android.app {
public class ActivityManager {
method public void addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int);
+ method public void alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName);
method public int getPackageImportance(java.lang.String);
method public long getTotalRam();
method public int getUidImportance(int);
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index a18ba718ecef..3047cdb2c240 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -3745,6 +3745,24 @@ public class ActivityManager {
}
/**
+ * Unsupported compiled sdk warning should always be shown for the intput activity
+ * even in cases where the system would normally not show the warning. E.g. when running in a
+ * test harness.
+ *
+ * @param activity The component name of the activity to always show the warning for.
+ *
+ * @hide
+ */
+ @TestApi
+ public void alwaysShowUnsupportedCompileSdkWarning(ComponentName activity) {
+ try {
+ getService().alwaysShowUnsupportedCompileSdkWarning(activity);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
* Returns the launch count of each installed package.
*
* @hide
diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl
index 0d45dfa9c7bf..99efecd21984 100644
--- a/core/java/android/app/IActivityManager.aidl
+++ b/core/java/android/app/IActivityManager.aidl
@@ -703,4 +703,7 @@ interface IActivityManager {
*/
void registerRemoteAnimationForNextActivityStart(in String packageName,
in RemoteAnimationAdapter adapter);
+
+ /** @see android.app.ActivityManager#alwaysShowUnsupportedCompileSdkWarning */
+ void alwaysShowUnsupportedCompileSdkWarning(in ComponentName activity);
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 955035b272bd..4f0acf73b901 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -26704,4 +26704,17 @@ public class ActivityManagerService extends IActivityManager.Stub
}
}
}
+
+ /** @see android.app.ActivityManager#alwaysShowUnsupportedCompileSdkWarning */
+ @Override
+ public void alwaysShowUnsupportedCompileSdkWarning(ComponentName activity) {
+ synchronized (this) {
+ final long origId = Binder.clearCallingIdentity();
+ try {
+ mAppWarnings.alwaysShowUnsupportedCompileSdkWarning(activity);
+ } finally {
+ Binder.restoreCallingIdentity(origId);
+ }
+ }
+ }
}
diff --git a/services/core/java/com/android/server/am/AppWarnings.java b/services/core/java/com/android/server/am/AppWarnings.java
index 4b43bd9db201..ab1d7bf2ad7e 100644
--- a/services/core/java/com/android/server/am/AppWarnings.java
+++ b/services/core/java/com/android/server/am/AppWarnings.java
@@ -17,6 +17,8 @@
package com.android.server.am;
import android.annotation.UiThread;
+import android.app.ActivityManager;
+import android.content.ComponentName;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Build;
@@ -39,6 +41,7 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
/**
@@ -64,6 +67,15 @@ class AppWarnings {
private UnsupportedCompileSdkDialog mUnsupportedCompileSdkDialog;
private DeprecatedTargetSdkVersionDialog mDeprecatedTargetSdkVersionDialog;
+ /** @see android.app.ActivityManager#alwaysShowUnsupportedCompileSdkWarning */
+ private HashSet<ComponentName> mAlwaysShowUnsupportedCompileSdkWarningActivities =
+ new HashSet<>();
+
+ /** @see android.app.ActivityManager#alwaysShowUnsupportedCompileSdkWarning */
+ void alwaysShowUnsupportedCompileSdkWarning(ComponentName activity) {
+ mAlwaysShowUnsupportedCompileSdkWarningActivities.add(activity);
+ }
+
/**
* Creates a new warning dialog manager.
* <p>
@@ -110,6 +122,13 @@ class AppWarnings {
return;
}
+ if (ActivityManager.isRunningInTestHarness()
+ && !mAlwaysShowUnsupportedCompileSdkWarningActivities.contains(r.realActivity)) {
+ // Don't show warning if we are running in a test harness and we don't have to always
+ // show for this activity.
+ return;
+ }
+
// If the application was built against an pre-release SDK that's older than the current
// platform OR if the current platform is pre-release and older than the SDK against which
// the application was built OR both are pre-release with the same SDK_INT but different