summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/ViewRootImpl.java34
-rw-r--r--core/java/android/view/WindowManagerGlobal.java1
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneWindowManager.java10
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;