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
+