policy: introduce pocket lock

* Block touch screen and keys inputs when device is in pocket.
* Safe-door to disable pocket lock within long press power button
  if sensors do not behave correctly after PocketManager.isDeviceInPocket()
  returns true.
* Window uses TYPE_SYSTEM_ERROR flag with ensure high
  priority over the lockscreen and other high priority windows.
* Do not illuminate buttons when pocket lock is showing.
* Disable fingerprint events and gestures when in pocket
* Be friendly towards Keypress Boost

Contributors:
Carlo Savignano <carlosavignano@aospa.co>
Chris Lahaye <dev@chrislahaye.com>
Anas Karbila <anaskarbila@aospa.co>
Alex Naidis <alex.naidis@linux.com>
Park Ju Hyung <qkrwngud825@gmail.com>

Ticket: NOUGAT-15

ZeNiXxX
* Fix  booting issues
* Fix  NPEs
* Bring to Android 10

DennySPb: adapt for 11, 12

Squashed:

    From: Carlo Savignano <carlosavignano@aospa.co>
    Date: Tue, 29 Oct 2019 16:43:22 +0100
    Subject: pocket: introduce pocket judge

    ZeNiXxX
    * Bring to Android 10

    DennySPb: adapt to 11, 12

    Change-Id: I33153b451f5d38d83e226be0f76bda1ed022dd48
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Chris Lahaye <dev@chrislahaye.com>
    Date: Tue, 26 Sep 2017 19:19:19 +0200
    Subject: pocket: Add hardware acceleration and properly maintain
     SYSTEM_UI flags

    Change-Id: I585598242beec34bd92c5df5836ab395b36cea05
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Alex Naidis <alex.naidis@linux.com>
    Date: Mon, 14 Aug 2017 20:56:16 -0400
    Subject: PocketService: Adjust light sensor rate to 400ms

    We already adjusted the proximity sensor rate to
    400ms, so adjust the rate for the light sensor
    accordingly and create a tunable.

    Change-Id: Ie6dda80df8cdc677eb6cdb873a5ce1e888572fe7
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: TheStrix <parthbhatia98@gmail.com>
    Date: Wed, 6 Mar 2019 14:40:06 +0530
    Subject: pocket: Adjust sleep timeout for pocket lock view to 10 secs

     - Fix the case where user sets a high value for sleep timeout in display settings
       and the pocket view is also displayed for that much duration.

    Change-Id: If6c4daa1fd98992141f22db70e0e86d5d990f789
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: TheStrix <parthbhatia98@gmail.com>
    Date: Wed, 6 Mar 2019 20:02:08 +0530
    Subject: pocket: Fix pocket lock view for display cutouts

     - Use LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES layout
       flag to extend pocket lock view for display cutout mode.

    Change-Id: I21e4e47cf999b3a0f3d6ebf9165ba9f5596ece0e
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Henrique Silva <jhenrique09.mcz@hotmail.com>
    Date: Tue, 29 Oct 2019 17:40:41 +0100
    Subject: Pocket lock improvements

    * Fix auto hide not working correctly
    * Restore systemui visibility when hidden

    ZeNiXxX
    * remove faceunlock logic and adapt for android 10

    Change-Id: I61b38798d01775b252af88abb01dd2423b3a7638
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Anushek Prasal <anushekprasal@gmail.com>
    Date: Sat, 11 May 2019 23:43:56 +0530
    Subject: pocket: Use MD2 lock drawable

    Change-Id: Ifb89a68505a9f9b401a2474b5179ea65e9c0e3ce
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: RadixCube <radixcube@gmail.com>
    Date: Sun, 2 Jun 2019 18:14:51 +0000
    Subject: pocket: Reduce sleep timeout for pocket lock

    *if the proximity value changes within 10s, pocketlock exits to lockscreen. Inorder to avoid that reduce timeout to 3s

    Change-Id: Iee08801534bebacc2fc62f0bc6e3a0712ce12712
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Chris Lahaye <dev@chrislahaye.com>
    Date: Tue, 29 Oct 2019 17:37:17 +0100
    Subject: pocket: introduce pocket bridge

    This service communicates pocket state to the pocket judge kernel driver.
    It maintains the pocket state by binding to the pocket service.

    Ticket: NOUGAT-49

    Change-Id: Iee77f767f23d3f77a0d1d871f9305f3b3c6d6630
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: jhenrique09 <jhenrique09.mcz@hotmail.com>
    Date: Thu, 2 May 2019 21:35:51 -0300
    Subject: Pocket lock: Add config_pocketModeSupported overlay

    Change-Id: I6768c9f8cdd40b2a62df3bd9ddfa04022d69ce10
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: jhenrique09 <jhenrique09.mcz@hotmail.com>
    Date: Tue, 8 Sep 2020 09:44:29 -0300
    Subject: PocketLock: fix flickering on animations

    Change-Id: I4b5499042d0e9ae8f73ecf5c32030d146f640362
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: DennySPb <dennyspb@gmail.com>
    Date: Thu, 28 May 2020 20:59:47 +0300
    Subject: PocketJudge: allow register vendor pocket sensor

    Some devices (ie OnePlus) have own pocket sensor. This change allow to use
    native pocket sensor instead of proximity and light.

    Sensor name must be specified in device tree overlay.
    In this case PocketService will try to use vendor sensor first.
    If sensor wasn't found, fallback sensors (proximity and light) will be in use.

    Example for OnePlus sensor:
    <string name="config_pocketJudgeVendorSensorName">oneplus.sensor.pocket</string>

    Change-Id: Ibe423478cfd9d49e0831e2df0af793178f62c0e0
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: paphonb <paphonb@gmail.com>
    Date: Sat, 8 Jun 2019 08:37:35 +0000
    Subject: Fix an edge case in KeyguardUpdateMonitor pocket callback

    Change-Id: If872c365ab22bd744c610b136b442ff161c65522
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Jyotiraditya Panda <jyotiraditya@aospa.co>
    Date: Sat, 27 Feb 2021 20:32:26 +0530
    Subject: base: Redo Pocket mode view like OOS

    Change-Id: I037f5120315581cade60b6c11a64b07cc47ba376
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Anushek Prasal <anushekprasal@gmail.com>
    Date: Sat, 22 May 2021 21:30:08 +0530
    Subject: SystemUI: Improve pocket mode layout

    Change-Id: I590bc187a5e205102b129fbb9e3625f51b532afd
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Laker <lakerman1987@gmail.com>
    Date: Fri, 5 Feb 2021 19:43:44 +0300
    Subject: PocketLock: Make using light sensor optional

    * On some devices using light sensor may break autobrightness

    Change-Id: I2bb4aad1ecc6808a4546dfdcada4335074d0d40e
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Hikari-no-Tenshi <kyryljan.serhij@gmail.com>
    Date: Sat, 10 Jul 2021 22:21:34 +0300
    Subject: PocketJudge: Allow to register vendor proximity sensor

    Some devices (ie OnePlus) have bunch of proximity sensors
    and default one may not work properly. This change allow to use
    particular proximity sensor.

    Example for OnePlus infrared proximity sensor:
    <string name="config_pocketJudgeVendorProximitySensorName">oneplus.sensor.infrared.proximity</string>

    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Ido Ben-Hur <idoybh2@gmail.com>
    Date: Sat, 10 Dec 2022 12:54:11 +0200
    Subject: base: Pocket Judge: Don't go to sleep while on call

    This causes gdialer to stop vibrations. Let's not.

    Also:
    * Use TYPE_SECURE_SYSTEM_OVERLAY for the pocket lock view to actually overlay above everything
      (see com.android.server.policy.WindowManagerPolicy for a full list of priorities)

    Change-Id: I567381d7805a2c3917fca027d3df4e5f6ed508a4
    Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

    From: Ido Ben-Hur <idoybh2@gmail.com>
    Date: Sat, 10 Dec 2022 01:56:52 +0200
    Subject: PhoneWindowManager: Pocket Judge: Don't mess with power button to reject call

    Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
    Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Jackeagle <jackeagle102@gmail.com>
22 files changed