Merge in upstream changes
From :https://github.com/phhusson/treble_patches
Change-Id: I785ed4d854f28f661b1b48530dc10a5adf076e74
diff --git a/patches/platform_frameworks_base/0001-Fix-backlight-control-on-Galaxy-S9.patch b/patches/platform_frameworks_base/0001-Fix-backlight-control-on-Galaxy-S9.patch
new file mode 100644
index 0000000..46691c6
--- /dev/null
+++ b/patches/platform_frameworks_base/0001-Fix-backlight-control-on-Galaxy-S9.patch
@@ -0,0 +1,37 @@
+From 83c5a5d0e192b901ec36059bf2fb1fc8d63de1a7 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/19] Fix backlight control on Galaxy S9(+)
+
+---
+ services/core/java/com/android/server/lights/LightsService.java | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
+index a94ed60..762b0ae 100644
+--- a/services/core/java/com/android/server/lights/LightsService.java
++++ b/services/core/java/com/android/server/lights/LightsService.java
+@@ -21,6 +21,7 @@ import android.app.ActivityManager;
+ import android.content.Context;
+ import android.os.Handler;
+ import android.os.Message;
++import android.os.SystemProperties;
+ import android.os.Trace;
+ import android.provider.Settings;
+ import android.util.Slog;
+@@ -52,6 +53,12 @@ public class LightsService extends SystemService {
+ return;
+ }
+
++ String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
++ if(fp.contains("starlte") || fp.contains("star2lte")) {
++ setLightLocked(brightness*100, LIGHT_FLASH_HARDWARE, 0, 0, brightnessMode);
++ return;
++ }
++
+ int color = brightness & 0x000000ff;
+ color = 0xff000000 | (color << 16) | (color << 8) | color;
+ setLightLocked(color, LIGHT_FLASH_NONE, 0, 0, brightnessMode);
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0002-Relax-requirement-for-visible-flag-to-sdcards.patch b/patches/platform_frameworks_base/0002-Relax-requirement-for-visible-flag-to-sdcards.patch
new file mode 100644
index 0000000..4ce0d86
--- /dev/null
+++ b/patches/platform_frameworks_base/0002-Relax-requirement-for-visible-flag-to-sdcards.patch
@@ -0,0 +1,31 @@
+From 4547592e86f29d043daf0f3385c802949fa73193 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/19] 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)
+FBE broke adoptable storage with SDCard, hence this need.
+
+Change-Id: Ia616671c03562d1eadaff5531a5c708a62d7ad3a
+---
+ services/core/java/com/android/server/StorageManagerService.java | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
+index 183be9b..e8f2ad1 100644
+--- a/services/core/java/com/android/server/StorageManagerService.java
++++ b/services/core/java/com/android/server/StorageManagerService.java
+@@ -1178,7 +1178,8 @@ class StorageManagerService extends IStorageManager.Stub
+
+ // Adoptable public disks are visible to apps, since they meet
+ // public API requirement of being in a stable location.
+- if (vol.disk.isAdoptable()) {
++ // Assume all SDs match this as well
++ if (vol.disk.isAdoptable() || vol.disk.isSd()) {
+ vol.mountFlags |= VolumeInfo.MOUNT_FLAG_VISIBLE;
+ }
+
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0003-Also-scan-system-overlay.patch b/patches/platform_frameworks_base/0003-Also-scan-system-overlay.patch
new file mode 100644
index 0000000..a64821d
--- /dev/null
+++ b/patches/platform_frameworks_base/0003-Also-scan-system-overlay.patch
@@ -0,0 +1,52 @@
+From b3bf3329f50ba0fc4a494a772d5f76b66dc67a2c 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/19] Also scan /system/overlay
+
+Change-Id: Ib0223560606b80cdaaa986b159b34b4db0154589
+---
+ core/jni/android_util_AssetManager.cpp | 6 +++++-
+ core/jni/fd_utils.cpp | 3 ++-
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
+index fa9f445..1d3bf73 100644
+--- a/core/jni/android_util_AssetManager.cpp
++++ b/core/jni/android_util_AssetManager.cpp
+@@ -149,7 +149,7 @@ static void NativeVerifySystemIdmaps(JNIEnv* /*env*/, jclass /*clazz*/) {
+ }
+
+ // Generic idmap parameters
+- const char* argv[8];
++ const char* argv[9];
+ int argc = 0;
+ struct stat st;
+
+@@ -179,6 +179,10 @@ static void NativeVerifySystemIdmaps(JNIEnv* /*env*/, jclass /*clazz*/) {
+ argv[argc++] = AssetManager::PRODUCT_OVERLAY_DIR;
+ }
+
++ if(stat("/system/overlay", &st) == 0) {
++ argv[argc++] = "/system/overlay";
++ }
++
+ // Finally, invoke idmap (if any overlay directory exists)
+ if (argc > 5) {
+ execv(AssetManager::IDMAP_BIN, (char* const*)argv);
+diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp
+index c5904e0..6548215 100644
+--- a/core/jni/fd_utils.cpp
++++ b/core/jni/fd_utils.cpp
+@@ -93,7 +93,8 @@ bool FileDescriptorWhitelist::IsAllowed(const std::string& path) const {
+ || android::base::StartsWith(path, kOverlaySubdir)
+ || android::base::StartsWith(path, kVendorOverlayDir)
+ || android::base::StartsWith(path, kSystemProductOverlayDir)
+- || android::base::StartsWith(path, kProductOverlayDir))
++ || android::base::StartsWith(path, kProductOverlayDir)
++ || android::base::StartsWith(path, "/system/overlay"))
+ && android::base::EndsWith(path, kApkSuffix)
+ && path.find("/../") == std::string::npos) {
+ return true;
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0004-Don-t-crash-if-there-is-IR-HAL-is-not-declared.patch b/patches/platform_frameworks_base/0004-Don-t-crash-if-there-is-IR-HAL-is-not-declared.patch
new file mode 100644
index 0000000..43cfc48
--- /dev/null
+++ b/patches/platform_frameworks_base/0004-Don-t-crash-if-there-is-IR-HAL-is-not-declared.patch
@@ -0,0 +1,25 @@
+From 89b3b71fc07b7069b7c5f345762925b9743e6361 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/19] Don't crash if there is IR HAL is not declared
+
+---
+ services/core/java/com/android/server/ConsumerIrService.java | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/services/core/java/com/android/server/ConsumerIrService.java b/services/core/java/com/android/server/ConsumerIrService.java
+index 2ed6c77..c574a03 100644
+--- a/services/core/java/com/android/server/ConsumerIrService.java
++++ b/services/core/java/com/android/server/ConsumerIrService.java
+@@ -50,8 +50,6 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
+ if (!mHasNativeHal) {
+ throw new RuntimeException("FEATURE_CONSUMER_IR present, but no IR HAL loaded!");
+ }
+- } else if (mHasNativeHal) {
+- throw new RuntimeException("IR HAL present, but FEATURE_CONSUMER_IR is not set!");
+ }
+ }
+
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0005-Fix-62.patch b/patches/platform_frameworks_base/0005-Fix-62.patch
new file mode 100644
index 0000000..caf028d
--- /dev/null
+++ b/patches/platform_frameworks_base/0005-Fix-62.patch
@@ -0,0 +1,28 @@
+From ca27968613cbe47b158a690f82347586264bbe54 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/19] Fix(?) #62
+
+---
+ .../SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+index 62cd13b..7efbdb8 100644
+--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
++++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+@@ -891,7 +891,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
+
+ @Override
+ public void onAuthenticationError(int errMsgId, CharSequence errString) {
+- handleFingerprintError(errMsgId, errString.toString());
++ if(errString != null)
++ handleFingerprintError(errMsgId, errString.toString());
++ else
++ handleFingerprintError(errMsgId, "unknown error");
+ }
+
+ @Override
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0006-S9-brightness-override-only-for-screen.patch b/patches/platform_frameworks_base/0006-S9-brightness-override-only-for-screen.patch
new file mode 100644
index 0000000..3ecbdb3
--- /dev/null
+++ b/patches/platform_frameworks_base/0006-S9-brightness-override-only-for-screen.patch
@@ -0,0 +1,35 @@
+From 5b5bafd457463ca4c90d3d2470703655179220ae 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/19] S9 brightness override only for screen
+
+---
+ .../core/java/com/android/server/lights/LightsService.java | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
+index 762b0ae..eb25943 100644
+--- a/services/core/java/com/android/server/lights/LightsService.java
++++ b/services/core/java/com/android/server/lights/LightsService.java
+@@ -53,11 +53,13 @@ public class LightsService extends SystemService {
+ return;
+ }
+
+- String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
+- if(fp.contains("starlte") || fp.contains("star2lte")) {
+- setLightLocked(brightness*100, LIGHT_FLASH_HARDWARE, 0, 0, brightnessMode);
+- return;
+- }
++ if(mId == 0) {
++ String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
++ if(fp.contains("starlte") || fp.contains("star2lte")) {
++ setLightLocked(brightness*100, LIGHT_FLASH_HARDWARE, 0, 0, brightnessMode);
++ return;
++ }
++ }
+
+ int color = brightness & 0x000000ff;
+ color = 0xff000000 | (color << 16) | (color << 8) | color;
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0007-WIP-Fix-OP6-brightness.patch b/patches/platform_frameworks_base/0007-WIP-Fix-OP6-brightness.patch
new file mode 100644
index 0000000..8aafc40
--- /dev/null
+++ b/patches/platform_frameworks_base/0007-WIP-Fix-OP6-brightness.patch
@@ -0,0 +1,35 @@
+From c23233a753225db8dcb6c74c53c0edc0ab2be44e 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/19] [WIP] Fix OP6 brightness
+
+---
+ .../core/java/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 eb25943..a77af44 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.7.4
+
diff --git a/patches/platform_frameworks_base/0008-Try-to-make-brightness-more-generic-using-property-s.patch b/patches/platform_frameworks_base/0008-Try-to-make-brightness-more-generic-using-property-s.patch
new file mode 100644
index 0000000..4619a1b
--- /dev/null
+++ b/patches/platform_frameworks_base/0008-Try-to-make-brightness-more-generic-using-property-s.patch
@@ -0,0 +1,31 @@
+From c87dbdb6ff897e1f25ce90acf136b4606337db00 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/19] Try to make brightness more generic using property set
+ by rw-system
+
+---
+ services/core/java/com/android/server/lights/LightsService.java | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
+index a77af44..4dc44de 100644
+--- a/services/core/java/com/android/server/lights/LightsService.java
++++ b/services/core/java/com/android/server/lights/LightsService.java
+@@ -62,9 +62,11 @@ public class LightsService extends SystemService {
+
+ boolean qcomExtendBrightness = SystemProperties.getBoolean("persist.extend.brightness", false);
+ int scale = SystemProperties.getInt("persist.display.max_brightness", 1023);
+- if(fp.contains("OnePlus6")) {
++ //This is set by vndk-detect
++ int qcomScale = SystemProperties.getInt("persist.sys.qcom-brightness", -1);
++ if(qcomScale != -1) {
+ qcomExtendBrightness = true;
+- scale = 1023;
++ scale = qcomScale;
+ }
+
+ if(qcomExtendBrightness) {
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0009-property-matching-RROs-allow-to-prefix-the-value-wit.patch b/patches/platform_frameworks_base/0009-property-matching-RROs-allow-to-prefix-the-value-wit.patch
new file mode 100644
index 0000000..d5dd3af
--- /dev/null
+++ b/patches/platform_frameworks_base/0009-property-matching-RROs-allow-to-prefix-the-value-wit.patch
@@ -0,0 +1,35 @@
+From af7f850833c9de9d3f055406038dfe7c9108a0e3 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/19] property-matching RROs: allow to prefix the value with
+ + to do glob match instead of exact match
+
+---
+ cmds/idmap/scan.cpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/cmds/idmap/scan.cpp b/cmds/idmap/scan.cpp
+index d69dd79..2be6d23 100644
+--- a/cmds/idmap/scan.cpp
++++ b/cmds/idmap/scan.cpp
+@@ -1,5 +1,6 @@
+ #include <dirent.h>
+ #include <inttypes.h>
++#include <fnmatch.h>
+ #include <sys/file.h>
+ #include <sys/stat.h>
+
+@@ -92,6 +93,10 @@ namespace {
+ property_get(prop, propBuf, NULL);
+ val = strndup16to8(value.string(), value.size());
+
++ if(val[0]=='+') {
++ return fnmatch(val+1, propBuf, 0) != 0;
++ }
++
+ return (strcmp(propBuf, val) == 0);
+ }
+
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0010-Fix-typo-on-fnmatch-return-value-check.patch b/patches/platform_frameworks_base/0010-Fix-typo-on-fnmatch-return-value-check.patch
new file mode 100644
index 0000000..dac4cc7
--- /dev/null
+++ b/patches/platform_frameworks_base/0010-Fix-typo-on-fnmatch-return-value-check.patch
@@ -0,0 +1,25 @@
+From 88e3e3df61a84c0a569fe128e1e22776af2e9aa8 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/19] Fix typo on fnmatch return value check
+
+---
+ cmds/idmap/scan.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmds/idmap/scan.cpp b/cmds/idmap/scan.cpp
+index 2be6d23..0acff23 100644
+--- a/cmds/idmap/scan.cpp
++++ b/cmds/idmap/scan.cpp
+@@ -94,7 +94,7 @@ namespace {
+ val = strndup16to8(value.string(), value.size());
+
+ if(val[0]=='+') {
+- return fnmatch(val+1, propBuf, 0) != 0;
++ return fnmatch(val+1, propBuf, 0) == 0;
+ }
+
+ return (strcmp(propBuf, val) == 0);
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0011-Add-Qualcomm-starlte.patch b/patches/platform_frameworks_base/0011-Add-Qualcomm-starlte.patch
new file mode 100644
index 0000000..cea8a7c
--- /dev/null
+++ b/patches/platform_frameworks_base/0011-Add-Qualcomm-starlte.patch
@@ -0,0 +1,27 @@
+From f91ab52edbb4ed99689e0347f08cb9cd135bdbc5 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/19] Add Qualcomm starlte
+
+---
+ services/core/java/com/android/server/lights/LightsService.java | 4 +++-
+ 1 file changed, 3 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 4dc44de..2886f29 100644
+--- a/services/core/java/com/android/server/lights/LightsService.java
++++ b/services/core/java/com/android/server/lights/LightsService.java
+@@ -55,7 +55,9 @@ public class LightsService extends SystemService {
+
+ if(mId == 0) {
+ String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
+- if(fp.contains("starlte") || fp.contains("star2lte")) {
++ if(
++ fp.contains("starlte") || fp.contains("star2lte") ||
++ fp.contains("starqlte") || fp.contains("star2qlte")) {
+ setLightLocked(brightness*100, LIGHT_FLASH_HARDWARE, 0, 0, brightnessMode);
+ return;
+ }
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0012-Galaxy-S9-remaining-of-HAL-onEnroll-is-actually-a-pe.patch b/patches/platform_frameworks_base/0012-Galaxy-S9-remaining-of-HAL-onEnroll-is-actually-a-pe.patch
new file mode 100644
index 0000000..3493467
--- /dev/null
+++ b/patches/platform_frameworks_base/0012-Galaxy-S9-remaining-of-HAL-onEnroll-is-actually-a-pe.patch
@@ -0,0 +1,30 @@
+From 880144142eec1864485ae289d6772e046453612d 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/19] [Galaxy S9] "remaining" of HAL onEnroll is actually a
+ percent of progress
+
+---
+ .../java/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 06329e57..6f09433 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.7.4
+
diff --git a/patches/platform_frameworks_base/0013-Show-APN-Settings-for-CDMA-carriers.patch b/patches/platform_frameworks_base/0013-Show-APN-Settings-for-CDMA-carriers.patch
new file mode 100644
index 0000000..5330a7c
--- /dev/null
+++ b/patches/platform_frameworks_base/0013-Show-APN-Settings-for-CDMA-carriers.patch
@@ -0,0 +1,25 @@
+From 879613f77988fb4b1c628fd51e6b330e02cddfc3 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/19] Show APN Settings for CDMA carriers
+
+---
+ telephony/java/android/telephony/CarrierConfigManager.java | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
+index f66164c..0cf93a1 100644
+--- a/telephony/java/android/telephony/CarrierConfigManager.java
++++ b/telephony/java/android/telephony/CarrierConfigManager.java
+@@ -2019,7 +2019,7 @@ public class CarrierConfigManager {
+ sDefaults.putBoolean(KEY_MDN_IS_ADDITIONAL_VOICEMAIL_NUMBER_BOOL, false);
+ sDefaults.putBoolean(KEY_OPERATOR_SELECTION_EXPAND_BOOL, true);
+ sDefaults.putBoolean(KEY_PREFER_2G_BOOL, true);
+- sDefaults.putBoolean(KEY_SHOW_APN_SETTING_CDMA_BOOL, false);
++ sDefaults.putBoolean(KEY_SHOW_APN_SETTING_CDMA_BOOL, true);
+ sDefaults.putBoolean(KEY_SHOW_CDMA_CHOICES_BOOL, false);
+ sDefaults.putBoolean(KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL, false);
+ sDefaults.putBoolean(KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL, true);
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0014-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch b/patches/platform_frameworks_base/0014-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch
new file mode 100644
index 0000000..82f6545
--- /dev/null
+++ b/patches/platform_frameworks_base/0014-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch
@@ -0,0 +1,78 @@
+From fd818b3249a795d3e231fa9346372c183099c745 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/19] Change SignalStrentgh to change behaviour based on
+ property
+
+Change-Id: I940ed724047567ec5195ac93ea04574c3d92f70b
+---
+ .../java/android/telephony/SignalStrength.java | 39 +++++++++++++++-------
+ 1 file changed, 27 insertions(+), 12 deletions(-)
+
+diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
+index 4e56396..ff906d3 100644
+--- a/telephony/java/android/telephony/SignalStrength.java
++++ b/telephony/java/android/telephony/SignalStrength.java
+@@ -854,6 +854,7 @@ public class SignalStrength implements Parcelable {
+ * RSRQ = quality of signal dB = Number of Resource blocks*RSRP/RSSI
+ * SNR = gain = signal/noise ratio = -10log P1/P2 dB
+ */
++ String method = android.os.SystemProperties.get("persist.sys.signal.level", "default");
+ int rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN, rsrpIconLevel = -1, snrIconLevel = -1;
+
+ if (mLteRsrp > MAX_LTE_RSRP || mLteRsrp < MIN_LTE_RSRP) {
+@@ -897,6 +898,32 @@ public class SignalStrength implements Parcelable {
+ + rsrpIconLevel + " snrIconLevel:" + snrIconLevel
+ + " lteRsrpBoost:" + mLteRsrpBoost);
+
++ /* Valid values are (0-63, 99) as defined in TS 36.331 */
++ // TODO the range here is probably supposed to be (0..31, 99). It's unclear if anyone relies
++ // on the current incorrect range check, so this will be fixed in a future release with more
++ // soak time
++ if (mLteSignalStrength > 63) rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
++ else if (mLteSignalStrength >= 12) rssiIconLevel = SIGNAL_STRENGTH_GREAT;
++ else if (mLteSignalStrength >= 8) rssiIconLevel = SIGNAL_STRENGTH_GOOD;
++ else if (mLteSignalStrength >= 5) rssiIconLevel = SIGNAL_STRENGTH_MODERATE;
++ else if (mLteSignalStrength >= 0) rssiIconLevel = SIGNAL_STRENGTH_POOR;
++
++ if (DBG) log("getLTELevel - rssi:" + mLteSignalStrength + " rssiIconLevel:"
++ + rssiIconLevel);
++
++ if("rsrp".equals(method)) {
++ if(rsrpIconLevel == -1) rsrpIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
++ return rsrpIconLevel;
++ }
++ if("rssnr".equals(method)) {
++ if(snrIconLevel == -1) snrIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
++ return snrIconLevel;
++ }
++ if("rssi".equals(method)) {
++ if(rssiIconLevel == -1) rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
++ return rssiIconLevel;
++ }
++
+ /* Choose a measurement type to use for notification */
+ if (snrIconLevel != -1 && rsrpIconLevel != -1) {
+ /*
+@@ -911,18 +938,6 @@ public class SignalStrength implements Parcelable {
+
+ if (rsrpIconLevel != -1) return rsrpIconLevel;
+
+- /* Valid values are (0-63, 99) as defined in TS 36.331 */
+- // TODO the range here is probably supposed to be (0..31, 99). It's unclear if anyone relies
+- // on the current incorrect range check, so this will be fixed in a future release with more
+- // soak time
+- if (mLteSignalStrength > 63) rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+- else if (mLteSignalStrength >= 12) rssiIconLevel = SIGNAL_STRENGTH_GREAT;
+- else if (mLteSignalStrength >= 8) rssiIconLevel = SIGNAL_STRENGTH_GOOD;
+- else if (mLteSignalStrength >= 5) rssiIconLevel = SIGNAL_STRENGTH_MODERATE;
+- else if (mLteSignalStrength >= 0) rssiIconLevel = SIGNAL_STRENGTH_POOR;
+-
+- if (DBG) log("getLteLevel - rssi:" + mLteSignalStrength + " rssiIconLevel:"
+- + rssiIconLevel);
+ return rssiIconLevel;
+
+ }
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0015-idmap-Don-t-silently-ignore-RROs-with-same-priority.patch b/patches/platform_frameworks_base/0015-idmap-Don-t-silently-ignore-RROs-with-same-priority.patch
new file mode 100644
index 0000000..6d6b1e5
--- /dev/null
+++ b/patches/platform_frameworks_base/0015-idmap-Don-t-silently-ignore-RROs-with-same-priority.patch
@@ -0,0 +1,26 @@
+From 3ec335c1a6346e2f5ee03bf603839b730c12928c 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/19] idmap: Don't silently ignore RROs with same priority
+
+Change-Id: I64a6899f1b30e0cd9e9a872b7ca83d831f038cbe
+---
+ cmds/idmap/scan.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/cmds/idmap/scan.cpp b/cmds/idmap/scan.cpp
+index 0acff23..d1dde52 100644
+--- a/cmds/idmap/scan.cpp
++++ b/cmds/idmap/scan.cpp
+@@ -29,6 +29,8 @@ namespace {
+
+ bool operator<(Overlay const& rhs) const
+ {
++ if(rhs.priority == priority)
++ return rhs.apk_path > apk_path;
+ return rhs.priority > priority;
+ }
+
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0016-Move-SysuiDarkThemeOverlay-to-system.patch b/patches/platform_frameworks_base/0016-Move-SysuiDarkThemeOverlay-to-system.patch
new file mode 100644
index 0000000..e052a73
--- /dev/null
+++ b/patches/platform_frameworks_base/0016-Move-SysuiDarkThemeOverlay-to-system.patch
@@ -0,0 +1,24 @@
+From 9629e7118d06a375d96f2967be54f3c2348b5b89 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/19] Move SysuiDarkThemeOverlay to /system
+
+Change-Id: I31b3edc5d1abcc1163a13e63c909fee9d27ff432
+---
+ packages/overlays/SysuiDarkThemeOverlay/Android.mk | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/packages/overlays/SysuiDarkThemeOverlay/Android.mk b/packages/overlays/SysuiDarkThemeOverlay/Android.mk
+index 7b277bc..89cfcf8 100644
+--- a/packages/overlays/SysuiDarkThemeOverlay/Android.mk
++++ b/packages/overlays/SysuiDarkThemeOverlay/Android.mk
+@@ -11,4 +11,5 @@ LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+ LOCAL_PACKAGE_NAME := SysuiDarkThemeOverlay
+ LOCAL_SDK_VERSION := current
+
+-include $(BUILD_RRO_PACKAGE)
++LOCAL_IS_RUNTIME_RESOURCE_OVERLAY := true
++include $(BUILD_PACKAGE)
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0017-Reintroduce-button-backlight-and-respective-inactivi.patch b/patches/platform_frameworks_base/0017-Reintroduce-button-backlight-and-respective-inactivi.patch
new file mode 100644
index 0000000..ccee4a4
--- /dev/null
+++ b/patches/platform_frameworks_base/0017-Reintroduce-button-backlight-and-respective-inactivi.patch
@@ -0,0 +1,120 @@
+From 4459e03e52773a42d83bca5a02172d658e7fc2b9 Mon Sep 17 00:00:00 2001
+From: Ricardo Cerqueira <cyanogenmod@cerqueira.org>
+Date: Fri, 23 Nov 2012 14:23:16 +0000
+Subject: [PATCH 17/19] Reintroduce button-backlight (and respective inactivity
+ timeout)
+
+The power manager rewrite from Change I1d7a52e98f0449f76d70bf421f6a7f245957d1d7
+completely removed support for control of the button backlights, which makes
+all capacitive buttons out there stay dark. The commit message in that change
+mentions it hasn't been implemented _yet_, so this fix should be temporary
+until upstream does their own implementation
+
+[RC: Updated to 5.0]
+
+Change-Id: I6094c446e0b8c23f57d30652a3cbd35dee5e821a
+---
+ .../android/server/display/DisplayPowerController.java | 11 +++++++++++
+ .../com/android/server/power/PowerManagerService.java | 15 +++++++++++++++
+ 2 files changed, 26 insertions(+)
+
+diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
+index 99412c5..bb6f65c 100644
+--- a/services/core/java/com/android/server/display/DisplayPowerController.java
++++ b/services/core/java/com/android/server/display/DisplayPowerController.java
+@@ -21,6 +21,7 @@ import com.android.internal.app.IBatteryStats;
+ import com.android.server.LocalServices;
+ import com.android.server.am.BatteryStatsService;
+ import com.android.server.policy.WindowManagerPolicy;
++import com.android.server.lights.LightsManager;
+
+ import android.animation.Animator;
+ import android.animation.ObjectAnimator;
+@@ -141,6 +142,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
+ // Battery stats.
+ private final IBatteryStats mBatteryStats;
+
++ // The lights service.
++ private final LightsManager mLights;
++
+ // The sensor manager.
+ private final SensorManager mSensorManager;
+
+@@ -374,6 +378,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
+ mCallbacks = callbacks;
+
+ mBatteryStats = BatteryStatsService.getService();
++ mLights = LocalServices.getService(LightsManager.class);
+ mSensorManager = sensorManager;
+ mWindowManagerPolicy = LocalServices.getService(WindowManagerPolicy.class);
+ mBlanker = blanker;
+@@ -769,6 +774,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
+ // Use zero brightness when screen is off.
+ if (state == Display.STATE_OFF) {
+ brightness = PowerManager.BRIGHTNESS_OFF;
++ mLights.getLight(LightsManager.LIGHT_ID_BUTTONS).setBrightness(brightness);
++ }
++
++ // Disable button lights when dozing
++ if (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND) {
++ mLights.getLight(LightsManager.LIGHT_ID_BUTTONS).setBrightness(PowerManager.BRIGHTNESS_OFF);
+ }
+
+ // Always use the VR brightness when in the VR state.
+diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
+index 697801f..9b8584e 100644
+--- a/services/core/java/com/android/server/power/PowerManagerService.java
++++ b/services/core/java/com/android/server/power/PowerManagerService.java
+@@ -222,6 +222,12 @@ public final class PowerManagerService extends SystemService
+ // Persistent property for last reboot reason
+ private static final String LAST_REBOOT_PROPERTY = "persist.sys.boot.reason";
+
++ // Add button light timeout
++ private static final int BUTTON_ON_DURATION = 5 * 1000;
++
++ // File location for last reboot reason
++ private static final String LAST_REBOOT_LOCATION = "/data/misc/reboot/last_reboot_reason";
++
+ private final Context mContext;
+ private final ServiceThread mHandlerThread;
+ private final PowerManagerHandler mHandler;
+@@ -242,6 +248,7 @@ public final class PowerManagerService extends SystemService
+ private SettingsObserver mSettingsObserver;
+ private DreamManagerInternal mDreamManager;
+ private Light mAttentionLight;
++ private Light mButtonsLight;
+
+ private final Object mLock = LockGuard.installNewLock(LockGuard.INDEX_POWER);
+
+@@ -770,6 +777,7 @@ public final class PowerManagerService extends SystemService
+
+ mLightsManager = getLocalService(LightsManager.class);
+ mAttentionLight = mLightsManager.getLight(LightsManager.LIGHT_ID_ATTENTION);
++ mButtonsLight = mLightsManager.getLight(LightsManager.LIGHT_ID_BUTTONS);
+
+ // Initialize display power management.
+ mDisplayManagerInternal.initPowerManagement(
+@@ -1953,6 +1961,7 @@ public final class PowerManagerService extends SystemService
+ final long screenOffTimeout = getScreenOffTimeoutLocked(sleepTimeout);
+ final long screenDimDuration = getScreenDimDurationLocked(screenOffTimeout);
+ final boolean userInactiveOverride = mUserInactiveOverrideFromWindowManager;
++ final int screenBrightness = mScreenBrightnessSettingDefault;
+ final long nextProfileTimeout = getNextProfileTimeoutLocked(now);
+
+ mUserActivitySummary = 0;
+@@ -1960,6 +1969,12 @@ public final class PowerManagerService extends SystemService
+ nextTimeout = mLastUserActivityTime
+ + screenOffTimeout - screenDimDuration;
+ if (now < nextTimeout) {
++ if (now > mLastUserActivityTime + BUTTON_ON_DURATION) {
++ mButtonsLight.setBrightness(0);
++ } else {
++ mButtonsLight.setBrightness(screenBrightness);
++ nextTimeout = now + BUTTON_ON_DURATION;
++ }
+ mUserActivitySummary = USER_ACTIVITY_SCREEN_BRIGHT;
+ } else {
+ nextTimeout = mLastUserActivityTime + screenOffTimeout;
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0018-power-Disable-keyboard-button-lights-while-dozing-dr.patch b/patches/platform_frameworks_base/0018-power-Disable-keyboard-button-lights-while-dozing-dr.patch
new file mode 100644
index 0000000..7411c5f
--- /dev/null
+++ b/patches/platform_frameworks_base/0018-power-Disable-keyboard-button-lights-while-dozing-dr.patch
@@ -0,0 +1,31 @@
+From 70a48b3381acd2b8cf0ef090c188ae95635d5921 Mon Sep 17 00:00:00 2001
+From: Steve Kondik <steve@cyngn.com>
+Date: Sat, 3 Jan 2015 05:13:26 -0800
+Subject: [PATCH 18/19] power: Disable keyboard/button lights while
+ dozing/dreaming
+
+ * With hardkeys and doze mode enabled, entering suspend results in
+ an epic battle over the lights. It's a bad situation. Disable
+ them when we're sleepy.
+
+Change-Id: I7f1fc35a1573717d1ea101a07c4171d6f66d1553
+---
+ services/core/java/com/android/server/power/PowerManagerService.java | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
+index 9b8584e..0620f2e 100644
+--- a/services/core/java/com/android/server/power/PowerManagerService.java
++++ b/services/core/java/com/android/server/power/PowerManagerService.java
+@@ -1965,7 +1965,7 @@ public final class PowerManagerService extends SystemService
+ final long nextProfileTimeout = getNextProfileTimeoutLocked(now);
+
+ mUserActivitySummary = 0;
+- if (mLastUserActivityTime >= mLastWakeTime) {
++ if (mWakefulness == WAKEFULNESS_AWAKE && mLastUserActivityTime >= mLastWakeTime) {
+ nextTimeout = mLastUserActivityTime
+ + screenOffTimeout - screenDimDuration;
+ if (now < nextTimeout) {
+--
+2.7.4
+
diff --git a/patches/platform_frameworks_base/0019-It-is-okay-not-to-have-wifi-in-SystemUI-on-FDE-lock.patch b/patches/platform_frameworks_base/0019-It-is-okay-not-to-have-wifi-in-SystemUI-on-FDE-lock.patch
new file mode 100644
index 0000000..aab3dbc
--- /dev/null
+++ b/patches/platform_frameworks_base/0019-It-is-okay-not-to-have-wifi-in-SystemUI-on-FDE-lock.patch
@@ -0,0 +1,54 @@
+From bfa2cabcbae2e6b67acda5fad79e98104f66b915 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 19/19] It is okay not to have wifi in SystemUI (on FDE lock)
+
+---
+ .../SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java | 2 +-
+ .../com/android/systemui/statusbar/policy/HotspotControllerImpl.java | 1 +
+ .../com/android/systemui/statusbar/policy/WifiSignalController.java | 4 +++-
+ 3 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+index d8f0886..76cd70d 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.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 d6d0673..07db5f8 100644
+--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
++++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
+@@ -113,6 +113,7 @@ public class HotspotControllerImpl implements HotspotController, WifiManager.Sof
+ */
+ private void updateWifiStateListeners(boolean shouldListen) {
+ mWifiStateReceiver.setListening(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 e5e576d..78b3050 100644
+--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
++++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
+@@ -59,7 +59,9 @@ public class WifiSignalController extends
+ mHasMobileData = hasMobileData;
+ Handler handler = new WifiHandler(Looper.getMainLooper());
+ mWifiChannel = new AsyncChannel();
+- Messenger wifiMessenger = wifiManager.getWifiServiceMessenger();
++ Messenger wifiMessenger = null;
++ if(wifiManager != null)
++ wifiMessenger = wifiManager.getWifiServiceMessenger();
+ if (wifiMessenger != null) {
+ mWifiChannel.connect(context, handler, wifiMessenger);
+ }
+--
+2.7.4
+