patches: base: Add more patches

Signed-off-by: Jackeagle <jackeagle102@gmail.com>
diff --git a/patches/frameworks/base/0001-Fix-backlight-control-on-Galaxy-S9.patch b/patches/frameworks/base/0001-Fix-backlight-control-on-Galaxy-S9.patch
index 9da2870..1ef7b5b 100644
--- a/patches/frameworks/base/0001-Fix-backlight-control-on-Galaxy-S9.patch
+++ b/patches/frameworks/base/0001-Fix-backlight-control-on-Galaxy-S9.patch
@@ -1,7 +1,7 @@
-From f10e71bad6ac60e78d7bdc164b9a499a4ad3831e Mon Sep 17 00:00:00 2001
+From e09b16ffadbeabfcb3c91878e5bfa34b694391e8 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Sat, 24 Mar 2018 08:01:48 +0100
-Subject: [PATCH 01/27] Fix backlight control on Galaxy S9(+)
+Subject: [PATCH 01/28] Fix backlight control on Galaxy S9(+)
 
 ---
  .../core/java/com/android/server/lights/LightsService.java | 7 +++++++
@@ -33,5 +33,5 @@
                  color = 0xff000000 | (color << 16) | (color << 8) | color;
                  setLightLocked(color, LIGHT_FLASH_NONE, 0, 0, brightnessMode);
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0002-Relax-requirement-for-visible-flag-to-sdcards.patch b/patches/frameworks/base/0002-Relax-requirement-for-visible-flag-to-sdcards.patch
index 7446ee0..ff2a254 100644
--- a/patches/frameworks/base/0002-Relax-requirement-for-visible-flag-to-sdcards.patch
+++ b/patches/frameworks/base/0002-Relax-requirement-for-visible-flag-to-sdcards.patch
@@ -1,7 +1,7 @@
-From 0165b12a22d8b379c01ddae100da10ed977c7e36 Mon Sep 17 00:00:00 2001
+From 407350d3278e62ec700ab46c7eb29d5a3e327c8c Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Tue, 28 Nov 2017 18:28:04 +0100
-Subject: [PATCH 02/27] Relax requirement for visible flag to sdcards
+Subject: [PATCH 02/28] Relax requirement for visible flag to sdcards
 
 The vast majority of sdcard readers are stable enough to be declared by
 the API. (I see no counter-example)
@@ -27,5 +27,5 @@
              }
  
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0003-Also-scan-system-overlay.patch b/patches/frameworks/base/0003-Also-scan-system-overlay.patch
index 7186be4..e306e8c 100644
--- a/patches/frameworks/base/0003-Also-scan-system-overlay.patch
+++ b/patches/frameworks/base/0003-Also-scan-system-overlay.patch
@@ -1,7 +1,7 @@
-From 1db5bd6dde367a130f9cef210ae74a9402349bd2 Mon Sep 17 00:00:00 2001
+From 2e2ca9fba1d98e93d3fdb4dad47cbf8c5fcc1e1b Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Tue, 1 May 2018 17:47:36 +0200
-Subject: [PATCH 03/27] Also scan /system/overlay
+Subject: [PATCH 03/28] Also scan /system/overlay
 
 Change-Id: Ib0223560606b80cdaaa986b159b34b4db0154589
 ---
@@ -48,5 +48,5 @@
        && path.find("/../") == std::string::npos) {
      return true;
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0004-Don-t-crash-if-there-is-IR-HAL-is-not-declared.patch b/patches/frameworks/base/0004-Don-t-crash-if-there-is-IR-HAL-is-not-declared.patch
index c53d7cc..d58bc5b 100644
--- a/patches/frameworks/base/0004-Don-t-crash-if-there-is-IR-HAL-is-not-declared.patch
+++ b/patches/frameworks/base/0004-Don-t-crash-if-there-is-IR-HAL-is-not-declared.patch
@@ -1,7 +1,7 @@
-From 1d2e505a0ef6c9fa413722133392f62c194e1831 Mon Sep 17 00:00:00 2001
+From cbdeffa0f4428fc5fd91f815c425af09545a5820 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Thu, 17 May 2018 20:28:35 +0200
-Subject: [PATCH 04/27] Don't crash if there is IR HAL is not declared
+Subject: [PATCH 04/28] Don't crash if there is IR HAL is not declared
 
 ---
  services/core/java/com/android/server/ConsumerIrService.java | 2 --
@@ -21,5 +21,5 @@
          mParameter = AudioSystem.getParameters("audio_capability#irda_support");
      }
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0005-Fix-62.patch b/patches/frameworks/base/0005-Fix-62.patch
index 9fde17e..338af54 100644
--- a/patches/frameworks/base/0005-Fix-62.patch
+++ b/patches/frameworks/base/0005-Fix-62.patch
@@ -1,7 +1,7 @@
-From 0ffac9ef7929dbfd6ebe437d09b9b26d342f410a Mon Sep 17 00:00:00 2001
+From 658be986bca32ad68dda0cbd2fed9ff684077b0a Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Wed, 30 May 2018 14:05:30 +0200
-Subject: [PATCH 05/27] Fix(?) #62
+Subject: [PATCH 05/28] Fix(?) #62
 
 ---
  .../src/com/android/keyguard/KeyguardUpdateMonitor.java      | 5 ++++-
@@ -24,5 +24,5 @@
  
          @Override
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0006-S9-brightness-override-only-for-screen.patch b/patches/frameworks/base/0006-S9-brightness-override-only-for-screen.patch
index 1078207..c606f15 100644
--- a/patches/frameworks/base/0006-S9-brightness-override-only-for-screen.patch
+++ b/patches/frameworks/base/0006-S9-brightness-override-only-for-screen.patch
@@ -1,7 +1,7 @@
-From a58a9c8363f015b065f34d0d4c2ec87885579850 Mon Sep 17 00:00:00 2001
+From b55ab7d88e2d9c8233a5b732071a84030c649008 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <pierre-hugues.husson@softathome.com>
 Date: Thu, 7 Jun 2018 13:36:51 +0200
-Subject: [PATCH 06/27] S9 brightness override only for screen
+Subject: [PATCH 06/28] S9 brightness override only for screen
 
 ---
  .../com/android/server/lights/LightsService.java     | 12 +++++++-----
@@ -31,5 +31,5 @@
                  int color = brightness & 0x000000ff;
                  color = 0xff000000 | (color << 16) | (color << 8) | color;
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0007-Fix-OP6-brightness.patch b/patches/frameworks/base/0007-Fix-OP6-brightness.patch
new file mode 100644
index 0000000..66e87e0
--- /dev/null
+++ b/patches/frameworks/base/0007-Fix-OP6-brightness.patch
@@ -0,0 +1,35 @@
+From 47703e85e3b6d3b04fe0ae9746565481368815ba Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <pierre-hugues.husson@softathome.com>
+Date: Thu, 7 Jun 2018 13:42:02 +0200
+Subject: [PATCH 07/28] Fix OP6 brightness
+
+---
+ .../com/android/server/lights/LightsService.java     | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
+index eb25943fa6b..a77af445ba6 100644
+--- a/services/core/java/com/android/server/lights/LightsService.java
++++ b/services/core/java/com/android/server/lights/LightsService.java
+@@ -59,6 +59,18 @@ public class LightsService extends SystemService {
+                         setLightLocked(brightness*100, LIGHT_FLASH_HARDWARE, 0, 0, brightnessMode);
+                         return;
+                     }
++
++                    boolean qcomExtendBrightness = SystemProperties.getBoolean("persist.extend.brightness", false);
++                    int scale = SystemProperties.getInt("persist.display.max_brightness", 1023);
++                    if(fp.contains("OnePlus6")) {
++                        qcomExtendBrightness = true;
++                        scale = 1023;
++                    }
++
++                    if(qcomExtendBrightness) {
++                        setLightLocked(brightness * scale / 255, LIGHT_FLASH_NONE, 0, 0, brightnessMode);
++                        return;
++                    }
+                 }
+ 
+                 int color = brightness & 0x000000ff;
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0008-Try-to-make-brightness-more-generic-using-property-s.patch b/patches/frameworks/base/0008-Try-to-make-brightness-more-generic-using-property-s.patch
index 170d483..9c9a246 100644
--- a/patches/frameworks/base/0008-Try-to-make-brightness-more-generic-using-property-s.patch
+++ b/patches/frameworks/base/0008-Try-to-make-brightness-more-generic-using-property-s.patch
@@ -1,7 +1,7 @@
-From 440013f49d95e815e6b114ec159161c398eb75a0 Mon Sep 17 00:00:00 2001
+From 6c29648a36aa2f42059ea9ad308fd6712c8b4f66 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Sun, 10 Jun 2018 22:54:55 +0200
-Subject: [PATCH 08/27] Try to make brightness more generic using property set
+Subject: [PATCH 08/28] Try to make brightness more generic using property set
  by rw-system
 
 ---
@@ -27,5 +27,5 @@
  
                      if(qcomExtendBrightness) {
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0009-property-matching-RROs-allow-to-prefix-the-value-wit.patch b/patches/frameworks/base/0009-property-matching-RROs-allow-to-prefix-the-value-wit.patch
index 2b77abd..672ea01 100644
--- a/patches/frameworks/base/0009-property-matching-RROs-allow-to-prefix-the-value-wit.patch
+++ b/patches/frameworks/base/0009-property-matching-RROs-allow-to-prefix-the-value-wit.patch
@@ -1,7 +1,7 @@
-From 538df8b19b020984b49a299cd36d02462fb87f33 Mon Sep 17 00:00:00 2001
+From a877d5e95b0f102f3c4a750086ff3af7d0513cd8 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Tue, 12 Jun 2018 22:55:32 +0200
-Subject: [PATCH 09/27] property-matching RROs: allow to prefix the value with
+Subject: [PATCH 09/28] property-matching RROs: allow to prefix the value with
  + to do glob match instead of exact match
 
 ---
@@ -31,5 +31,5 @@
      }
  
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0010-Fix-typo-on-fnmatch-return-value-check.patch b/patches/frameworks/base/0010-Fix-typo-on-fnmatch-return-value-check.patch
index ea86dac..c2b2243 100644
--- a/patches/frameworks/base/0010-Fix-typo-on-fnmatch-return-value-check.patch
+++ b/patches/frameworks/base/0010-Fix-typo-on-fnmatch-return-value-check.patch
@@ -1,7 +1,7 @@
-From d5f73ea1cc9283d3f4ab4851642c8b4ff6154a58 Mon Sep 17 00:00:00 2001
+From 7ce8bffed817e20a5f79fed31b62dfaa6e8ddebc Mon Sep 17 00:00:00 2001
 From: Song Fuchang <song.fc@gmail.com>
 Date: Sun, 17 Jun 2018 22:39:37 +0800
-Subject: [PATCH 10/27] Fix typo on fnmatch return value check
+Subject: [PATCH 10/28] Fix typo on fnmatch return value check
 
 ---
  cmds/idmap/scan.cpp | 2 +-
@@ -21,5 +21,5 @@
  
          return (strcmp(propBuf, val) == 0);
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0011-Add-Qualcomm-starlte.patch b/patches/frameworks/base/0011-Add-Qualcomm-starlte.patch
index 9c3ec8e..b5a69dc 100644
--- a/patches/frameworks/base/0011-Add-Qualcomm-starlte.patch
+++ b/patches/frameworks/base/0011-Add-Qualcomm-starlte.patch
@@ -1,7 +1,7 @@
-From ebf3d9ec38938b6cd69d98014a3548411dce4a60 Mon Sep 17 00:00:00 2001
+From 971fea540371e8ca99dbe0fdef049e11168c1c42 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Mon, 25 Jun 2018 22:43:32 +0200
-Subject: [PATCH 11/27] Add Qualcomm starlte
+Subject: [PATCH 11/28] Add Qualcomm starlte
 
 ---
  .../core/java/com/android/server/lights/LightsService.java    | 4 +++-
@@ -23,5 +23,5 @@
                          return;
                      }
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0012-remaining-of-HAL-onEnroll-is-actually-a-percent-of-p.patch b/patches/frameworks/base/0012-remaining-of-HAL-onEnroll-is-actually-a-percent-of-p.patch
new file mode 100644
index 0000000..1256b8a
--- /dev/null
+++ b/patches/frameworks/base/0012-remaining-of-HAL-onEnroll-is-actually-a-percent-of-p.patch
@@ -0,0 +1,30 @@
+From 8b8151519a0fe385ae3a682a837ffd7c674fc883 Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Mon, 2 Jul 2018 23:36:39 +0200
+Subject: [PATCH 12/28] "remaining" of HAL onEnroll is actually a percent of
+ progress
+
+---
+ .../com/android/server/fingerprint/FingerprintService.java  | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java
+index 06329e571b4..6f09433c002 100644
+--- a/services/core/java/com/android/server/fingerprint/FingerprintService.java
++++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java
+@@ -1046,7 +1046,11 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
+             mHandler.post(new Runnable() {
+                 @Override
+                 public void run() {
+-                    handleEnrollResult(deviceId, fingerId, groupId, remaining);
++                    int remaining2 = remaining;
++                    String fp = android.os.SystemProperties.get("ro.vendor.build.fingerprint");
++                    if(fp != null && (fp.contains("starlte") || fp.contains("star2lte") || fp.contains("starqlte") || fp.contains("star2qlte")))
++                        remaining2 = 100 - remaining2;
++                    handleEnrollResult(deviceId, fingerId, groupId, remaining2);
+                 }
+             });
+         }
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0013-Show-APN-Settings-for-CDMA-carriers.patch b/patches/frameworks/base/0013-Show-APN-Settings-for-CDMA-carriers.patch
index 5ab7461..7f667f3 100644
--- a/patches/frameworks/base/0013-Show-APN-Settings-for-CDMA-carriers.patch
+++ b/patches/frameworks/base/0013-Show-APN-Settings-for-CDMA-carriers.patch
@@ -1,7 +1,7 @@
-From 5df1b336130919abebb377f363f6d5ded0eea808 Mon Sep 17 00:00:00 2001
+From 7eb9fe33b46957cd510e558e337668c5929bc9d2 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Mon, 6 Aug 2018 12:49:00 +0200
-Subject: [PATCH 13/27] Show APN Settings for CDMA carriers
+Subject: [PATCH 13/28] Show APN Settings for CDMA carriers
 
 ---
  telephony/java/android/telephony/CarrierConfigManager.java | 2 +-
@@ -21,5 +21,5 @@
          sDefaults.putBoolean(KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL, false);
          sDefaults.putBoolean(KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL, true);
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0014-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch b/patches/frameworks/base/0014-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch
index c2f6eb8..8be6b0a 100644
--- a/patches/frameworks/base/0014-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch
+++ b/patches/frameworks/base/0014-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch
@@ -1,7 +1,7 @@
-From 6fcc14c6109e17cd47d007e6dd677d3ce5616bdd Mon Sep 17 00:00:00 2001
+From 1c50acac96d1a3aea9acd474db48fcfeb17adf0c Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Mon, 6 Aug 2018 20:01:44 +0200
-Subject: [PATCH 14/27] Change SignalStrentgh to change behaviour based on
+Subject: [PATCH 14/28] Change SignalStrentgh to change behaviour based on
  property
 
 Change-Id: I940ed724047567ec5195ac93ea04574c3d92f70b
@@ -78,5 +78,5 @@
  
      }
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0015-idmap-Don-t-silently-ignore-RROs-with-same-priority.patch b/patches/frameworks/base/0015-idmap-Don-t-silently-ignore-RROs-with-same-priority.patch
index a8f1851..1c50139 100644
--- a/patches/frameworks/base/0015-idmap-Don-t-silently-ignore-RROs-with-same-priority.patch
+++ b/patches/frameworks/base/0015-idmap-Don-t-silently-ignore-RROs-with-same-priority.patch
@@ -1,7 +1,7 @@
-From 06bd2700b444c7d79cea80ac98a0bd3b6862eb1c Mon Sep 17 00:00:00 2001
+From 0582b5385471ec08573918bf8c3de715d0bd44e1 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Sun, 19 Aug 2018 10:51:06 +0200
-Subject: [PATCH 15/27] idmap: Don't silently ignore RROs with same priority
+Subject: [PATCH 15/28] idmap: Don't silently ignore RROs with same priority
 
 Change-Id: I64a6899f1b30e0cd9e9a872b7ca83d831f038cbe
 ---
@@ -22,5 +22,5 @@
          }
  
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0016-Move-SysuiDarkThemeOverlay-to-system.patch b/patches/frameworks/base/0016-Move-SysuiDarkThemeOverlay-to-system.patch
index b1e4c48..ddd8ea9 100644
--- a/patches/frameworks/base/0016-Move-SysuiDarkThemeOverlay-to-system.patch
+++ b/patches/frameworks/base/0016-Move-SysuiDarkThemeOverlay-to-system.patch
@@ -1,7 +1,7 @@
-From 74d3cdda68ffefc73d337d865ab90fe8964bfd7e Mon Sep 17 00:00:00 2001
+From 947ea3e7734a56d324b7e90cdd0b0c9aa5d5e3f2 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Sun, 19 Aug 2018 10:57:21 +0200
-Subject: [PATCH 16/27] Move SysuiDarkThemeOverlay to /system
+Subject: [PATCH 16/28] Move SysuiDarkThemeOverlay to /system
 
 Change-Id: I31b3edc5d1abcc1163a13e63c909fee9d27ff432
 ---
@@ -20,5 +20,5 @@
 +LOCAL_IS_RUNTIME_RESOURCE_OVERLAY := true
 +include $(BUILD_PACKAGE)
 -- 
-2.17.1
+2.21.0
 
diff --git a/patches/frameworks/base/0017-It-is-okay-not-to-have-wifi-in-SystemUI-on-FDE-lock.patch b/patches/frameworks/base/0017-It-is-okay-not-to-have-wifi-in-SystemUI-on-FDE-lock.patch
new file mode 100644
index 0000000..5e61baf
--- /dev/null
+++ b/patches/frameworks/base/0017-It-is-okay-not-to-have-wifi-in-SystemUI-on-FDE-lock.patch
@@ -0,0 +1,65 @@
+From 209ef1fd6103ea99db0775692ca74d9c24dca34f Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Mon, 20 Aug 2018 22:27:02 +0200
+Subject: [PATCH 17/28] It is okay not to have wifi in SystemUI (on FDE lock)
+
+Conflicts:
+	packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+	packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
+
+Change-Id: I567a4fc81a53a8d3a55acb6ee8aa979c5a38a4f8
+---
+ .../src/com/android/settingslib/wifi/WifiTracker.java  |  2 +-
+ .../statusbar/policy/HotspotControllerImpl.java        |  1 +
+ .../statusbar/policy/WifiSignalController.java         | 10 +++++-----
+ 3 files changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+index 11c22eef5ad..1ca952aaee3 100644
+--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
++++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+@@ -207,7 +207,7 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro
+         mConnectivityManager = connectivityManager;
+ 
+         // check if verbose logging developer option has been turned on or off
+-        sVerboseLogging = (mWifiManager == null) ? false : (mWifiManager.getVerboseLoggingLevel() > 0);
++        sVerboseLogging = mWifiManager != null ? (mWifiManager.getVerboseLoggingLevel() > 0) : false;
+ 
+         mFilter = filter;
+ 
+diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
+index c44b385f505..e5696edb9e0 100644
+--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
++++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
+@@ -109,6 +109,7 @@ public class HotspotControllerImpl implements HotspotController, WifiManager.Sof
+      * @param shouldListen whether we should start listening to various wifi statuses
+      */
+     private void updateWifiStateListeners(boolean shouldListen) {
++        if(mWifiManager == null) return;
+         if (shouldListen) {
+             mWifiManager.registerSoftApCallback(
+                     this,
+diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
+index b83c6b88f8d..78b30500da7 100644
+--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
++++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
+@@ -59,11 +59,11 @@ public class WifiSignalController extends
+         mHasMobileData = hasMobileData;
+         Handler handler = new WifiHandler(Looper.getMainLooper());
+         mWifiChannel = new AsyncChannel();
+-        if (wifiManager != null) {
+-            Messenger wifiMessenger = wifiManager.getWifiServiceMessenger();
+-            if (wifiMessenger != null) {
+-                mWifiChannel.connect(context, handler, wifiMessenger);
+-            }
++        Messenger wifiMessenger = null;
++        if(wifiManager != null)
++            wifiMessenger = wifiManager.getWifiServiceMessenger();
++        if (wifiMessenger != null) {
++            mWifiChannel.connect(context, handler, wifiMessenger);
+         }
+         // WiFi only has one state.
+         mCurrentState.iconGroup = mLastState.iconGroup = new IconGroup(
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0018-Don-t-wake-IR-HAL-to-the-infinity-and-beyond.patch b/patches/frameworks/base/0018-Don-t-wake-IR-HAL-to-the-infinity-and-beyond.patch
new file mode 100644
index 0000000..3cdc0d0
--- /dev/null
+++ b/patches/frameworks/base/0018-Don-t-wake-IR-HAL-to-the-infinity-and-beyond.patch
@@ -0,0 +1,46 @@
+From d406d29e41b6c37744e03444336730779a2b1241 Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Tue, 21 Aug 2018 22:24:02 +0200
+Subject: [PATCH 18/28] Don't wake IR HAL to the infinity and beyond
+
+Conflicts:
+	services/core/java/com/android/server/ConsumerIrService.java
+
+Change-Id: Ie0e152f11246baed6f3571a1c9d8b901d5a3dc02
+---
+ services/core/java/com/android/server/ConsumerIrService.java | 5 -----
+ services/core/jni/com_android_server_ConsumerIrService.cpp   | 2 +-
+ 2 files changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/services/core/java/com/android/server/ConsumerIrService.java b/services/core/java/com/android/server/ConsumerIrService.java
+index 0a0065a7b55..ead288ea01a 100644
+--- a/services/core/java/com/android/server/ConsumerIrService.java
++++ b/services/core/java/com/android/server/ConsumerIrService.java
+@@ -48,11 +48,6 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
+         mWakeLock.setReferenceCounted(true);
+ 
+         mHasNativeHal = halOpen();
+-        if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CONSUMER_IR)) {
+-            if (!mHasNativeHal) {
+-                throw new RuntimeException("FEATURE_CONSUMER_IR present, but no IR HAL loaded!");
+-            }
+-        }
+         mParameter = AudioSystem.getParameters("audio_capability#irda_support");
+     }
+ 
+diff --git a/services/core/jni/com_android_server_ConsumerIrService.cpp b/services/core/jni/com_android_server_ConsumerIrService.cpp
+index 2ca348b3ae4..148fba9a688 100644
+--- a/services/core/jni/com_android_server_ConsumerIrService.cpp
++++ b/services/core/jni/com_android_server_ConsumerIrService.cpp
+@@ -36,7 +36,7 @@ static sp<IConsumerIr> mHal;
+ 
+ static jboolean halOpen(JNIEnv* /* env */, jobject /* obj */) {
+     // TODO(b/31632518)
+-    mHal = IConsumerIr::getService();
++    mHal = IConsumerIr::tryGetService();
+     return mHal != nullptr;
+ }
+ 
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0019-Switch-samsung-light-fingerprint-match-to-regexp-to-.patch b/patches/frameworks/base/0019-Switch-samsung-light-fingerprint-match-to-regexp-to-.patch
new file mode 100644
index 0000000..41b6d61
--- /dev/null
+++ b/patches/frameworks/base/0019-Switch-samsung-light-fingerprint-match-to-regexp-to-.patch
@@ -0,0 +1,28 @@
+From 87962755eb743cb3949f0800ca98d2448ddfc31c Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Thu, 23 Aug 2018 23:39:16 +0200
+Subject: [PATCH 19/28] Switch samsung light fingerprint match to regexp, to
+ include Note9
+
+---
+ .../core/java/com/android/server/lights/LightsService.java    | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
+index 2886f2900d9..2ad38774b9d 100644
+--- a/services/core/java/com/android/server/lights/LightsService.java
++++ b/services/core/java/com/android/server/lights/LightsService.java
+@@ -55,9 +55,7 @@ public class LightsService extends SystemService {
+ 
+                 if(mId == 0) {
+                     String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
+-                    if(
+-                           fp.contains("starlte") || fp.contains("star2lte") ||
+-                           fp.contains("starqlte") || fp.contains("star2qlte")) {
++                    if(fp.matches(".*(crown|star)[q2]*lte.*")) {
+                         setLightLocked(brightness*100, LIGHT_FLASH_HARDWARE, 0, 0, brightnessMode);
+                         return;
+                     }
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0020-Add-a-property-toggle-to-enable-high-brightness-rang.patch b/patches/frameworks/base/0020-Add-a-property-toggle-to-enable-high-brightness-rang.patch
new file mode 100644
index 0000000..f92d5e1
--- /dev/null
+++ b/patches/frameworks/base/0020-Add-a-property-toggle-to-enable-high-brightness-rang.patch
@@ -0,0 +1,30 @@
+From d4bd8d2ae0fba3accc9e0ad12ec825bbd87ab0ac Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Mon, 27 Aug 2018 00:47:13 +0200
+Subject: [PATCH 20/28] Add a property toggle to enable high brightness range
+ on samsung device
+
+---
+ .../core/java/com/android/server/lights/LightsService.java  | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
+index 2ad38774b9d..89008ea3134 100644
+--- a/services/core/java/com/android/server/lights/LightsService.java
++++ b/services/core/java/com/android/server/lights/LightsService.java
+@@ -56,7 +56,11 @@ public class LightsService extends SystemService {
+                 if(mId == 0) {
+                     String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
+                     if(fp.matches(".*(crown|star)[q2]*lte.*")) {
+-                        setLightLocked(brightness*100, LIGHT_FLASH_HARDWARE, 0, 0, brightnessMode);
++                        int newBrightness = brightness * 100;
++                        if(SystemProperties.getBoolean("persist.sys.samsung.full_brightness", false)) {
++                            newBrightness = (int) (brightness * 40960.0 / 255.0);
++                        }
++                        setLightLocked(newBrightness, LIGHT_FLASH_HARDWARE, 0, 0, brightnessMode);
+                         return;
+                     }
+ 
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0021-Add-a-property-to-override-pre-o-max-aspect-ratio.patch b/patches/frameworks/base/0021-Add-a-property-to-override-pre-o-max-aspect-ratio.patch
new file mode 100644
index 0000000..7b21eae
--- /dev/null
+++ b/patches/frameworks/base/0021-Add-a-property-to-override-pre-o-max-aspect-ratio.patch
@@ -0,0 +1,49 @@
+From 11609f76801c9995fb3b1eb92e0ab25a79f7b977 Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Wed, 29 Aug 2018 11:05:54 +0200
+Subject: [PATCH 21/28] Add a property to override pre-o max aspect ratio
+
+Conflicts:
+	services/core/java/com/android/server/am/ActivityRecord.java
+
+Change-Id: I523b4e99bf647bb202a70003dbad1fb8551f3942
+---
+ .../core/java/com/android/server/am/ActivityRecord.java   | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
+index 4a9f8fc5a6e..8c5465a5134 100644
+--- a/services/core/java/com/android/server/am/ActivityRecord.java
++++ b/services/core/java/com/android/server/am/ActivityRecord.java
+@@ -164,6 +164,7 @@ import android.os.PersistableBundle;
+ import android.os.Process;
+ import android.os.RemoteException;
+ import android.os.SystemClock;
++import android.os.SystemProperties;
+ import android.os.UserHandle;
+ import android.os.storage.StorageManager;
+ import android.service.voice.IVoiceInteractionSession;
+@@ -2416,7 +2417,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
+     // TODO(b/36505427): Consider moving this method and similar ones to ConfigurationContainer.
+     private void computeBounds(Rect outBounds) {
+         outBounds.setEmpty();
+-
+         float maxAspectRatio = info.maxAspectRatio;
+         if (maxAspectRatio != 0.0f && higherAspectRatio && service.getAspectRatioApps() != null) {
+             if (service.getAspectRatioApps().contains(packageName)) {
+@@ -2438,6 +2438,12 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
+             return;
+         }
+ 
++        if(info.applicationInfo.targetSdkVersion < O) {
++            try {
++                maxAspectRatio = Float.parseFloat(SystemProperties.get("persist.sys.max_aspect_ratio.pre_o", ""));
++            } catch (Throwable t) {}
++            Log.d("PHH", "Overrode aspect ratio because pre-o to " + maxAspectRatio);
++        }
+         // We must base this on the parent configuration, because we set our override
+         // configuration's appBounds based on the result of this method. If we used our own
+         // configuration, it would be influenced by past invocations.
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0022-Add-japanese-S9.patch b/patches/frameworks/base/0022-Add-japanese-S9.patch
new file mode 100644
index 0000000..a2bad6c
--- /dev/null
+++ b/patches/frameworks/base/0022-Add-japanese-S9.patch
@@ -0,0 +1,26 @@
+From 9baf3750c4f0fe4c9a84e84a44bb644659321914 Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Tue, 28 Aug 2018 20:39:26 +0200
+Subject: [PATCH 22/28] Add japanese S9
+
+---
+ .../core/java/com/android/server/lights/LightsService.java     | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
+index 89008ea3134..47c1d9297fe 100644
+--- a/services/core/java/com/android/server/lights/LightsService.java
++++ b/services/core/java/com/android/server/lights/LightsService.java
+@@ -55,7 +55,8 @@ public class LightsService extends SystemService {
+ 
+                 if(mId == 0) {
+                     String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
+-                    if(fp.matches(".*(crown|star)[q2]*lte.*")) {
++                    if(fp.matches(".*(crown|star)[q2]*lte.*") ||
++				    fp.matches(".*(SC-0[23]K|SCV3[89]).*")) {
+                         int newBrightness = brightness * 100;
+                         if(SystemProperties.getBoolean("persist.sys.samsung.full_brightness", false)) {
+                             newBrightness = (int) (brightness * 40960.0 / 255.0);
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0023-Re-order-services-so-that-it-works-even-without-qtag.patch b/patches/frameworks/base/0023-Re-order-services-so-that-it-works-even-without-qtag.patch
new file mode 100644
index 0000000..64a566a
--- /dev/null
+++ b/patches/frameworks/base/0023-Re-order-services-so-that-it-works-even-without-qtag.patch
@@ -0,0 +1,36 @@
+From 60a9452721932a3c35d41a73e563761a6427df5b Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Thu, 8 Nov 2018 23:04:03 +0100
+Subject: [PATCH 23/28] Re-order services so that it works even without qtaguid
+
+---
+ .../com/android/server/net/NetworkPolicyManagerService.java | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+index db33bd8f08d..c612b2ab211 100644
+--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
++++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+@@ -710,6 +710,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
+         Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "systemReady");
+         final int oldPriority = Process.getThreadPriority(Process.myTid());
+         try {
++            mUsageStats = LocalServices.getService(UsageStatsManagerInternal.class);
++            mNetworkStats = LocalServices.getService(NetworkStatsManagerInternal.class);
++
+             // Boost thread's priority during system server init
+             Process.setThreadPriority(Process.THREAD_PRIORITY_FOREGROUND);
+             if (!isBandwidthControlEnabled()) {
+@@ -717,9 +720,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
+                 return;
+             }
+ 
+-            mUsageStats = LocalServices.getService(UsageStatsManagerInternal.class);
+-            mNetworkStats = LocalServices.getService(NetworkStatsManagerInternal.class);
+-
+             synchronized (mUidRulesFirstLock) {
+                 synchronized (mNetworkPoliciesSecondLock) {
+                     updatePowerSaveWhitelistUL();
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0024-Use-Samsung-fingerprint-percent-thingy-on-all-Samsun.patch b/patches/frameworks/base/0024-Use-Samsung-fingerprint-percent-thingy-on-all-Samsun.patch
new file mode 100644
index 0000000..7c1117d
--- /dev/null
+++ b/patches/frameworks/base/0024-Use-Samsung-fingerprint-percent-thingy-on-all-Samsun.patch
@@ -0,0 +1,26 @@
+From 85cf9e48af84f9b3d57828b491d2c6c406c3553b Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Sun, 9 Dec 2018 16:31:44 +0100
+Subject: [PATCH 24/28] Use Samsung fingerprint percent thingy on all Samsung
+ devices
+
+---
+ .../java/com/android/server/fingerprint/FingerprintService.java | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java
+index 6f09433c002..8c2990b1999 100644
+--- a/services/core/java/com/android/server/fingerprint/FingerprintService.java
++++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java
+@@ -1048,7 +1048,7 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
+                 public void run() {
+                     int remaining2 = remaining;
+                     String fp = android.os.SystemProperties.get("ro.vendor.build.fingerprint");
+-                    if(fp != null && (fp.contains("starlte") || fp.contains("star2lte") || fp.contains("starqlte") || fp.contains("star2qlte")))
++                    if(fp != null && (fp.startsWith("samsung/")))
+                         remaining2 = 100 - remaining2;
+                     handleEnrollResult(deviceId, fingerId, groupId, remaining2);
+                 }
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0025-Different-value-for-astarqlte.-Probably-more-devices.patch b/patches/frameworks/base/0025-Different-value-for-astarqlte.-Probably-more-devices.patch
new file mode 100644
index 0000000..76b335f
--- /dev/null
+++ b/patches/frameworks/base/0025-Different-value-for-astarqlte.-Probably-more-devices.patch
@@ -0,0 +1,33 @@
+From d6213d584ef165a7d9e26ae07debf88825367090 Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Sun, 10 Mar 2019 19:35:06 +0100
+Subject: [PATCH 25/28] Different value for astarqlte. Probably more devices to
+ add later
+
+---
+ .../java/com/android/server/lights/LightsService.java    | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
+index 47c1d9297fe..e5299e456f5 100644
+--- a/services/core/java/com/android/server/lights/LightsService.java
++++ b/services/core/java/com/android/server/lights/LightsService.java
+@@ -55,6 +55,15 @@ public class LightsService extends SystemService {
+ 
+                 if(mId == 0) {
+                     String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
++                    if(fp.matches(".*astarqlte.*")) {
++                        int newBrightness = brightness;
++                        if(SystemProperties.getBoolean("persist.sys.samsung.full_brightness", false)) {
++                            newBrightness = (int) (brightness * 365.0 / 255.0);
++                        }
++                        setLightLocked(newBrightness, LIGHT_FLASH_HARDWARE, 0, 0, brightnessMode);
++                        return;
++                    }
++
+                     if(fp.matches(".*(crown|star)[q2]*lte.*") ||
+ 				    fp.matches(".*(SC-0[23]K|SCV3[89]).*")) {
+                         int newBrightness = brightness * 100;
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0026-Revert-LockSettingsService-Support-for-separate-clea.patch b/patches/frameworks/base/0026-Revert-LockSettingsService-Support-for-separate-clea.patch
new file mode 100644
index 0000000..d698d8f
--- /dev/null
+++ b/patches/frameworks/base/0026-Revert-LockSettingsService-Support-for-separate-clea.patch
@@ -0,0 +1,87 @@
+From bbccdea5094fdebb4e238c731699f434dd0bf708 Mon Sep 17 00:00:00 2001
+From: Jackeagle <jackeagle102@gmail.com>
+Date: Thu, 25 Apr 2019 05:34:02 +0200
+Subject: [PATCH 26/28] Revert "LockSettingsService: Support for separate clear
+ key api"
+
+This reverts commit 32b8f829d566bfd3d89c9b3eb018f0fc4d408e2d.
+---
+ .../android/os/storage/IStorageManager.aidl    |  1 -
+ .../android/server/StorageManagerService.java  | 18 ------------------
+ .../locksettings/LockSettingsService.java      | 14 +-------------
+ 3 files changed, 1 insertion(+), 32 deletions(-)
+
+diff --git a/core/java/android/os/storage/IStorageManager.aidl b/core/java/android/os/storage/IStorageManager.aidl
+index 49bc9e4d8d0..55a202fd3a6 100644
+--- a/core/java/android/os/storage/IStorageManager.aidl
++++ b/core/java/android/os/storage/IStorageManager.aidl
+@@ -187,5 +187,4 @@ interface IStorageManager {
+     void allocateBytes(String volumeUuid, long bytes, int flags, String callingPackage) = 78;
+     void runIdleMaintenance() = 79;
+     void abortIdleMaintenance() = 80;
+-    void clearUserKeyAuth(int userId, int serialNumber, in byte[] token, in byte[] secret) = 81;
+ }
+diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
+index 14b02030714..7a726ce802c 100644
+--- a/services/core/java/com/android/server/StorageManagerService.java
++++ b/services/core/java/com/android/server/StorageManagerService.java
+@@ -2531,24 +2531,6 @@ class StorageManagerService extends IStorageManager.Stub
+         }
+     }
+ 
+-    /*
+-     * Clear disk encryption key bound to the associated token / secret pair. Removing the user
+-     * binding of the Disk encryption key is done in two phases: first, this call will retrieve
+-     * the disk encryption key using the provided token / secret pair and store it by
+-     * encrypting it with a keymaster key not bound to the user, then fixateNewestUserKeyAuth
+-     * is called to delete all other bindings of the disk encryption key.
+-     */
+-    @Override
+-    public void clearUserKeyAuth(int userId, int serialNumber, byte[] token, byte[] secret) {
+-        enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
+-
+-        try {
+-            mVold.clearUserKeyAuth(userId, serialNumber, encodeBytes(token), encodeBytes(secret));
+-        } catch (Exception e) {
+-            Slog.wtf(TAG, e);
+-        }
+-    }
+-
+     /*
+      * Delete all disk encryption token/secret pairs except the most recently added one
+      */
+diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
+index edd68b7d2eb..faf5a09e91b 100644
+--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
++++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
+@@ -1568,18 +1568,6 @@ public class LockSettingsService extends ILockSettings.Stub {
+         addUserKeyAuth(userId, null, null);
+     }
+ 
+-    private void clearUserKeyAuth(int userId, byte[] token, byte[] secret) throws RemoteException {
+-        if (DEBUG) Slog.d(TAG, "clearUserKeyProtection user=" + userId);
+-        final UserInfo userInfo = mUserManager.getUserInfo(userId);
+-        final IStorageManager storageManager = mInjector.getStorageManager();
+-        final long callingId = Binder.clearCallingIdentity();
+-        try {
+-            storageManager.clearUserKeyAuth(userId, userInfo.serialNumber, token, secret);
+-        } finally {
+-            Binder.restoreCallingIdentity(callingId);
+-        }
+-    }
+-
+     private static byte[] secretFromCredential(String credential) throws RemoteException {
+         try {
+             MessageDigest digest = MessageDigest.getInstance("SHA-512");
+@@ -2530,7 +2518,7 @@ public class LockSettingsService extends ILockSettings.Stub {
+             getGateKeeperService().clearSecureUserId(userId);
+             // Clear key from vold so ActivityManager can just unlock the user with empty secret
+             // during boot.
+-            clearUserKeyAuth(userId, null, auth.deriveDiskEncryptionKey());
++            clearUserKeyProtection(userId);
+             fixateNewestUserKeyAuth(userId);
+             setKeystorePassword(null, userId);
+         }
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0027-Revert-frameworks-base-Port-password-retention-featu.patch b/patches/frameworks/base/0027-Revert-frameworks-base-Port-password-retention-featu.patch
new file mode 100644
index 0000000..e5213b2
--- /dev/null
+++ b/patches/frameworks/base/0027-Revert-frameworks-base-Port-password-retention-featu.patch
@@ -0,0 +1,193 @@
+From 7bd103d2fd1b539684862c31250c7e97b04ce68b Mon Sep 17 00:00:00 2001
+From: Jackeagle <jackeagle102@gmail.com>
+Date: Thu, 25 Apr 2019 05:34:18 +0200
+Subject: [PATCH 27/28] Revert "frameworks: base: Port password retention
+ feature"
+
+This reverts commit 90fce44de1101a925c62fafda8d6e5b3c8663ad4.
+---
+ .../internal/widget/ILockSettings.aidl        |  2 -
+ .../internal/widget/LockPatternUtils.java     | 11 -----
+ .../keyguard/KeyguardAbsKeyInputView.java     |  1 -
+ .../android/keyguard/KeyguardPatternView.java |  1 -
+ .../android/server/StorageManagerService.java | 17 +------
+ .../locksettings/LockSettingsService.java     | 49 +------------------
+ 6 files changed, 2 insertions(+), 79 deletions(-)
+
+diff --git a/core/java/com/android/internal/widget/ILockSettings.aidl b/core/java/com/android/internal/widget/ILockSettings.aidl
+index 2f504c8ea02..3f218554037 100644
+--- a/core/java/com/android/internal/widget/ILockSettings.aidl
++++ b/core/java/com/android/internal/widget/ILockSettings.aidl
+@@ -80,6 +80,4 @@ interface ILockSettings {
+             in byte[] recoveryKeyBlob,
+             in List<WrappedApplicationKey> applicationKeys);
+     void closeSession(in String sessionId);
+-    void sanitizePassword();
+-    String getPassword();
+ }
+diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
+index bf780c1a80e..60606627949 100644
+--- a/core/java/com/android/internal/widget/LockPatternUtils.java
++++ b/core/java/com/android/internal/widget/LockPatternUtils.java
+@@ -740,17 +740,6 @@ public class LockPatternUtils {
+         onAfterChangingPassword(userId);
+     }
+ 
+-    /**
+-     * clears stored password.
+-     */
+-    public void sanitizePassword() {
+-        try {
+-            getLockSettings().sanitizePassword();
+-        } catch (RemoteException re) {
+-            Log.e(TAG, "Couldn't sanitize password" + re);
+-        }
+-    }
+-
+     private void updateCryptoUserInfo(int userId) {
+         if (userId != UserHandle.USER_SYSTEM) {
+             return;
+diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
+index c3119793eaf..48b41345675 100644
+--- a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
++++ b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
+@@ -187,7 +187,6 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
+             boolean isValidPassword) {
+         boolean dismissKeyguard = KeyguardUpdateMonitor.getCurrentUser() == userId;
+         if (matched) {
+-            mLockPatternUtils.sanitizePassword();
+             mCallback.reportUnlockAttempt(userId, true, 0);
+             if (dismissKeyguard) {
+                 mDismissing = true;
+diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java
+index 3ae15b6500b..cc56a8a3599 100644
+--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java
++++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java
+@@ -310,7 +310,6 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
+                 boolean isValidPattern) {
+             boolean dismissKeyguard = KeyguardUpdateMonitor.getCurrentUser() == userId;
+             if (matched) {
+-                mLockPatternUtils.sanitizePassword();
+                 mCallback.reportUnlockAttempt(userId, true, 0);
+                 if (dismissKeyguard) {
+                     mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Correct);
+diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
+index 7a726ce802c..d979ede7367 100644
+--- a/services/core/java/com/android/server/StorageManagerService.java
++++ b/services/core/java/com/android/server/StorageManagerService.java
+@@ -126,7 +126,6 @@ import com.android.internal.util.Preconditions;
+ import com.android.internal.widget.LockPatternUtils;
+ import com.android.server.pm.PackageManagerService;
+ import com.android.server.storage.AppFuseBridge;
+-import com.android.internal.widget.ILockSettings;
+ 
+ import libcore.io.IoUtils;
+ import libcore.util.EmptyArray;
+@@ -2322,22 +2321,8 @@ class StorageManagerService extends IStorageManager.Stub
+             Slog.i(TAG, "changing encryption password...");
+         }
+ 
+-        ILockSettings lockSettings = ILockSettings.Stub.asInterface(
+-                        ServiceManager.getService("lock_settings"));
+-        String currentPassword="default_password";
+         try {
+-            currentPassword = lockSettings.getPassword();
+-        } catch (Exception e) {
+-            Slog.wtf(TAG, "Couldn't get password" + e);
+-        }
+-
+-        try {
+-            mVold.fdeChangePassword(type, currentPassword, password);
+-            try {
+-                lockSettings.sanitizePassword();
+-            } catch (Exception e) {
+-                Slog.wtf(TAG, "Couldn't sanitize password" + e);
+-            }
++            mVold.fdeChangePassword(type, password);
+             return 0;
+         } catch (Exception e) {
+             Slog.wtf(TAG, e);
+diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
+index faf5a09e91b..5075b36fd62 100644
+--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
++++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
+@@ -164,7 +164,6 @@ public class LockSettingsService extends ILockSettings.Stub {
+     // Order of holding lock: mSeparateChallengeLock -> mSpManager -> this
+     // Do not call into ActivityManager while holding mSpManager lock.
+     private final Object mSeparateChallengeLock = new Object();
+-    private static final String DEFAULT_PASSWORD = "default_password";
+ 
+     private final DeviceProvisionedObserver mDeviceProvisionedObserver =
+             new DeviceProvisionedObserver();
+@@ -185,7 +184,6 @@ public class LockSettingsService extends ILockSettings.Stub {
+     private final SyntheticPasswordManager mSpManager;
+ 
+     private final KeyStore mKeyStore;
+-    private static String mSavePassword = DEFAULT_PASSWORD;
+ 
+     private final RecoverableKeyStoreManager mRecoverableKeyStoreManager;
+ 
+@@ -1099,45 +1097,6 @@ public class LockSettingsService extends ILockSettings.Stub {
+         return mStorage.hasCredential(userId);
+     }
+ 
+-    public void retainPassword(String password) {
+-        if (LockPatternUtils.isDeviceEncryptionEnabled()) {
+-            if (password != null)
+-                mSavePassword = password;
+-            else
+-                mSavePassword = DEFAULT_PASSWORD;
+-        }
+-    }
+-
+-    public void sanitizePassword() {
+-        if (LockPatternUtils.isDeviceEncryptionEnabled()) {
+-            mSavePassword = DEFAULT_PASSWORD;
+-        }
+-    }
+-
+-    private boolean checkCryptKeeperPermissions() {
+-        boolean permission_err = false;
+-        try {
+-            mContext.enforceCallingOrSelfPermission(
+-                       android.Manifest.permission.CRYPT_KEEPER,
+-                       "no permission to get the password");
+-        } catch (SecurityException e) {
+-            permission_err = true;
+-        }
+-        return permission_err;
+-    }
+-
+-    public String getPassword() {
+-       /** if calling process does't have crypt keeper or admin permissions,
+-         * throw the exception.
+-         */
+-       if (checkCryptKeeperPermissions())
+-            mContext.enforceCallingOrSelfPermission(
+-                    android.Manifest.permission.MANAGE_DEVICE_ADMINS,
+-                    "no crypt_keeper or admin permission to get the password");
+-
+-       return mSavePassword;
+-    }
+-
+     private void setKeystorePassword(String password, int userHandle) {
+         final KeyStore ks = KeyStore.getInstance();
+         ks.onUserPasswordChanged(userHandle, password);
+@@ -1656,13 +1615,7 @@ public class LockSettingsService extends ILockSettings.Stub {
+     public VerifyCredentialResponse checkCredential(String credential, int type, int userId,
+             ICheckCredentialProgressCallback progressCallback) throws RemoteException {
+         checkPasswordReadPermission(userId);
+-        VerifyCredentialResponse response = doVerifyCredential(credential, type,
+-                                        false, 0, userId, progressCallback);
+-        if ((response.getResponseCode() == VerifyCredentialResponse.RESPONSE_OK) &&
+-                                           (userId == UserHandle.USER_OWNER)) {
+-                retainPassword(credential);
+-        }
+-        return response;
++        return doVerifyCredential(credential, type, false, 0, userId, progressCallback);
+     }
+ 
+     @Override
+-- 
+2.21.0
+
diff --git a/patches/frameworks/base/0028-Revert-Use-fdeCheckPassword-error-code-to-indicate-p.patch b/patches/frameworks/base/0028-Revert-Use-fdeCheckPassword-error-code-to-indicate-p.patch
new file mode 100644
index 0000000..8407447
--- /dev/null
+++ b/patches/frameworks/base/0028-Revert-Use-fdeCheckPassword-error-code-to-indicate-p.patch
@@ -0,0 +1,36 @@
+From 323a88311763b402b04ec4588e8962f97b3a2c75 Mon Sep 17 00:00:00 2001
+From: Jackeagle <jackeagle102@gmail.com>
+Date: Thu, 25 Apr 2019 05:34:34 +0200
+Subject: [PATCH 28/28] Revert "Use fdeCheckPassword error code to indicate pw
+ failure"
+
+This reverts commit 604396bf8dd83a2d4c210f8d029b871d9838af32.
+---
+ .../core/java/com/android/server/StorageManagerService.java   | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
+index d979ede7367..3ad9a2ce8c4 100644
+--- a/services/core/java/com/android/server/StorageManagerService.java
++++ b/services/core/java/com/android/server/StorageManagerService.java
+@@ -81,7 +81,6 @@ import android.os.Process;
+ import android.os.RemoteCallbackList;
+ import android.os.RemoteException;
+ import android.os.ServiceManager;
+-import android.os.ServiceSpecificException;
+ import android.os.SystemClock;
+ import android.os.SystemProperties;
+ import android.os.UserHandle;
+@@ -2263,9 +2262,6 @@ class StorageManagerService extends IStorageManager.Stub
+                 }
+             }, DateUtils.SECOND_IN_MILLIS);
+             return 0;
+-        } catch (ServiceSpecificException e) {
+-            Slog.e(TAG, "fdeCheckPassword failed", e);
+-            return e.errorCode;
+         } catch (Exception e) {
+             Slog.wtf(TAG, e);
+             return StorageManager.ENCRYPTION_STATE_ERROR_UNKNOWN;
+-- 
+2.21.0
+