diff options
| author | 2015-12-16 14:40:04 -0800 | |
|---|---|---|
| committer | 2015-12-16 14:40:04 -0800 | |
| commit | caae14e478e115d01f9b32890cb31231575e65dd (patch) | |
| tree | c7971a02d09309d3c3c136b80b54f5966ebf6a11 | |
| parent | b1a523b458b260059cbf8d765ed73c56f4277986 (diff) | |
If pinned stack is focused, look for the one below for logging.
Bug: 26230638
Change-Id: Ibe0b993286c4669e0f565bd2d4af6077553a29e2
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityMetricsLogger.java | 31 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStackSupervisor.java | 15 |
2 files changed, 32 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java index 64f423c32f05..9680382e922d 100644 --- a/services/core/java/com/android/server/am/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/am/ActivityMetricsLogger.java @@ -4,6 +4,7 @@ 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; +import static android.app.ActivityManager.StackId.PINNED_STACK_ID; import android.app.ActivityManager.StackId; import android.content.Context; @@ -49,24 +50,26 @@ class ActivityMetricsLogger { } mLastLogTimeSecs = now; - mWindowState = WINDOW_STATE_INVALID; ActivityStack stack = mSupervisor.getStack(DOCKED_STACK_ID); if (stack != null && stack.isStackVisibleLocked()) { mWindowState = WINDOW_STATE_SIDE_BY_SIDE; + return; + } + mWindowState = WINDOW_STATE_INVALID; + stack = mSupervisor.getFocusedStack(); + if (stack.mStackId == PINNED_STACK_ID) { + stack = mSupervisor.findStackBehind(stack); } - if (mWindowState == WINDOW_STATE_INVALID) { - stack = mSupervisor.getFocusedStack(); - if (stack.mStackId == HOME_STACK_ID - || stack.mStackId == FULLSCREEN_WORKSPACE_STACK_ID) { - mWindowState = WINDOW_STATE_STANDARD; - } else if (stack.mStackId == DOCKED_STACK_ID) { - throw new IllegalStateException("Docked stack shouldn't be the focused stack, " - + "because it reported not being visible."); - } else if (stack.mStackId == FREEFORM_WORKSPACE_STACK_ID) { - mWindowState = WINDOW_STATE_FREEFORM; - } else if (StackId.isStaticStack(stack.mStackId)) { - throw new IllegalStateException("Unknown stack=" + stack); - } + if (stack.mStackId == HOME_STACK_ID + || stack.mStackId == FULLSCREEN_WORKSPACE_STACK_ID) { + mWindowState = WINDOW_STATE_STANDARD; + } else if (stack.mStackId == DOCKED_STACK_ID) { + throw new IllegalStateException("Docked stack shouldn't be the focused stack, " + + "because it reported not being visible."); + } else if (stack.mStackId == FREEFORM_WORKSPACE_STACK_ID) { + mWindowState = WINDOW_STATE_FREEFORM; + } else if (StackId.isStaticStack(stack.mStackId)) { + throw new IllegalStateException("Unknown stack=" + stack); } } } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 9117806257f0..b8f2391d4edf 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -5293,4 +5293,19 @@ public final class ActivityStackSupervisor implements DisplayListener { } } + ActivityStack findStackBehind(ActivityStack stack) { + // TODO(multi-display): We are only looking for stacks on the default display. + final ActivityDisplay display = mActivityDisplays.get(Display.DEFAULT_DISPLAY); + if (display == null) { + return null; + } + final ArrayList<ActivityStack> stacks = display.mStacks; + for (int i = stacks.size() - 1; i >= 0; i--) { + if (stacks.get(i) == stack && i > 0) { + return stacks.get(i - 1); + } + } + throw new IllegalStateException("Failed to find a stack behind stack=" + stack + + " in=" + stacks); + } } |