Merge "Fix KeyguardManager.isSecure() to observe work profile" into nyc-dev
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index b0d204b..908a99d 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -1121,10 +1121,11 @@
      * isKeyguardSecure
      *
      * Return whether the keyguard requires a password to unlock.
+     * @param userId
      *
      * @return true if in keyguard is secure.
      */
-    public boolean isKeyguardSecure();
+    public boolean isKeyguardSecure(int userId);
 
     /**
      * Return whether the keyguard is on.
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index e0c56d7..0a5b82a 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -3392,7 +3392,7 @@
         }
 
         if (down) {
-            long shortcutCode = (long) keyCode;
+            long shortcutCode = keyCode;
             if (event.isCtrlPressed()) {
                 shortcutCode |= ((long) KeyEvent.META_CTRL_ON) << Integer.SIZE;
             }
@@ -3511,6 +3511,7 @@
         return false;
     }
 
+    @Override
     public void registerShortcutKey(long shortcutCode, IShortcutService shortcutService)
             throws RemoteException {
         synchronized (mLock) {
@@ -4822,7 +4823,7 @@
         mShowingLockscreen = false;
         mShowingDream = false;
         mWinShowWhenLocked = null;
-        mKeyguardSecure = isKeyguardSecure();
+        mKeyguardSecure = isKeyguardSecure(mCurrentUserId);
         mKeyguardSecureIncludingHidden = mKeyguardSecure
                 && (mKeyguardDelegate != null && mKeyguardDelegate.isShowing());
     }
@@ -6299,9 +6300,9 @@
 
     /** {@inheritDoc} */
     @Override
-    public boolean isKeyguardSecure() {
+    public boolean isKeyguardSecure(int userId) {
         if (mKeyguardDelegate == null) return false;
-        return mKeyguardDelegate.isSecure();
+        return mKeyguardDelegate.isSecure(userId);
     }
 
     /** {@inheritDoc} */
@@ -6331,6 +6332,7 @@
         }
     }
 
+    @Override
     public void notifyActivityDrawnForKeyguardLw() {
         if (mKeyguardDelegate != null) {
             mHandler.post(new Runnable() {
@@ -6846,7 +6848,7 @@
     private void updateLockScreenTimeout() {
         synchronized (mScreenLockTimeout) {
             boolean enable = (mAllowLockscreenWhenOn && mAwake &&
-                    mKeyguardDelegate != null && mKeyguardDelegate.isSecure());
+                    mKeyguardDelegate != null && mKeyguardDelegate.isSecure(mCurrentUserId));
             if (mLockScreenTimerActive != enable) {
                 if (enable) {
                     if (localLOGV) Log.v(TAG, "setting lockscreen timer");
diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
index 52e5880..7e27558 100644
--- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
+++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
@@ -226,9 +226,9 @@
         }
     }
 
-    public boolean isSecure() {
+    public boolean isSecure(int userId) {
         if (mKeyguardService != null) {
-            mKeyguardState.secure = mKeyguardService.isSecure();
+            mKeyguardState.secure = mKeyguardService.isSecure(userId);
         }
         return mKeyguardState.secure;
     }
diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java
index dacdec0..57e8857 100644
--- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java
+++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java
@@ -234,8 +234,8 @@
         return mKeyguardStateMonitor.isShowing();
     }
 
-    public boolean isSecure() {
-        return mKeyguardStateMonitor.isSecure();
+    public boolean isSecure(int userId) {
+        return mKeyguardStateMonitor.isSecure(userId);
     }
 
     public boolean isInputRestricted() {
diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java b/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java
index 30cff03..138f068 100644
--- a/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java
+++ b/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java
@@ -62,8 +62,8 @@
         return mIsShowing;
     }
 
-    public boolean isSecure() {
-        return mLockPatternUtils.isSecure(getCurrentUser()) || mSimSecure;
+    public boolean isSecure(int userId) {
+        return mLockPatternUtils.isSecure(userId) || mSimSecure;
     }
 
     public boolean isInputRestricted() {
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index a0b8c35..678eaa1 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -5344,9 +5344,10 @@
 
     @Override
     public boolean isKeyguardSecure() {
+        int userId = UserHandle.getCallingUserId();
         long origId = Binder.clearCallingIdentity();
         try {
-            return mPolicy.isKeyguardSecure();
+            return mPolicy.isKeyguardSecure(userId);
         } finally {
             Binder.restoreCallingIdentity(origId);
         }