From 5c90c5e32e86cc7d634d218cd2b9536c0f5f6461 Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov Date: Mon, 17 Oct 2016 18:41:48 -0700 Subject: [PATCH] [DO NOT MERGE] Catch a missed case when adding a toast We allow a single toast window per UID. It is possible that the UID had another toast window that is going away and this CL adds a missed check for when a window is scheduled to be removed. bug:31340854 Change-Id: I0621516019542c85fe7121f7fe61659e4d4eb672 --- .../core/java/com/android/server/wm/DisplayContent.java | 7 +------ services/core/java/com/android/server/wm/WindowState.java | 6 ++++++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 7b1a523e74a48..e8104c4c93770 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -28,15 +28,11 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowState.RESIZE_HANDLE_WIDTH_IN_DP; import android.app.ActivityManager.StackId; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Region; import android.graphics.Region.Op; -import android.os.Build; -import android.os.UserHandle; import android.util.DisplayMetrics; import android.util.Slog; import android.view.Display; @@ -728,8 +724,7 @@ class DisplayContent { for (int i = 0; i < windowCount; i++) { WindowState window = windows.get(i); if (window.mAttrs.type == TYPE_TOAST && window.mOwnerUid == uid - && !window.mPermanentlyHidden && !window.mAnimatingExit - && !window.mRemoveOnExit) { + && !window.isRemovedOrHidden()) { return false; } } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 55bf39472b7bf..fbef2c626a9c7 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2961,4 +2961,10 @@ final class WindowState implements WindowManagerPolicy.WindowState { public boolean isRtl() { return mMergedConfiguration.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; } + + public boolean isRemovedOrHidden() { + return mPermanentlyHidden || mAnimatingExit + || mRemoveOnExit || mWindowRemovalAllowed + || mViewVisibility == View.GONE; + } }