From 410d808438ae0cd93c237502a062340c5cead134 Mon Sep 17 00:00:00 2001 From: Pavel Grafov Date: Thu, 29 Jun 2017 18:42:32 +0100 Subject: [PATCH] Show work profile status bar icon for lockscreen app. If currently active app is in work profile and is shown on top of keyguard (i.e. keyguard is occluded), we need to show work profile icon. Bug: 31796748 Test: manually, running navigation in Google Maps. Change-Id: I25e12ccf6a5def6efbee22f41bfa216c8acc3b26 --- .../com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java | 3 ++- .../src/com/android/systemui/statusbar/policy/KeyguardMonitor.java | 3 ++- .../com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java | 6 ++++++ .../src/com/android/systemui/utils/leaks/FakeKeyguardMonitor.java | 5 +++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java index f3ba5aaf887d..6cdb75706003 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java @@ -484,7 +484,8 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks, boolean isManagedProfile = mUserManager.isManagedProfile(userId); mHandler.post(() -> { final boolean showIcon; - if (isManagedProfile && !mKeyguardMonitor.isShowing()) { + if (isManagedProfile && + (!mKeyguardMonitor.isShowing() || mKeyguardMonitor.isOccluded())) { showIcon = true; mIconController.setIcon(mSlotManagedProfile, R.drawable.stat_sys_managed_profile_status, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java index 728005dde131..ccfbb26a61d2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java @@ -21,12 +21,13 @@ public interface KeyguardMonitor extends CallbackController { boolean isSecure(); boolean canSkipBouncer(); boolean isShowing(); + boolean isOccluded(); boolean isKeyguardFadingAway(); boolean isKeyguardGoingAway(); long getKeyguardFadingAwayDuration(); long getKeyguardFadingAwayDelay(); - public interface Callback { + interface Callback { void onKeyguardShowingChanged(); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java index 7bce33a2950d..5ead02f1f3f2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java @@ -58,6 +58,7 @@ public class KeyguardMonitorImpl extends KeyguardUpdateMonitorCallback }; } + @Override public void addCallback(Callback callback) { mCallbacks.add(callback); if (mCallbacks.size() != 0 && !mListening) { @@ -69,6 +70,7 @@ public class KeyguardMonitorImpl extends KeyguardUpdateMonitorCallback } } + @Override public void removeCallback(Callback callback) { if (mCallbacks.remove(callback) && mCallbacks.size() == 0 && mListening) { mListening = false; @@ -77,18 +79,22 @@ public class KeyguardMonitorImpl extends KeyguardUpdateMonitorCallback } } + @Override public boolean isShowing() { return mShowing; } + @Override public boolean isSecure() { return mSecure; } + @Override public boolean isOccluded() { return mOccluded; } + @Override public boolean canSkipBouncer() { return mCanSkipBouncer; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeKeyguardMonitor.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeKeyguardMonitor.java index 51e35cc3915e..3f952c3cbca9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeKeyguardMonitor.java +++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeKeyguardMonitor.java @@ -47,6 +47,11 @@ public class FakeKeyguardMonitor implements KeyguardMonitor { } @Override + public boolean isOccluded() { + return false; + } + + @Override public boolean isKeyguardFadingAway() { return false; } -- 2.11.0