Merge "Support for triggering the lockscreen while the screen is on:"
diff --git a/api/current.xml b/api/current.xml
index fe37318..d6c305e 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -72273,7 +72273,7 @@
  type="float"
  transient="false"
  volatile="false"
- value="0.001f"
+ value="0.0010f"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -178552,6 +178552,17 @@
  visibility="public"
 >
 </field>
+<field name="FLAG_ALLOW_LOCK_WHILE_SCREEN_ON"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="FLAG_ALT_FOCUSABLE_IM"
  type="int"
  transient="false"
@@ -209795,7 +209806,7 @@
  deprecated="not deprecated"
  visibility="public"
 >
-<parameter name="t" type="T">
+<parameter name="arg0" type="T">
 </parameter>
 </method>
 </interface>
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 8e15f89..5ffc09a 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -369,6 +369,12 @@
          */
         public int flags;
         
+        /** Window flag: as long as this window is visible to the user, allow
+         *  the lock screen to activate while the screen is on. 
+         *  This can be used independently, or in combination with 
+         *  {@link #FLAG_KEEP_SCREEN_ON} and/or {@link FLAG_SHOW_WHEN_LOCKED} */
+        public static final int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON     = 0x00000001;
+
         /** Window flag: everything behind this window will be dimmed.
          *  Use {@link #dimAmount} to control the amount of dim. */
         public static final int FLAG_DIM_BEHIND        = 0x00000002;
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index 21577bf..7bc5cce 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -827,6 +827,12 @@
     public void systemReady();
 
     /**
+     * Called when userActivity is signalled in the power manager.
+     * This is safe to call from any thread, with any window manager locks held or not.
+     */
+    public void userActivity();
+
+    /**
      * Called when we have finished booting and can now display the home
      * screen to the user.  This wilWl happen after systemReady(), and at
      * this point the display is active.
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index cefd312..e14a973 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -2011,6 +2011,10 @@
                 }
             }
         }
+
+        if (mPolicy != null) {
+            mPolicy.userActivity();
+        }
     }
 
     private int getAutoBrightnessValue(int sensorValue, int[] values) {
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 1d14e5e..88aadbd 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -2385,7 +2385,8 @@
                     // to provide the correct semantics while starting.
                     final int mask =
                         WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
-                        | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD;
+                        | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
+                        | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON;
                     WindowManager.LayoutParams sa = win.mAppToken.startingWindow.mAttrs;
                     sa.flags = (sa.flags&~mask) | (win.mAttrs.flags&mask);
                 }