diff options
| author | 2018-03-23 23:32:54 +0000 | |
|---|---|---|
| committer | 2018-03-23 23:32:54 +0000 | |
| commit | 444885b10d28db7580c46368c5a3492bdc4e1efe (patch) | |
| tree | 2f53c09ba0622de1b2c5953f561ab3540c4cfe11 | |
| parent | f15f291777b1b0e481b0c9f4d44536707e4f6780 (diff) | |
| parent | 402de825e7d1e27d34e56d71b6e2ef2e541c986d (diff) | |
Merge "Don't show unsupported sdk warning in test harness." into pi-dev
| -rw-r--r-- | api/test-current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/app/ActivityManager.java | 18 | ||||
| -rw-r--r-- | core/java/android/app/IActivityManager.aidl | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 13 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/AppWarnings.java | 19 |
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 |