Show error dialogs over apps that dismiss keyguard

automerge: c08eab8

* commit 'c08eab81f30a3120ec0929d3508b4a78d498e1ff':
  Show error dialogs over apps that dismiss keyguard
This commit is contained in:
Craig Mautner
2014-11-12 01:17:48 +00:00
committed by android-build-merger
7 changed files with 11 additions and 21 deletions

View File

@@ -44,7 +44,6 @@ public final class InputWindowHandle {
// Window layout params attributes. (WindowManager.LayoutParams) // Window layout params attributes. (WindowManager.LayoutParams)
public int layoutParamsFlags; public int layoutParamsFlags;
public int layoutParamsPrivateFlags;
public int layoutParamsType; public int layoutParamsType;
// Dispatching timeout. // Dispatching timeout.

View File

@@ -114,7 +114,6 @@ class DragState {
mDragWindowHandle.inputChannel = mServerChannel; mDragWindowHandle.inputChannel = mServerChannel;
mDragWindowHandle.layer = getDragLayerLw(); mDragWindowHandle.layer = getDragLayerLw();
mDragWindowHandle.layoutParamsFlags = 0; mDragWindowHandle.layoutParamsFlags = 0;
mDragWindowHandle.layoutParamsPrivateFlags = 0;
mDragWindowHandle.layoutParamsType = WindowManager.LayoutParams.TYPE_DRAG; mDragWindowHandle.layoutParamsType = WindowManager.LayoutParams.TYPE_DRAG;
mDragWindowHandle.dispatchingTimeoutNanos = mDragWindowHandle.dispatchingTimeoutNanos =
WindowManagerService.DEFAULT_INPUT_DISPATCHING_TIMEOUT_NANOS; WindowManagerService.DEFAULT_INPUT_DISPATCHING_TIMEOUT_NANOS;

View File

@@ -38,7 +38,7 @@ public final class FakeWindowImpl implements WindowManagerPolicy.FakeWindow {
public FakeWindowImpl(WindowManagerService service, public FakeWindowImpl(WindowManagerService service,
Looper looper, InputEventReceiver.Factory inputEventReceiverFactory, Looper looper, InputEventReceiver.Factory inputEventReceiverFactory,
String name, int windowType, int layoutParamsFlags, int layoutParamsPrivateFlags, String name, int windowType, int layoutParamsFlags,
boolean canReceiveKeys, boolean hasFocus, boolean touchFullscreen) { boolean canReceiveKeys, boolean hasFocus, boolean touchFullscreen) {
mService = service; mService = service;
@@ -61,7 +61,6 @@ public final class FakeWindowImpl implements WindowManagerPolicy.FakeWindow {
mWindowLayer = getLayerLw(windowType); mWindowLayer = getLayerLw(windowType);
mWindowHandle.layer = mWindowLayer; mWindowHandle.layer = mWindowLayer;
mWindowHandle.layoutParamsFlags = layoutParamsFlags; mWindowHandle.layoutParamsFlags = layoutParamsFlags;
mWindowHandle.layoutParamsPrivateFlags = layoutParamsPrivateFlags;
mWindowHandle.layoutParamsType = windowType; mWindowHandle.layoutParamsType = windowType;
mWindowHandle.dispatchingTimeoutNanos = mWindowHandle.dispatchingTimeoutNanos =
WindowManagerService.DEFAULT_INPUT_DISPATCHING_TIMEOUT_NANOS; WindowManagerService.DEFAULT_INPUT_DISPATCHING_TIMEOUT_NANOS;

View File

@@ -168,8 +168,8 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
} }
private void addInputWindowHandleLw(final InputWindowHandle inputWindowHandle, private void addInputWindowHandleLw(final InputWindowHandle inputWindowHandle,
final WindowState child, int flags, int privateFlags, final int type, final WindowState child, int flags, final int type, final boolean isVisible,
final boolean isVisible, final boolean hasFocus, final boolean hasWallpaper) { final boolean hasFocus, final boolean hasWallpaper) {
// Add a window to our list of input windows. // Add a window to our list of input windows.
inputWindowHandle.name = child.toString(); inputWindowHandle.name = child.toString();
final boolean modal = (flags & (WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL final boolean modal = (flags & (WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
@@ -184,7 +184,6 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
child.getTouchableRegion(inputWindowHandle.touchableRegion); child.getTouchableRegion(inputWindowHandle.touchableRegion);
} }
inputWindowHandle.layoutParamsFlags = flags; inputWindowHandle.layoutParamsFlags = flags;
inputWindowHandle.layoutParamsPrivateFlags = privateFlags;
inputWindowHandle.layoutParamsType = type; inputWindowHandle.layoutParamsType = type;
inputWindowHandle.dispatchingTimeoutNanos = child.getInputDispatchingTimeoutNanos(); inputWindowHandle.dispatchingTimeoutNanos = child.getInputDispatchingTimeoutNanos();
inputWindowHandle.visible = isVisible; inputWindowHandle.visible = isVisible;
@@ -298,15 +297,14 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
final WindowState u = universeBackground.mWin; final WindowState u = universeBackground.mWin;
if (u.mInputChannel != null && u.mInputWindowHandle != null) { if (u.mInputChannel != null && u.mInputWindowHandle != null) {
addInputWindowHandleLw(u.mInputWindowHandle, u, u.mAttrs.flags, addInputWindowHandleLw(u.mInputWindowHandle, u, u.mAttrs.flags,
u.mAttrs.privateFlags, u.mAttrs.type, u.mAttrs.type, true, u == mInputFocus, false);
true, u == mInputFocus, false);
} }
addedUniverse = true; addedUniverse = true;
} }
if (child.mWinAnimator != universeBackground) { if (child.mWinAnimator != universeBackground) {
addInputWindowHandleLw(inputWindowHandle, child, flags, privateFlags, type, addInputWindowHandleLw(inputWindowHandle, child, flags, type, isVisible,
isVisible, hasFocus, hasWallpaper); hasFocus, hasWallpaper);
} }
} }
} }

View File

@@ -20,6 +20,7 @@ import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED; import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_SYSTEM_ERROR;
import static com.android.server.wm.WindowManagerService.DEBUG_KEYGUARD; import static com.android.server.wm.WindowManagerService.DEBUG_KEYGUARD;
import static com.android.server.wm.WindowManagerService.LayoutFields.SET_UPDATE_ROTATION; import static com.android.server.wm.WindowManagerService.LayoutFields.SET_UPDATE_ROTATION;
import static com.android.server.wm.WindowManagerService.LayoutFields.SET_WALLPAPER_MAY_CHANGE; import static com.android.server.wm.WindowManagerService.LayoutFields.SET_WALLPAPER_MAY_CHANGE;
@@ -330,7 +331,9 @@ public class WindowAnimator {
+ " anim=" + win.mWinAnimator.mAnimation); + " anim=" + win.mWinAnimator.mAnimation);
} else if (mPolicy.canBeForceHidden(win, win.mAttrs)) { } else if (mPolicy.canBeForceHidden(win, win.mAttrs)) {
final boolean hideWhenLocked = !((win.mIsImWindow && showImeOverKeyguard) || final boolean hideWhenLocked = !((win.mIsImWindow && showImeOverKeyguard) ||
(appShowWhenLocked != null && appShowWhenLocked == win.mAppToken)); (appShowWhenLocked != null && (appShowWhenLocked == win.mAppToken ||
// Show error dialogs over apps that dismiss keyguard.
(win.mAttrs.privateFlags & PRIVATE_FLAG_SYSTEM_ERROR) != 0)));
if (((mForceHiding == KEYGUARD_ANIMATING_IN) if (((mForceHiding == KEYGUARD_ANIMATING_IN)
&& (!winAnimator.isAnimating() || hideWhenLocked)) && (!winAnimator.isAnimating() || hideWhenLocked))
|| ((mForceHiding == KEYGUARD_SHOWN) && hideWhenLocked)) { || ((mForceHiding == KEYGUARD_SHOWN) && hideWhenLocked)) {

View File

@@ -10791,9 +10791,7 @@ public class WindowManagerService extends IWindowManager.Stub
boolean canReceiveKeys, boolean hasFocus, boolean touchFullscreen) { boolean canReceiveKeys, boolean hasFocus, boolean touchFullscreen) {
synchronized (mWindowMap) { synchronized (mWindowMap) {
FakeWindowImpl fw = new FakeWindowImpl(this, looper, inputEventReceiverFactory, FakeWindowImpl fw = new FakeWindowImpl(this, looper, inputEventReceiverFactory,
name, windowType, name, windowType, layoutParamsFlags, canReceiveKeys, hasFocus, touchFullscreen);
layoutParamsFlags, layoutParamsPrivateFlags, canReceiveKeys,
hasFocus, touchFullscreen);
int i=0; int i=0;
while (i<mFakeWindows.size()) { while (i<mFakeWindows.size()) {
if (mFakeWindows.get(i).mWindowLayer <= fw.mWindowLayer) { if (mFakeWindows.get(i).mWindowLayer <= fw.mWindowLayer) {

View File

@@ -36,7 +36,6 @@ static struct {
jfieldID inputChannel; jfieldID inputChannel;
jfieldID name; jfieldID name;
jfieldID layoutParamsFlags; jfieldID layoutParamsFlags;
jfieldID layoutParamsPrivateFlags;
jfieldID layoutParamsType; jfieldID layoutParamsType;
jfieldID dispatchingTimeoutNanos; jfieldID dispatchingTimeoutNanos;
jfieldID frameLeft; jfieldID frameLeft;
@@ -113,8 +112,6 @@ bool NativeInputWindowHandle::updateInfo() {
mInfo->layoutParamsFlags = env->GetIntField(obj, mInfo->layoutParamsFlags = env->GetIntField(obj,
gInputWindowHandleClassInfo.layoutParamsFlags); gInputWindowHandleClassInfo.layoutParamsFlags);
mInfo->layoutParamsPrivateFlags = env->GetIntField(obj,
gInputWindowHandleClassInfo.layoutParamsPrivateFlags);
mInfo->layoutParamsType = env->GetIntField(obj, mInfo->layoutParamsType = env->GetIntField(obj,
gInputWindowHandleClassInfo.layoutParamsType); gInputWindowHandleClassInfo.layoutParamsType);
mInfo->dispatchingTimeout = env->GetLongField(obj, mInfo->dispatchingTimeout = env->GetLongField(obj,
@@ -251,9 +248,6 @@ int register_android_server_InputWindowHandle(JNIEnv* env) {
GET_FIELD_ID(gInputWindowHandleClassInfo.layoutParamsFlags, clazz, GET_FIELD_ID(gInputWindowHandleClassInfo.layoutParamsFlags, clazz,
"layoutParamsFlags", "I"); "layoutParamsFlags", "I");
GET_FIELD_ID(gInputWindowHandleClassInfo.layoutParamsPrivateFlags, clazz,
"layoutParamsPrivateFlags", "I");
GET_FIELD_ID(gInputWindowHandleClassInfo.layoutParamsType, clazz, GET_FIELD_ID(gInputWindowHandleClassInfo.layoutParamsType, clazz,
"layoutParamsType", "I"); "layoutParamsType", "I");