Merge "Don't allow windows with invalid types to be added." into lmp-mr1-dev

This commit is contained in:
Wale Ogunwale
2015-01-12 22:03:49 +00:00
committed by Android (Google) Code Review
3 changed files with 28 additions and 17 deletions

View File

@@ -590,6 +590,10 @@ public final class ViewRootImpl implements ViewParent,
throw new WindowManager.InvalidDisplayException( throw new WindowManager.InvalidDisplayException(
"Unable to add window " + mWindow + "Unable to add window " + mWindow +
" -- the specified display can not be found"); " -- 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( throw new RuntimeException(
"Unable to add window -- unknown error code " + res); "Unable to add window -- unknown error code " + res);

View File

@@ -103,6 +103,7 @@ public final class WindowManagerGlobal {
public static final int ADD_MULTIPLE_SINGLETON = -7; public static final int ADD_MULTIPLE_SINGLETON = -7;
public static final int ADD_PERMISSION_DENIED = -8; public static final int ADD_PERMISSION_DENIED = -8;
public static final int ADD_INVALID_DISPLAY = -9; public static final int ADD_INVALID_DISPLAY = -9;
public static final int ADD_INVALID_TYPE = -10;
private static WindowManagerGlobal sDefaultWindowManager; private static WindowManagerGlobal sDefaultWindowManager;
private static IWindowManager sWindowManagerService; private static IWindowManager sWindowManagerService;

View File

@@ -1641,8 +1641,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
outAppOp[0] = AppOpsManager.OP_NONE; outAppOp[0] = AppOpsManager.OP_NONE;
if (type < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW if (!((type >= FIRST_APPLICATION_WINDOW && type <= LAST_APPLICATION_WINDOW)
|| type > WindowManager.LayoutParams.LAST_SYSTEM_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; return WindowManagerGlobal.ADD_OKAY;
} }
String permission = null; String permission = null;