If pinned stack is focused, look for the one below for logging.

Bug: 26230638
Change-Id: Ibe0b993286c4669e0f565bd2d4af6077553a29e2
diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java
index 64f423c..9680382 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.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 @@
         }
         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;
         }
-        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);
-            }
+        mWindowState = WINDOW_STATE_INVALID;
+        stack = mSupervisor.getFocusedStack();
+        if (stack.mStackId == PINNED_STACK_ID) {
+            stack = mSupervisor.findStackBehind(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 9117806..b8f2391 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 @@
         }
     }
 
+    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);
+    }
 }