diff options
| author | 2021-04-01 09:49:39 -0700 | |
|---|---|---|
| committer | 2021-04-09 13:40:39 -0700 | |
| commit | 64be82e0bc2da9ab8dd83d714df7b5fa46bdd80a (patch) | |
| tree | 62c3bd9851dada81a1fb7c7e1bfef6b387e56bcc | |
| parent | 94424ac41b9429b3a9480f40059f4bc68e5f0969 (diff) | |
Fix bubbles appearing in recent task list
Test: atest RecentTasksTest
Test: add bubble, expand it, collapse it, check the activity
      for it is not in recents.
Fixes: 182581373
Change-Id: Iafd1c5204da0858dce44449c3cb208f6c0df16c1
3 files changed, 11 insertions, 3 deletions
| diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java index 20c0d4189ad8..6631a3e61e77 100644 --- a/services/core/java/com/android/server/wm/RecentTasks.java +++ b/services/core/java/com/android/server/wm/RecentTasks.java @@ -58,8 +58,6 @@ import android.content.pm.ParceledListSlice;  import android.content.pm.UserInfo;  import android.content.res.Resources;  import android.graphics.Bitmap; -import android.graphics.Point; -import android.graphics.Rect;  import android.os.Environment;  import android.os.IBinder;  import android.os.RemoteException; @@ -1345,6 +1343,7 @@ class RecentTasks {                      + " inactiveDuration=" + task.getInactiveDuration()                      + " activityType=" + task.getActivityType()                      + " windowingMode=" + task.getWindowingMode() +                    + " isAlwaysOnTopWhenVisible=" + task.isAlwaysOnTopWhenVisible()                      + " intentFlags=" + task.getBaseIntent().getFlags());          } @@ -1380,7 +1379,7 @@ class RecentTasks {                  break;              case WINDOWING_MODE_MULTI_WINDOW:                  // Ignore tasks that are always on top -                if (task.isAlwaysOnTop()) { +                if (task.isAlwaysOnTopWhenVisible()) {                      return false;                  }                  break; diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index c293a159ec4b..bd21e9c2b8dd 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -5277,6 +5277,13 @@ class Task extends WindowContainer<WindowContainer> {      }      /** +     * @return whether this task is always on top without taking visibility into account. +     */ +    public boolean isAlwaysOnTopWhenVisible() { +        return super.isAlwaysOnTop(); +    } + +    /**       * Returns whether this task is currently forced to be hidden for any reason.       */      protected boolean isForceHidden() { diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java index 6ffdb099695d..8b812a93d091 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java @@ -34,6 +34,7 @@ import static android.content.res.Configuration.ORIENTATION_PORTRAIT;  import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;  import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;  import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; +import static com.android.server.wm.Task.FLAG_FORCE_HIDDEN_FOR_TASK_ORG;  import static com.google.common.truth.Truth.assertThat;  import static com.google.common.truth.Truth.assertWithMessage; @@ -754,6 +755,7 @@ public class RecentTasksTest extends WindowTestsBase {          final Task alwaysOnTopTask = taskDisplayArea.createRootTask(WINDOWING_MODE_MULTI_WINDOW,                  ACTIVITY_TYPE_STANDARD, true /* onTop */);          alwaysOnTopTask.setAlwaysOnTop(true); +        alwaysOnTopTask.setForceHidden(FLAG_FORCE_HIDDEN_FOR_TASK_ORG, true);          assertFalse("Always on top tasks should not be visible recents",                  mRecentTasks.isVisibleRecentTask(alwaysOnTopTask)); |