From 7d5f510e6c4bfde4f9f1d3d2d7ee696efa0460d8 Mon Sep 17 00:00:00 2001 From: Chong Zhang Date: Wed, 13 Jan 2016 10:29:24 -0800 Subject: [PATCH] Launch non-resizeable task with fullscreen bounds in docked stack. This case could happen in real world if a non-resizeable activity opens another activity (eg. Messenger app opens an activity to write up the message). Need to make sure the new activity is not resized. Change-Id: I222985fa7ee2cbd94c843ac1190239cce31d3c0c --- .../java/com/android/server/am/TaskRecord.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java index ae987e6f4402a..38ba737e38ce6 100644 --- a/services/core/java/com/android/server/am/TaskRecord.java +++ b/services/core/java/com/android/server/am/TaskRecord.java @@ -16,6 +16,7 @@ package com.android.server.am; +import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID; import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID; import static android.app.ActivityManager.StackId.HOME_STACK_ID; @@ -1386,17 +1387,20 @@ final class TaskRecord { /** Returns the bounds that should be used to launch this task. */ Rect getLaunchBounds() { - final int stackId = stack.mStackId; - // If we're over lockscreen, forget about stack bounds and use fullscreen. if (mService.mLockScreenShown == LOCK_SCREEN_SHOWN) { return null; } - if (stack == null - || stackId == HOME_STACK_ID - || stackId == FULLSCREEN_WORKSPACE_STACK_ID) { - return (mResizeable && stack != null) ? stack.mBounds : null; + if (stack == null) { + return null; + } + + final int stackId = stack.mStackId; + if (stackId == HOME_STACK_ID + || stackId == FULLSCREEN_WORKSPACE_STACK_ID + || (stackId == DOCKED_STACK_ID && !mResizeable)) { + return mResizeable ? stack.mBounds : null; } else if (!StackId.persistTaskBounds(stackId)) { return stack.mBounds; }