From c003eacc7c4febfef67a54c57f04ccc3baccc380 Mon Sep 17 00:00:00 2001 From: Tiger Huang Date: Mon, 9 May 2022 18:26:16 +0800 Subject: [PATCH] Replace WindowState#getLayoutingAttrs with LayoutParams#forRotation When LOCAL_LAYOUT is enabled, the client needs to use the params for the rotation to layout. Bug: 161810301 Test: presubmit Change-Id: I41c94970a600a7a4a3d5bcbab9e79adc1d93d72e --- core/java/android/view/WindowManager.java | 12 +++++++++++ .../com/android/server/wm/DisplayPolicy.java | 20 +++++++++---------- .../com/android/server/wm/WindowState.java | 9 --------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index 326b8514ce005..b818a41293cab 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -3744,6 +3744,18 @@ public interface WindowManager extends ViewManager { } } + /** + * @see #paramsForRotation + * @hide + */ + public LayoutParams forRotation(int rotation) { + if (paramsForRotation == null || paramsForRotation.length <= rotation + || paramsForRotation[rotation] == null) { + return this; + } + return paramsForRotation[rotation]; + } + public LayoutParams() { super(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); type = TYPE_APPLICATION; diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 4360d034b5e03..5c1fc653586e5 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -1158,11 +1158,9 @@ public class DisplayPolicy { (displayFrames, windowContainer, inOutFrame) -> { if (!mNavButtonForcedVisible) { final LayoutParams lp = - win.getLayoutingAttrs(displayFrames.mRotation); + win.mAttrs.forRotation(displayFrames.mRotation); if (lp.providedInsets != null) { - for (InsetsFrameProvider provider : - win.getLayoutingAttrs(displayFrames.mRotation) - .providedInsets) { + for (InsetsFrameProvider provider : lp.providedInsets) { if (provider.type != ITYPE_NAVIGATION_BAR) { continue; } @@ -1371,7 +1369,7 @@ public class DisplayPolicy { private int getStatusBarHeight(DisplayFrames displayFrames) { int statusBarHeight; if (mStatusBar != null) { - statusBarHeight = mStatusBar.getLayoutingAttrs(displayFrames.mRotation).height; + statusBarHeight = mStatusBar.mAttrs.forRotation(displayFrames.mRotation).height; } else { statusBarHeight = 0; } @@ -1527,7 +1525,7 @@ public class DisplayPolicy { final InsetsStateController controller = mDisplayContent.getInsetsStateController(); for (int i = mInsetsSourceWindowsExceptIme.size() - 1; i >= 0; i--) { final WindowState win = mInsetsSourceWindowsExceptIme.valueAt(i); - mWindowLayout.computeFrames(win.getLayoutingAttrs(displayFrames.mRotation), + mWindowLayout.computeFrames(win.mAttrs.forRotation(displayFrames.mRotation), displayFrames.mInsetsState, displayFrames.mDisplayCutoutSafe, displayFrames.mUnrestricted, win.getWindowingMode(), UNSPECIFIED_LENGTH, UNSPECIFIED_LENGTH, win.getRequestedVisibilities(), @@ -1545,7 +1543,7 @@ public class DisplayPolicy { void updateInsetsSourceFramesExceptIme(DisplayFrames displayFrames) { for (int i = mInsetsSourceWindowsExceptIme.size() - 1; i >= 0; i--) { final WindowState win = mInsetsSourceWindowsExceptIme.valueAt(i); - mWindowLayout.computeFrames(win.getLayoutingAttrs(displayFrames.mRotation), + mWindowLayout.computeFrames(win.mAttrs.forRotation(displayFrames.mRotation), displayFrames.mInsetsState, displayFrames.mDisplayCutoutSafe, displayFrames.mUnrestricted, win.getWindowingMode(), UNSPECIFIED_LENGTH, UNSPECIFIED_LENGTH, win.getRequestedVisibilities(), @@ -1578,7 +1576,7 @@ public class DisplayPolicy { // We invoke this to get the proper DisplayFrames. displayFrames = win.getDisplayFrames(displayFrames); - final WindowManager.LayoutParams attrs = win.getLayoutingAttrs(displayFrames.mRotation); + final WindowManager.LayoutParams attrs = win.mAttrs.forRotation(displayFrames.mRotation); final Rect attachedWindowFrame = attached != null ? attached.getFrame() : null; // If this window has different LayoutParams for rotations, we cannot trust its requested @@ -2041,7 +2039,7 @@ public class DisplayPolicy { if (mNavigationBar == null) { return 0; } - LayoutParams lp = mNavigationBar.getLayoutingAttrs(rotation); + LayoutParams lp = mNavigationBar.mAttrs.forRotation(rotation); Insets providedInsetsSize = null; if (lp.providedInsets != null) { for (InsetsFrameProvider provider : lp.providedInsets) { @@ -2073,7 +2071,7 @@ public class DisplayPolicy { if (mNavigationBar == null) { return 0; } - return mNavigationBar.getLayoutingAttrs(rotation).height; + return mNavigationBar.mAttrs.forRotation(rotation).height; } /** @@ -2202,7 +2200,7 @@ public class DisplayPolicy { @NavigationBarPosition int navigationBarPosition(int displayRotation) { if (mNavigationBar != null) { - final int gravity = mNavigationBar.getLayoutingAttrs(displayRotation).gravity; + final int gravity = mNavigationBar.mAttrs.forRotation(displayRotation).gravity; switch (gravity) { case Gravity.LEFT: return NAV_BAR_LEFT; diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 70499603801cc..247c5e4751ace 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1474,15 +1474,6 @@ class WindowState extends WindowContainer implements WindowManagerP return mAttrs; } - WindowManager.LayoutParams getLayoutingAttrs(int rotation) { - final WindowManager.LayoutParams[] paramsForRotation = mAttrs.paramsForRotation; - if (paramsForRotation == null || paramsForRotation.length != 4 - || paramsForRotation[rotation] == null) { - return mAttrs; - } - return paramsForRotation[rotation]; - } - /** Retrieves the flags used to disable system UI functions. */ int getDisableFlags() { return mDisableFlags;