diff options
Diffstat (limited to 'core/java')
3 files changed, 65 insertions, 7 deletions
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index 53a4c0d0..0856492 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -49,7 +49,7 @@ import android.util.Log; public interface WindowManager extends ViewManager { /** * Exception that is thrown when trying to add view whose - * {@link WindowManager.LayoutParams} {@link WindowManager.LayoutParams#token} + * {@link LayoutParams} {@link LayoutParams#token} * is invalid. */ public static class BadTokenException extends RuntimeException { @@ -173,7 +173,6 @@ public interface WindowManager extends ViewManager { * @see #TYPE_SEARCH_BAR * @see #TYPE_PHONE * @see #TYPE_SYSTEM_ALERT - * @see #TYPE_KEYGUARD * @see #TYPE_TOAST * @see #TYPE_SYSTEM_OVERLAY * @see #TYPE_PRIORITY_PHONE @@ -197,7 +196,6 @@ public interface WindowManager extends ViewManager { @ViewDebug.IntToString(from = TYPE_SEARCH_BAR, to = "TYPE_SEARCH_BAR"), @ViewDebug.IntToString(from = TYPE_PHONE, to = "TYPE_PHONE"), @ViewDebug.IntToString(from = TYPE_SYSTEM_ALERT, to = "TYPE_SYSTEM_ALERT"), - @ViewDebug.IntToString(from = TYPE_KEYGUARD, to = "TYPE_KEYGUARD"), @ViewDebug.IntToString(from = TYPE_TOAST, to = "TYPE_TOAST"), @ViewDebug.IntToString(from = TYPE_SYSTEM_OVERLAY, to = "TYPE_SYSTEM_OVERLAY"), @ViewDebug.IntToString(from = TYPE_PRIORITY_PHONE, to = "TYPE_PRIORITY_PHONE"), @@ -341,13 +339,13 @@ public interface WindowManager extends ViewManager { * In multiuser systems shows only on the owning user's window. */ public static final int TYPE_SYSTEM_ALERT = FIRST_SYSTEM_WINDOW+3; - + /** * Window type: keyguard window. * In multiuser systems shows on all users' windows. */ public static final int TYPE_KEYGUARD = FIRST_SYSTEM_WINDOW+4; - + /** * Window type: transient notifications. * In multiuser systems shows only on the owning user's window. @@ -913,7 +911,6 @@ public interface WindowManager extends ViewManager { */ public static final int FLAG_NEEDS_MENU_KEY = 0x40000000; - /** * Various behavioral options/flags. Default is none. * @@ -1087,6 +1084,14 @@ public interface WindowManager extends ViewManager { public static final int PRIVATE_FLAG_INHERIT_TRANSLUCENT_DECOR = 0x00000200; /** + * Flag whether the current window is a keyguard window, meaning that it will hide all other + * windows behind it except for windows with flag {@link #FLAG_SHOW_WHEN_LOCKED} set. + * Further, this can only be set by {@link LayoutParams#TYPE_STATUS_BAR}. + * {@hide} + */ + public static final int PRIVATE_FLAG_KEYGUARD = 0x00000400; + + /** * Control flags that are private to the platform. * @hide */ diff --git a/core/java/com/android/internal/policy/IKeyguardService.aidl b/core/java/com/android/internal/policy/IKeyguardService.aidl index 63ff5a0..7fc024d 100644 --- a/core/java/com/android/internal/policy/IKeyguardService.aidl +++ b/core/java/com/android/internal/policy/IKeyguardService.aidl @@ -30,7 +30,19 @@ interface IKeyguardService { boolean isDismissable(); oneway void verifyUnlock(IKeyguardExitCallback callback); oneway void keyguardDone(boolean authenticated, boolean wakeup); - oneway void setHidden(boolean isHidden); + + /** + * Hides the Keyguard when a window comes on top of the Keyguard with flag + * FLAG_SHOW_ON_LOCK_SCREEN. + * + * @param isHidden Whether the Keyguard should be hidden. + * @return See IKeyguardServiceConstants.KEYGUARD_SERVICE_HIDE_*. This is needed because + * PhoneWindowManager needs to set these flags immediately and can't wait for the + * Keyguard thread to pick it up. In the hidden case, PhoneWindowManager is solely + * responsible to make sure that the flags are unset. + */ + int setHidden(boolean isHidden); + oneway void dismiss(); oneway void onDreamingStarted(); oneway void onDreamingStopped(); diff --git a/core/java/com/android/internal/policy/IKeyguardServiceConstants.java b/core/java/com/android/internal/policy/IKeyguardServiceConstants.java new file mode 100644 index 0000000..d94cca7 --- /dev/null +++ b/core/java/com/android/internal/policy/IKeyguardServiceConstants.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.internal.policy; + +/** + * @hide + */ +public class IKeyguardServiceConstants { + + /** + * Constant for {@link com.android.internal.policy.IKeyguardService#setHidden(boolean)}: + * Don't change the keyguard window flags. + */ + public static final int KEYGUARD_SERVICE_HIDE_RESULT_NONE = 0; + + /** + * Constant for {@link com.android.internal.policy.IKeyguardService#setHidden(boolean)}: + * Set the keyguard window flags to FLAG_SHOW_WALLPAPER and PRIVATE_FLAG_KEYGUARD. + */ + public static final int KEYGUARD_SERVICE_HIDE_RESULT_SET_FLAGS = 1; + + /** + * Constant for {@link com.android.internal.policy.IKeyguardService#setHidden(boolean)}: + * Unset the keyguard window flags to FLAG_SHOW_WALLPAPER and PRIVATE_FLAG_KEYGUARD. + */ + public static final int KEYGUARD_SERVICE_HIDE_RESULT_UNSET_FLAGS = 2; +} |