From faa09f9b92e629c90680a2546cdf34949c2f6f9c Mon Sep 17 00:00:00 2001 From: Linus Tufvesson Date: Tue, 31 Mar 2020 15:18:14 +0000 Subject: RESTRICT AUTOMERGE Revert submission 10383599-type-presentation-q Reason for revert: Breaks apps using Presentation in combination with private virtual displays Reverted Changes: I2aaab1903:RESTRICT AUTOMERGE Block TYPE_PRESENTATION windows... Ib5a24f8be:RESTRICT AUTOMERGE Add test for Presentation Bug: 141745510 Change-Id: I0b3a332c286900952b65ece12435f981e324cb5b (cherry picked from commit a9211d687df742350916103f50ace9953c1abf48) --- core/java/android/app/Presentation.java | 16 +++++++--------- .../java/com/android/server/wm/WindowManagerService.java | 8 -------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/core/java/android/app/Presentation.java b/core/java/android/app/Presentation.java index b3a39f5025c7..cb72d4d5dc2c 100644 --- a/core/java/android/app/Presentation.java +++ b/core/java/android/app/Presentation.java @@ -26,18 +26,18 @@ import android.content.res.Resources; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; import android.os.Binder; -import android.os.Handler; import android.os.IBinder; -import android.os.Message; -import android.util.DisplayMetrics; -import android.util.Log; -import android.util.TypedValue; import android.view.ContextThemeWrapper; import android.view.Display; import android.view.Gravity; import android.view.Window; import android.view.WindowManager; import android.view.WindowManagerImpl; +import android.os.Handler; +import android.os.Message; +import android.util.DisplayMetrics; +import android.util.Log; +import android.util.TypedValue; /** * Base class for presentations. @@ -116,9 +116,7 @@ import android.view.WindowManagerImpl; * The display manager keeps track of all displays in the system. However, not all * displays are appropriate for showing presentations. For example, if an activity * attempted to show a presentation on the main display it might obscure its own content - * (it's like opening a dialog on top of your activity). Creating a presentation on the main - * display will result in {@link android.view.WindowManager.InvalidDisplayException} being thrown - * when invoking {@link #show()}. + * (it's like opening a dialog on top of your activity). *

* Here's how to identify suitable displays for showing presentations using * {@link DisplayManager#getDisplays(String)} and the @@ -245,7 +243,7 @@ public class Presentation extends Dialog { /** * Inherited from {@link Dialog#show}. Will throw * {@link android.view.WindowManager.InvalidDisplayException} if the specified secondary - * {@link Display} can't be found or if it does not have {@link Display#FLAG_PRESENTATION} set. + * {@link Display} can't be found. */ @Override public void show() { diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 86427a12c610..f67b4fe78f58 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -61,7 +61,6 @@ import static android.view.WindowManager.LayoutParams.TYPE_DREAM; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; -import static android.view.WindowManager.LayoutParams.TYPE_PRESENTATION; import static android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION; import static android.view.WindowManager.LayoutParams.TYPE_QS_DIALOG; import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR; @@ -1298,13 +1297,6 @@ public class WindowManagerService extends IWindowManager.Stub return WindowManagerGlobal.ADD_PERMISSION_DENIED; } - if (type == TYPE_PRESENTATION && !displayContent.getDisplay().isPublicPresentation()) { - Slog.w(TAG_WM, - "Attempted to add presentation window to a non-suitable display. " - + "Aborting."); - return WindowManagerGlobal.ADD_INVALID_DISPLAY; - } - AppWindowToken atoken = null; final boolean hasParent = parentWindow != null; // Use existing parent window token for child windows since they go in the same token -- cgit v1.2.3