From 9ccb1d2f2244980b0159aee34d67992d0a94bd45 Mon Sep 17 00:00:00 2001 From: Vishnu Nair Date: Wed, 20 Mar 2019 16:32:44 +0000 Subject: [PATCH 1/2] Revert "WM: Switch to using APPLICATION_OVERLAY window type for ErrorDialogs" This reverts commit 15382f108108083e0e1b059dc1db57712659420e. Reason for revert: Don't change behavior of APPLICATION_OVERLAY Bug: 128494358 Change-Id: Ic706c0d129fecc7b0d207ca7590e126b62b1f4a5 --- .../core/java/com/android/server/am/BaseErrorDialog.java | 6 +++--- .../com/android/server/policy/PhoneWindowManager.java | 1 - .../com/android/server/policy/WindowManagerPolicy.java | 8 ++++---- .../core/java/com/android/server/wm/DisplayPolicy.java | 4 +--- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/services/core/java/com/android/server/am/BaseErrorDialog.java b/services/core/java/com/android/server/am/BaseErrorDialog.java index dc9a4bf1ad943..aabb5877764e1 100644 --- a/services/core/java/com/android/server/am/BaseErrorDialog.java +++ b/services/core/java/com/android/server/am/BaseErrorDialog.java @@ -16,6 +16,8 @@ package com.android.server.am; +import com.android.internal.R; + import android.app.AlertDialog; import android.content.Context; import android.os.Handler; @@ -24,8 +26,6 @@ import android.view.KeyEvent; import android.view.WindowManager; import android.widget.Button; -import com.android.internal.R; - public class BaseErrorDialog extends AlertDialog { private static final int ENABLE_BUTTONS = 0; private static final int DISABLE_BUTTONS = 1; @@ -36,7 +36,7 @@ public class BaseErrorDialog extends AlertDialog { super(context, com.android.internal.R.style.Theme_DeviceDefault_Dialog_AppError); context.assertRuntimeOverlayThemable(); - getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY); + getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); WindowManager.LayoutParams attrs = getWindow().getAttributes(); diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 58106367842ab..b163b1078d5ce 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -2521,7 +2521,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private static final int[] WINDOW_TYPES_WHERE_HOME_DOESNT_WORK = { - WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, }; diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java index 2af234252e0f0..5d0ae90c2e858 100644 --- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java +++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java @@ -831,16 +831,16 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { // like the ANR / app crashed dialogs return canAddInternalSystemWindow ? 11 : 10; case TYPE_APPLICATION_OVERLAY: - return canAddInternalSystemWindow ? 13 : 12; + return 12; case TYPE_DREAM: // used for Dreams (screensavers with TYPE_DREAM windows) - return 14; + return 13; case TYPE_INPUT_METHOD: // on-screen keyboards and other such input method user interfaces go here. - return 15; + return 14; case TYPE_INPUT_METHOD_DIALOG: // on-screen keyboards and other such input method user interfaces go here. - return 16; + return 15; case TYPE_STATUS_BAR: return 17; case TYPE_STATUS_BAR_PANEL: diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index ba1dfbba06f82..ff4e2564a696d 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -59,7 +59,6 @@ import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_SEAMLES import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_MASK_ADJUST; -import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_BOOT_PROGRESS; import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; @@ -2067,8 +2066,7 @@ public class DisplayPolicy { of.set(displayFrames.mRestricted); df.set(displayFrames.mRestricted); pf.set(displayFrames.mRestricted); - } else if (type == TYPE_TOAST || type == TYPE_SYSTEM_ALERT - || type == TYPE_APPLICATION_OVERLAY) { + } else if (type == TYPE_TOAST || type == TYPE_SYSTEM_ALERT) { // These dialogs are stable to interim decor changes. cf.set(displayFrames.mStable); of.set(displayFrames.mStable); From 90f97fe26db78b2e005956585b49aac337f50f15 Mon Sep 17 00:00:00 2001 From: Vishnu Nair Date: Wed, 20 Mar 2019 10:09:43 -0700 Subject: [PATCH 2/2] WM: Change Z-Order of internal TYPE_SYSTEM_ALERT windows to be higher than TYPE_APPLICATION_OVERLAY Bug: 128494358 Test: go/wm-smoke Test: run repro steps in b/128494358 Change-Id: I96cf4d06249745fdfb9ee27acc17677c1f36dadd --- .../com/android/server/policy/WindowManagerPolicy.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java index 5d0ae90c2e858..b196754796e9b 100644 --- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java +++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java @@ -829,18 +829,20 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { return 9; case TYPE_SYSTEM_ALERT: // like the ANR / app crashed dialogs - return canAddInternalSystemWindow ? 11 : 10; + // Type is deprecated for non-system apps. For system apps, this type should be + // in a higher layer than TYPE_APPLICATION_OVERLAY. + return canAddInternalSystemWindow ? 13 : 10; case TYPE_APPLICATION_OVERLAY: return 12; case TYPE_DREAM: // used for Dreams (screensavers with TYPE_DREAM windows) - return 13; + return 14; case TYPE_INPUT_METHOD: // on-screen keyboards and other such input method user interfaces go here. - return 14; + return 15; case TYPE_INPUT_METHOD_DIALOG: // on-screen keyboards and other such input method user interfaces go here. - return 15; + return 16; case TYPE_STATUS_BAR: return 17; case TYPE_STATUS_BAR_PANEL: