diff options
-rw-r--r-- | core/java/android/view/ViewRootImpl.java | 34 | ||||
-rw-r--r-- | core/java/android/view/WindowManagerGlobal.java | 1 | ||||
-rw-r--r-- | policy/src/com/android/internal/policy/impl/PhoneWindowManager.java | 10 |
3 files changed, 28 insertions, 17 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 34c27d78e856..a8bc5c948517 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -560,39 +560,43 @@ public final class ViewRootImpl implements ViewParent, case WindowManagerGlobal.ADD_BAD_APP_TOKEN: case WindowManagerGlobal.ADD_BAD_SUBWINDOW_TOKEN: throw new WindowManager.BadTokenException( - "Unable to add window -- token " + attrs.token - + " is not valid; is your activity running?"); + "Unable to add window -- token " + attrs.token + + " is not valid; is your activity running?"); case WindowManagerGlobal.ADD_NOT_APP_TOKEN: throw new WindowManager.BadTokenException( - "Unable to add window -- token " + attrs.token - + " is not for an application"); + "Unable to add window -- token " + attrs.token + + " is not for an application"); case WindowManagerGlobal.ADD_APP_EXITING: throw new WindowManager.BadTokenException( - "Unable to add window -- app for token " + attrs.token - + " is exiting"); + "Unable to add window -- app for token " + attrs.token + + " is exiting"); case WindowManagerGlobal.ADD_DUPLICATE_ADD: throw new WindowManager.BadTokenException( - "Unable to add window -- window " + mWindow - + " has already been added"); + "Unable to add window -- window " + mWindow + + " has already been added"); case WindowManagerGlobal.ADD_STARTING_NOT_NEEDED: // Silently ignore -- we would have just removed it // right away, anyway. return; case WindowManagerGlobal.ADD_MULTIPLE_SINGLETON: throw new WindowManager.BadTokenException( - "Unable to add window " + mWindow + - " -- another window of this type already exists"); + "Unable to add window " + mWindow + + " -- another window of this type already exists"); case WindowManagerGlobal.ADD_PERMISSION_DENIED: throw new WindowManager.BadTokenException( - "Unable to add window " + mWindow + - " -- permission denied for this window type"); + "Unable to add window " + mWindow + + " -- permission denied for this window type"); case WindowManagerGlobal.ADD_INVALID_DISPLAY: throw new WindowManager.InvalidDisplayException( - "Unable to add window " + mWindow + - " -- the specified display can not be found"); + "Unable to add window " + mWindow + + " -- the specified display can not be found"); + case WindowManagerGlobal.ADD_INVALID_TYPE: + throw new WindowManager.InvalidDisplayException( + "Unable to add window " + mWindow + + " -- the specified window type is not valid"); } throw new RuntimeException( - "Unable to add window -- unknown error code " + res); + "Unable to add window -- unknown error code " + res); } if (view instanceof RootViewSurfaceTaker) { diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java index 0d82087e8ee0..a14c7661fb45 100644 --- a/core/java/android/view/WindowManagerGlobal.java +++ b/core/java/android/view/WindowManagerGlobal.java @@ -103,6 +103,7 @@ public final class WindowManagerGlobal { public static final int ADD_MULTIPLE_SINGLETON = -7; public static final int ADD_PERMISSION_DENIED = -8; public static final int ADD_INVALID_DISPLAY = -9; + public static final int ADD_INVALID_TYPE = -10; private static WindowManagerGlobal sDefaultWindowManager; private static IWindowManager sWindowManagerService; diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index f8c630e58bc2..7124e5bf228b 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -1641,8 +1641,14 @@ public class PhoneWindowManager implements WindowManagerPolicy { outAppOp[0] = AppOpsManager.OP_NONE; - if (type < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW - || type > WindowManager.LayoutParams.LAST_SYSTEM_WINDOW) { + if (!((type >= FIRST_APPLICATION_WINDOW && type <= LAST_APPLICATION_WINDOW) + || (type >= FIRST_SUB_WINDOW && type <= LAST_SUB_WINDOW) + || (type >= FIRST_SYSTEM_WINDOW && type <= LAST_SYSTEM_WINDOW))) { + return WindowManagerGlobal.ADD_INVALID_TYPE; + } + + if (type < FIRST_SYSTEM_WINDOW || type > LAST_SYSTEM_WINDOW) { + // Window manager will make sure these are okay. return WindowManagerGlobal.ADD_OKAY; } String permission = null; |