From 3ae0d3157d5fdeee851f3e72b80f4ed57add0ff8 Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Fri, 7 Nov 2014 12:13:02 -0800 Subject: [PATCH 1/2] Fixed constant window switching on lock screen with Swype KB. We allow TYPE_INPUT_METHOD windows to show on the lock screen. These windows can attached other types of windows (For this case the Swype KB was attaching a PopupWinow which will be of TYPE_APPLICATION). This causes the popup window app token to be added to the list of apps to be hidden on the lock screen, thereby preventing the lock screen from been hidden, which then causes a layout cycle(s). Now, we remove app tokens for non-app windows from the hidden list in case it was added by any attached widow they migth have. Also, when we are updating window animations, set the hideWhenLocked flag for windows that are IME tragets so they don't go through unneeded cycles of having their visibility policy set to hide/show/hide/show/... Bug: 18021493 Change-Id: I3680256d41793f62def42fda00e26db1dcc990cc --- core/java/android/view/WindowManagerPolicy.java | 7 ++++--- .../internal/policy/impl/PhoneWindowManager.java | 12 +++++++++--- .../java/com/android/server/wm/WindowAnimator.java | 2 +- .../com/android/server/wm/WindowManagerService.java | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index b8e94eee2ef20..94f3e7aa8621b 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -901,12 +901,13 @@ public interface WindowManagerPolicy { /** * Called following layout of all window to apply policy to each window. - * + * * @param win The window being positioned. - * @param attrs The LayoutParams of the window. + * @param attrs The LayoutParams of the window. + * @param attached For sub-windows, the window it is attached to. Otherwise null. */ public void applyPostLayoutPolicyLw(WindowState win, - WindowManager.LayoutParams attrs); + WindowManager.LayoutParams attrs, WindowState attached); /** * Called following layout of all windows and after policy has been applied diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index 24de9a85ea82d..b6705840cf34a 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -3985,7 +3985,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** {@inheritDoc} */ @Override - public void applyPostLayoutPolicyLw(WindowState win, WindowManager.LayoutParams attrs) { + public void applyPostLayoutPolicyLw(WindowState win, WindowManager.LayoutParams attrs, + WindowState attached) { + if (DEBUG_LAYOUT) Slog.i(TAG, "Win " + win + ": isVisibleOrBehindKeyguardLw=" + win.isVisibleOrBehindKeyguardLw()); final int fl = PolicyControl.getWindowFlags(win, attrs); @@ -4024,8 +4026,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { final boolean showWhenLocked = (fl & FLAG_SHOW_WHEN_LOCKED) != 0; final boolean dismissKeyguard = (fl & FLAG_DISMISS_KEYGUARD) != 0; final boolean secureKeyguard = isKeyguardSecure(); - if (appWindow) { - final IApplicationToken appToken = win.getAppToken(); + final IApplicationToken appToken = win.getAppToken(); + + // For app windows that are not attached, we decide if all windows in the app they + // represent should be hidden or if we should hide the lockscreen. For attached app + // windows we defer the decision to the window it is attached to. + if (appWindow && attached == null) { if (showWhenLocked) { // Remove any previous windows with the same appToken. mAppsToBeHidden.remove(appToken); diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java index a90cc9572c687..5deb1cd066eee 100644 --- a/services/core/java/com/android/server/wm/WindowAnimator.java +++ b/services/core/java/com/android/server/wm/WindowAnimator.java @@ -333,7 +333,7 @@ public class WindowAnimator { + " hidden=" + win.mRootToken.hidden + " anim=" + win.mWinAnimator.mAnimation); } else if (mPolicy.canBeForceHidden(win, win.mAttrs)) { - final boolean hideWhenLocked = !((win.mIsImWindow && showImeOverKeyguard) || + final boolean hideWhenLocked = !((win.mIsImWindow || imeTarget == win) && showImeOverKeyguard) || (appShowWhenLocked != null && (appShowWhenLocked == win.mAppToken || // Show error dialogs over apps that dismiss keyguard. (win.mAttrs.privateFlags & PRIVATE_FLAG_SYSTEM_ERROR) != 0))); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 1e492a596f54e..eb418ed6b417f 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -9687,7 +9687,7 @@ public class WindowManagerService extends IWindowManager.Stub for (i = windows.size() - 1; i >= 0; i--) { WindowState w = windows.get(i); if (w.mHasSurface) { - mPolicy.applyPostLayoutPolicyLw(w, w.mAttrs); + mPolicy.applyPostLayoutPolicyLw(w, w.mAttrs, w.mAttachedWindow); } } displayContent.pendingLayoutChanges |= mPolicy.finishPostLayoutPolicyLw(); From 3830c60b9ce4e467ccd63328620b41d75cd58e6b Mon Sep 17 00:00:00 2001 From: Geoff Mendal Date: Wed, 12 Nov 2014 08:55:50 -0800 Subject: [PATCH 2/2] Import translations. DO NOT MERGE Change-Id: I629a49e626a3121f8df33574952162672c943341 Auto-generated-cl: translation import --- packages/SystemUI/res/values-ar/strings.xml | 24 +++++++------------ .../SystemUI/res/values-en-rGB/strings.xml | 24 +++++++------------ .../SystemUI/res/values-en-rIN/strings.xml | 24 +++++++------------ .../SystemUI/res/values-hy-rAM/strings.xml | 24 +++++++------------ .../SystemUI/res/values-lo-rLA/strings.xml | 24 +++++++------------ packages/SystemUI/res/values-lt/strings.xml | 24 +++++++------------ packages/SystemUI/res/values-pt/strings.xml | 2 +- packages/SystemUI/res/values-sv/strings.xml | 24 +++++++------------ 8 files changed, 57 insertions(+), 113 deletions(-) diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 903ab3eae0dd8..f86ee4c3d746b 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -354,20 +354,12 @@ "إعداد" "تم كتم الصوت بواسطة %1$s" "%1$s. %2$s" - - - - - - - - - - - - - - - - + "تم تثبيت الشاشة" + "يساعد هذا على استمرار العرض حتى يتم إلغاء التثبيت. ويمكنك لمس \"رجوع\" و\"عرض عام\" مع الاستمرار في وقت واحد لإلغاء التثبيت." + "يساعد هذا على استمرار العرض حتى يتم إلغاء التثبيت. ويمكنك لمس \"عرض عام\" مع الاستمرار في وقت واحد لإلغاء التثبيت." + "حسنًا" + "لا، شكرًا" + "هل تريد إخفاء %1$s؟" + "سيظهر مرة أخرى عند تمكينه في الإعدادات المرة التالية." + "إخفاء" diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 8bac5f76f01b7..c51460cbae6db 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -354,20 +354,12 @@ "Setup" "Muted by %1$s" "%1$s. %2$s" - - - - - - - - - - - - - - - - + "Screen is pinned" + "This keeps it in view until you unpin. Touch and hold Back and Overview at the same time to unpin." + "This keeps it in view until you unpin. Touch and hold Overview to unpin." + "Got it" + "No, thanks" + "Hide %1$s?" + "It will reappear the next time you turn it on in settings." + "Hide" diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 8bac5f76f01b7..c51460cbae6db 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -354,20 +354,12 @@ "Setup" "Muted by %1$s" "%1$s. %2$s" - - - - - - - - - - - - - - - - + "Screen is pinned" + "This keeps it in view until you unpin. Touch and hold Back and Overview at the same time to unpin." + "This keeps it in view until you unpin. Touch and hold Overview to unpin." + "Got it" + "No, thanks" + "Hide %1$s?" + "It will reappear the next time you turn it on in settings." + "Hide" diff --git a/packages/SystemUI/res/values-hy-rAM/strings.xml b/packages/SystemUI/res/values-hy-rAM/strings.xml index 5f955bceae886..d0099ee3ebabf 100644 --- a/packages/SystemUI/res/values-hy-rAM/strings.xml +++ b/packages/SystemUI/res/values-hy-rAM/strings.xml @@ -354,20 +354,12 @@ "Կարգավորել" "Համրեցվել է %1$s-ի կողմից" "%1$s. %2$s" - - - - - - - - - - - - - - - - + "Էկրանն ամրացված է" + "Էկրանը կմնա տեսադաշտում մինչև այն ապամրացնելը: Միաժամանակ հպեք և պահեք Համատեսքի և Հետ կոճակները՝ ապամրացնելու համար:" + "Էկրանը կմնա տեսադաշտում մինչև այն ապամրացնելը: Հպեք և պահեք Համատեսքի կոճակին՝ ապամրացնելու համար:" + "Հասկանալի է" + "Ոչ, շնորհակալություն" + "Թաքցնե՞լ %1$s-ը:" + "Այն դարձյալ կհայտնվի, հենց որ նորից միացնեք կարգավորումներից:" + "Թաքցնել" diff --git a/packages/SystemUI/res/values-lo-rLA/strings.xml b/packages/SystemUI/res/values-lo-rLA/strings.xml index 0bdf44fd764d2..e7cce7ad416e8 100644 --- a/packages/SystemUI/res/values-lo-rLA/strings.xml +++ b/packages/SystemUI/res/values-lo-rLA/strings.xml @@ -354,20 +354,12 @@ "ຕັ້ງຄ່າ" "ຖືກ​ປິດ​ສຽງ​ໂດຍ %1$s" "%1$s. %2$s" - - - - - - - - - - - - - - - - + "ປັກ​ໝຸດໜ້າ​ຈໍ​ແລ້ວ" + "ມັນ​ຈະ​ຮັກ​ສາ​ໜ້າ​ຈໍ​ໄວ້​ໃນ​ມຸມມອງ​ຂອງ​ທ່ານ​ຈົນ​ກວ່າ​ທ່ານ​ຈະ​ຖອດ​ໝຸດ. ​ສຳ​ຜັດ​ປຸ່ມ ກັບ​ຄືນ ແລະ ພາບ​ຮວມ​ ຄ້າງ​ໄວ້​ພ້ອມ​ກັນ​ເພື່ອ​ຖອດ​ໝຸດ." + "ມັນ​ຈະ​ຮັກ​ສາ​ໜ້າ​ຈໍ​ໄວ້​ໃນ​ມຸມມອງ​ຂອງ​ທ່ານ​ຈົນ​ກວ່າ​ທ່ານ​ຈະ​ຖອດ​ໝຸດ. ​ສຳ​ຜັດ​ປຸ່ມ ພາບ​ຮວມ​ ຄ້າງ​ໄວ້​ເພື່ອ​ຖອດ​ໝຸດ." + "ເຂົ້າໃຈແລ້ວ" + "ບໍ່, ຂອບໃຈ" + "ເຊື່ອງ %1$s ຫຼື​ບໍ່?" + "​ມັນ​ຈະ​ສະ​ແດງ​ຄືນ​ໃໝ່​ເມື່ອ​ທ່ານ​ເປີດ​ນຳ​ໃຊ້​ມັນ​ໃນ​ການ​ຕັ້ງ​ຄ່າ​ຄັ້ງ​ຕໍ່​ໄປ." + "ເຊື່ອງ" diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index 877b654c63094..877f5b1831d4c 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -354,20 +354,12 @@ "Nustatyti" "Nutildė %1$s" "%1$s. %2$s" - - - - - - - - - - - - - - - - + "Ekranas prisegtas" + "Tai bus rodoma, kol atsegsite. Kad atsegtumėte, tuo pačiu metu palieskite ir laikykite „Atgal“ ir „Apžvalga“." + "Tai bus rodoma, kol atsegsite. Kad atsegtumėte, palieskite ir laikykite „Apžvalga“." + "Supratau" + "Ne, ačiū" + "Slėpti „%1$s“?" + "Tai bus vėl parodyta, kai kitą kartą įjungsite tai nustatymuose." + "Slėpti" diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 698be772fbb72..411563344f3a6 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -298,7 +298,7 @@ "Notificações menos urgentes abaixo" "Toque novamente para abrir" "Deslize para cima para desbloquear" - "Deslize para a esquerda para usar o telefone" + "Deslize para a direita para usar o telefone" "Deslize para a esquerda para usar a câmera" "Nenhum" "Prioridade" diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 5d70f06625b8f..8abba040f855d 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -354,20 +354,12 @@ "Konfig." "%1$s har stängt av ljudet" "%1$s. %2$s" - - - - - - - - - - - - - - - - + "Skärmen har fästs" + "Detta visar skärmen tills du lossar den. Tryck länge på bakåtknappen och Översikt samtidigt om du vill lossa skärmen." + "Detta visar skärmen tills du lossar den. Tryck länge på Översikt om du vill lossa skärmen." + "OK" + "Nej tack" + "Vill du dölja %1$s?" + "Den visas på nytt nästa gång du aktiverar den i inställningarna." + "Dölj"