diff options
| author | Wale Ogunwale <ogunwale@google.com> | 2020-02-14 13:54:34 +0000 |
|---|---|---|
| committer | Wale Ogunwale <ogunwale@google.com> | 2020-02-14 13:54:34 +0000 |
| commit | 288e1bd0455132643cf6e1dc482913f430e56bba (patch) | |
| tree | 0bb4b0a2f2d330a75085e34170b5991a8fa11854 /core/java/android | |
| parent | 3e857ec536f54fc08ab59bedcd878a819ebd71c3 (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.java | 25 |
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) { |
