diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 806f7c5325132..e5cf7644ffb90 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -227,14 +227,34 @@ final class WindowState implements WindowManagerPolicy.WindowState { final Rect mCompatFrame = new Rect(); final Rect mContainingFrame = new Rect(); - final Rect mDisplayFrame = new Rect(); - final Rect mOverscanFrame = new Rect(); - final Rect mContentFrame = new Rect(); + final Rect mParentFrame = new Rect(); - final Rect mVisibleFrame = new Rect(); - final Rect mDecorFrame = new Rect(); + + // The entire screen area of the device. + final Rect mDisplayFrame = new Rect(); + + // The region of the display frame that the display type supports displaying content on. This + // is mostly a special case for TV where some displays don’t have the entire display usable. + // {@link WindowManager.LayoutParams#FLAG_LAYOUT_IN_OVERSCAN} flag can be used to allow + // window display contents to extend into the overscan region. + final Rect mOverscanFrame = new Rect(); + + // The display frame minus the stable insets. This value is always constant regardless of if + // the status bar or navigation bar is visible. final Rect mStableFrame = new Rect(); + // The area not occupied by the status and navigation bars. So, if both status and navigation + // bars are visible, the decor frame is equal to the stable frame. + final Rect mDecorFrame = new Rect(); + + // Equal to the decor frame if the IME (e.g. keyboard) is not present. Equal to the decor frame + // minus the area occupied by the IME if the IME is present. + final Rect mContentFrame = new Rect(); + + // Legacy stuff. Generally equal to the content frame expect when the IME for older apps + // displays hint text. + final Rect mVisibleFrame = new Rect(); + boolean mContentChanged; // If a window showing a wallpaper: the requested offset for the