OSDN Git Service

Show work profile status bar icon for lockscreen app.
authorPavel Grafov <pgrafov@google.com>
Thu, 29 Jun 2017 17:42:32 +0000 (18:42 +0100)
committerPavel Grafov <pgrafov@google.com>
Fri, 30 Jun 2017 12:16:16 +0000 (13:16 +0100)
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

packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java
packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java
packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeKeyguardMonitor.java

index f3ba5aa..6cdb757 100644 (file)
@@ -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,
index 728005d..ccfbb26 100644 (file)
@@ -21,12 +21,13 @@ public interface KeyguardMonitor extends CallbackController<Callback> {
     boolean isSecure();
     boolean canSkipBouncer();
     boolean isShowing();
+    boolean isOccluded();
     boolean isKeyguardFadingAway();
     boolean isKeyguardGoingAway();
     long getKeyguardFadingAwayDuration();
     long getKeyguardFadingAwayDelay();
 
-    public interface Callback {
+    interface Callback {
         void onKeyguardShowingChanged();
     }
 }
index 7bce33a..5ead02f 100644 (file)
@@ -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;
     }
index 51e35cc..3f952c3 100644 (file)
@@ -47,6 +47,11 @@ public class FakeKeyguardMonitor implements KeyguardMonitor {
     }
 
     @Override
+    public boolean isOccluded() {
+        return false;
+    }
+
+    @Override
     public boolean isKeyguardFadingAway() {
         return false;
     }