summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Louis Chang <louischang@google.com> 2020-08-20 00:39:40 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2020-08-20 00:39:40 +0000
commitcbd20f44382395a10584269e9d35fc9bcd639b6c (patch)
treeb23160dd2673d5ce305f961ac2fa354e6c2aaac8
parentb0f7a7abbc050762a795b6120f10c24cb71ca354 (diff)
parentb668e7b376d2cbe2b9b18d007a9a16744a53cc88 (diff)
Merge "Non-priv apps are not allowed to use always/never lock task mode" into rvc-qpr-dev am: b668e7b376
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12399059 Change-Id: I07f88d72551c4ac091b5bd8da6bc06596009d8d0
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java3
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java31
2 files changed, 33 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index f74684070d0b..5339d86a7b78 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -1671,7 +1671,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
static int getLockTaskLaunchMode(ActivityInfo aInfo, @Nullable ActivityOptions options) {
int lockTaskLaunchMode = aInfo.lockTaskLaunchMode;
- if (aInfo.applicationInfo.isPrivilegedApp()
+ // Non-priv apps are not allowed to use always or never, fall back to default
+ if (!aInfo.applicationInfo.isPrivilegedApp()
&& (lockTaskLaunchMode == LOCK_TASK_LAUNCH_MODE_ALWAYS
|| lockTaskLaunchMode == LOCK_TASK_LAUNCH_MODE_NEVER)) {
lockTaskLaunchMode = LOCK_TASK_LAUNCH_MODE_DEFAULT;
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index 6ab0697206e3..8ae21efe8223 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -20,6 +20,10 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION;
import static android.content.pm.ActivityInfo.CONFIG_SCREEN_LAYOUT;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_ALWAYS;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_DEFAULT;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_IF_WHITELISTED;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_NEVER;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
@@ -79,6 +83,7 @@ import android.app.servertransaction.PauseActivityItem;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Rect;
@@ -1685,6 +1690,32 @@ public class ActivityRecordTests extends ActivityTestsBase {
.diff(wpc.getRequestedOverrideConfiguration()));
}
+ @Test
+ public void testGetLockTaskLaunchMode() {
+ final ActivityOptions options = ActivityOptions.makeBasic().setLockTaskEnabled(true);
+ mActivity.info.lockTaskLaunchMode = LOCK_TASK_LAUNCH_MODE_DEFAULT;
+ assertEquals(LOCK_TASK_LAUNCH_MODE_IF_WHITELISTED,
+ ActivityRecord.getLockTaskLaunchMode(mActivity.info, options));
+
+ mActivity.info.lockTaskLaunchMode = LOCK_TASK_LAUNCH_MODE_ALWAYS;
+ assertEquals(LOCK_TASK_LAUNCH_MODE_DEFAULT,
+ ActivityRecord.getLockTaskLaunchMode(mActivity.info, null /*options*/));
+
+ mActivity.info.lockTaskLaunchMode = LOCK_TASK_LAUNCH_MODE_NEVER;
+ assertEquals(LOCK_TASK_LAUNCH_MODE_DEFAULT,
+ ActivityRecord.getLockTaskLaunchMode(mActivity.info, null /*options*/));
+
+ mActivity.info.applicationInfo.privateFlags |= ApplicationInfo.PRIVATE_FLAG_PRIVILEGED;
+ mActivity.info.lockTaskLaunchMode = LOCK_TASK_LAUNCH_MODE_ALWAYS;
+ assertEquals(LOCK_TASK_LAUNCH_MODE_ALWAYS,
+ ActivityRecord.getLockTaskLaunchMode(mActivity.info, null /*options*/));
+
+ mActivity.info.lockTaskLaunchMode = LOCK_TASK_LAUNCH_MODE_NEVER;
+ assertEquals(LOCK_TASK_LAUNCH_MODE_NEVER,
+ ActivityRecord.getLockTaskLaunchMode(mActivity.info, null /*options*/));
+
+ }
+
/**
* Creates an activity on display. For non-default display request it will also create a new
* display with custom DisplayInfo.