summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorWale Ogunwale <ogunwale@google.com>2020-02-14 13:54:34 +0000
committerWale Ogunwale <ogunwale@google.com>2020-02-14 13:54:34 +0000
commit288e1bd0455132643cf6e1dc482913f430e56bba (patch)
tree0bb4b0a2f2d330a75085e34170b5991a8fa11854 /core/java/android
parent3e857ec536f54fc08ab59bedcd878a819ebd71c3 (diff)
Revert "Always get window insets from server"
This reverts commit 3e857ec536f54fc08ab59bedcd878a819ebd71c3. Reason for revert: Breaks wm-presubmit Change-Id: I03fbbb01c8cabd0ebb9193adf640b9f07ce19826
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/view/WindowManagerImpl.java25
1 files changed, 16 insertions, 9 deletions
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index 25bdbb22ea6c..4365d1f5194a 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -16,9 +16,6 @@
package android.view;
-import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR;
-import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
-
import android.annotation.NonNull;
import android.app.ResourcesManager;
import android.compat.annotation.UnsupportedAppUsage;
@@ -70,6 +67,10 @@ public final class WindowManagerImpl implements WindowManager {
private IBinder mDefaultToken;
+ private boolean mIsViewAdded;
+ private View mLastView;
+ private WindowManager.LayoutParams mLastParams;
+
public WindowManagerImpl(Context context) {
this(context, null);
}
@@ -101,6 +102,9 @@ public final class WindowManagerImpl implements WindowManager {
public void addView(@NonNull View view, @NonNull ViewGroup.LayoutParams params) {
applyDefaultToken(params);
mGlobal.addView(view, params, mContext.getDisplay(), mParentWindow);
+ mIsViewAdded = true;
+ mLastView = view;
+ mLastParams = (WindowManager.LayoutParams) params;
}
@Override
@@ -246,15 +250,18 @@ public final class WindowManagerImpl implements WindowManager {
// TODO(window-context): This can only be properly implemented
// once we flip the new insets mode flag.
if (mParentWindow != null) {
+ if (mParentWindow.getDecorView().isAttachedToWindow()) {
+ return mParentWindow.getDecorView().getViewRootImpl()
+ .getWindowInsets(true /* forceConstruct */);
+ }
return getWindowInsetsFromServer(mParentWindow.getAttributes());
}
- return getWindowInsetsFromServer(getDefaultParams());
- }
+ if (mIsViewAdded) {
+ return mLastView.getViewRootImpl().getWindowInsets(true /* forceConstruct */);
+ } else {
+ return getWindowInsetsFromServer(new WindowManager.LayoutParams());
+ }
- private static WindowManager.LayoutParams getDefaultParams() {
- final WindowManager.LayoutParams params = new WindowManager.LayoutParams();
- params.flags = FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR;
- return params;
}
private WindowInsets getWindowInsetsFromServer(WindowManager.LayoutParams attrs) {