Fix stuck windows in multi-window

Window manager checked for the full display size so isHiddenFromUserLocked
always returned true but activity manager and other places in window manager
thought it would be visible which created a really weird state.

Bug: 28344326
Change-Id: I98daefbcc64bf7a5196588c25d2cbc5ee046a77d
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 19184fe..ae20ae3 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -2067,16 +2067,14 @@
         }
         if (win.mAttrs.type < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW
                 && win.mAppToken != null && win.mAppToken.showForAllUsers) {
-            // Save some cycles by not calling getDisplayInfo unless it is an application
-            // window intended for all users.
-            final DisplayContent displayContent = win.getDisplayContent();
-            if (displayContent == null) {
-                return true;
-            }
-            final DisplayInfo displayInfo = displayContent.getDisplayInfo();
-            if (win.mFrame.left <= 0 && win.mFrame.top <= 0
-                    && win.mFrame.right >= displayInfo.appWidth
-                    && win.mFrame.bottom >= displayInfo.appHeight) {
+
+            // All window frames that are fullscreen extend above status bar, but some don't extend
+            // below navigation bar. Thus, check for display frame for top/left and stable frame for
+            // bottom right.
+            if (win.mFrame.left <= win.mDisplayFrame.left
+                    && win.mFrame.top <= win.mDisplayFrame.top
+                    && win.mFrame.right >= win.mStableFrame.right
+                    && win.mFrame.bottom >= win.mStableFrame.bottom) {
                 // Is a fullscreen window, like the clock alarm. Show to everyone.
                 return false;
             }