Initial commit for Android 10, syncing up to v201
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
From 9f8c77fea17968dd20e76b83b28f2fce2630a087 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/36] Fix backlight control on Galaxy S9(+)
|
||||
|
||||
Change-Id: I1fbbb47939c377597ef8ad6b88b2acea5f4acaa6
|
||||
---
|
||||
.../android/server/lights/LightsService.java | 17 +++++++++++++----
|
||||
1 file changed, 13 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index ac906bb23d3..e23e2cd3c4d 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.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.Message;
|
||||
import android.os.PowerManager;
|
||||
+import android.os.SystemProperties;
|
||||
import android.os.Trace;
|
||||
import android.provider.Settings;
|
||||
import android.util.Slog;
|
||||
@@ -71,6 +72,7 @@ public class LightsService extends SystemService {
|
||||
": brightness=0x" + Integer.toHexString(brightness));
|
||||
return;
|
||||
}
|
||||
+
|
||||
// Ideally, we'd like to set the brightness mode through the SF/HWC as well, but
|
||||
// right now we just fall back to the old path through Lights brightessMode is
|
||||
// anything but USER or the device shouldBeInLowPersistenceMode().
|
||||
@@ -86,11 +88,18 @@ public class LightsService extends SystemService {
|
||||
}
|
||||
SurfaceControl.setDisplayBrightness(mDisplayToken,
|
||||
(float) brightness / mSurfaceControlMaximumBrightness);
|
||||
- } else {
|
||||
- int color = brightness & 0x000000ff;
|
||||
- color = 0xff000000 | (color << 16) | (color << 8) | color;
|
||||
- setLightLocked(color, LIGHT_FLASH_NONE, 0, 0, brightnessMode);
|
||||
+ 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.17.1
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From ae073ba9abbd86e82d06261ad260ea27fbc04f14 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] 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
|
||||
---
|
||||
.../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 72f40cc0351..20ffd687e89 100644
|
||||
--- a/services/core/java/com/android/server/StorageManagerService.java
|
||||
+++ b/services/core/java/com/android/server/StorageManagerService.java
|
||||
@@ -1282,7 +1282,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;
|
||||
} else if (vol.disk.isSd()) {
|
||||
vol.mountFlags |= VolumeInfo.MOUNT_FLAG_VISIBLE;
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
From 78dcdf304f0baa325fe8d39e2e7cb64b46b9a089 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/36] 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 2b471fec9c8..4518c7e66a5 100644
|
||||
--- a/core/jni/android_util_AssetManager.cpp
|
||||
+++ b/core/jni/android_util_AssetManager.cpp
|
||||
@@ -163,7 +163,7 @@ static void NativeVerifySystemIdmaps(JNIEnv* /*env*/, jclass /*clazz*/) {
|
||||
}
|
||||
|
||||
// Generic idmap parameters
|
||||
- const char* argv[10];
|
||||
+ const char* argv[11];
|
||||
int argc = 0;
|
||||
struct stat st;
|
||||
|
||||
@@ -207,6 +207,10 @@ static void NativeVerifySystemIdmaps(JNIEnv* /*env*/, jclass /*clazz*/) {
|
||||
argv[argc++] = AssetManager::OEM_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 fa5f931470b..488c2f8e9e8 100644
|
||||
--- a/core/jni/fd_utils.cpp
|
||||
+++ b/core/jni/fd_utils.cpp
|
||||
@@ -118,7 +118,8 @@ bool FileDescriptorWhitelist::IsAllowed(const std::string& path) const {
|
||||
|| android::base::StartsWith(path, kSystemOdmOverlayDir)
|
||||
|| android::base::StartsWith(path, kOdmOverlayDir)
|
||||
|| android::base::StartsWith(path, kSystemOemOverlayDir)
|
||||
- || android::base::StartsWith(path, kOemOverlayDir))
|
||||
+ || android::base::StartsWith(path, kOemOverlayDir)
|
||||
+ || android::base::StartsWith(path, "/system/overlay"))
|
||||
&& android::base::EndsWith(path, kApkSuffix)
|
||||
&& path.find("/../") == std::string::npos) {
|
||||
return true;
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From e1a57d1f38bb45e69c9a2178ab34fd08adafe810 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/36] 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 2ed6c77baa0..c574a03c9a3 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.17.1
|
||||
|
||||
28
patches/platform_frameworks_base/0005-Fix-62.patch
Normal file
28
patches/platform_frameworks_base/0005-Fix-62.patch
Normal file
@@ -0,0 +1,28 @@
|
||||
From c318f6086d6c12bb92de652440ee985256fd60c2 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/36] Fix(?) #62
|
||||
|
||||
---
|
||||
.../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 6a4dbc8d722..39535c32860 100644
|
||||
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
|
||||
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
|
||||
@@ -1117,7 +1117,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.17.1
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
From 6556ccbc704c6cb4a3bae5e9411082f6e1e1ff71 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/36] S9 brightness override only for screen
|
||||
|
||||
Change-Id: Ie16a46336fa64850014b962429f7a20ff569222f
|
||||
---
|
||||
.../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 e23e2cd3c4d..327979166c2 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -91,11 +91,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.17.1
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
From 21d4fc3b58aa737f78378c0df4987604bf4e32e0 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/36] [WIP] 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 327979166c2..f0035c67f4a 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -97,6 +97,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.17.1
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From 7235d15f8ba322a1806a8736751cac88cecb9b53 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/36] Try to make brightness more generic using property set
|
||||
by rw-system
|
||||
|
||||
---
|
||||
.../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 f0035c67f4a..529026a1e7c 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -100,9 +100,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.17.1
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
From 5d557f64f712c73d97669f10532b5a2867c6f1d3 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/36] 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 d69dd79555a..2be6d23ac78 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.17.1
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From a95da9d8c3508280233a42dcbfc6440fbc95c563 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/36] 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 2be6d23ac78..0acff23d031 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.17.1
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From 695e8613f1bcee3f03269eb7f28ed9a91b41e2ad 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/36] Add Qualcomm starlte
|
||||
|
||||
---
|
||||
.../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 529026a1e7c..65f9ea87ae5 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -93,7 +93,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.17.1
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From f1176c850abc148002e5986db5ccecac116b91c9 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/36] [Galaxy S9] "remaining" of HAL onEnroll is actually a
|
||||
percent of progress
|
||||
|
||||
Change-Id: I8a586163eca93ae3c5bd968d1e7ddbf994ddcc91
|
||||
---
|
||||
.../server/biometrics/fingerprint/FingerprintService.java | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
index 24fd1b7a6da..dc56a95217c 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
@@ -588,7 +588,13 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
final Fingerprint fingerprint =
|
||||
new Fingerprint(getBiometricUtils().getUniqueName(getContext(), groupId),
|
||||
groupId, fingerId, deviceId);
|
||||
- FingerprintService.super.handleEnrollResult(fingerprint, 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;
|
||||
+
|
||||
+ FingerprintService.super.handleEnrollResult(fingerprint, remaining2);
|
||||
});
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From ca9cc0e485753ac43ea8fba76638b00495669f39 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/36] 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 19f8203f750..4e0fcbb7358 100755
|
||||
--- a/telephony/java/android/telephony/CarrierConfigManager.java
|
||||
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
|
||||
@@ -3073,7 +3073,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_SUPPORT_EMERGENCY_SMS_OVER_IMS_BOOL, false);
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
From 1597769b8c2d3faabd76ba20368409293709a2d5 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 14/36] 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 0acff23d031..d1dde52732f 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.17.1
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From 807d3807f81b4893cd5186c60cfcf94920281a41 Mon Sep 17 00:00:00 2001
|
||||
From: Steve Kondik <steve@cyngn.com>
|
||||
Date: Sat, 3 Jan 2015 05:13:26 -0800
|
||||
Subject: [PATCH 16/36] 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
|
||||
---
|
||||
.../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 5cccc77ac53..e7d5315a2b9 100644
|
||||
--- a/services/core/java/com/android/server/power/PowerManagerService.java
|
||||
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
|
||||
@@ -2040,7 +2040,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.17.1
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
From d7a6847541ff67793487d581067ca724b3144c60 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] Don't wake IR HAL to the infinity and beyond
|
||||
|
||||
---
|
||||
.../core/java/com/android/server/ConsumerIrService.java | 7 -------
|
||||
services/core/jni/com_android_server_ConsumerIrService.cpp | 2 +-
|
||||
2 files changed, 1 insertion(+), 8 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/ConsumerIrService.java b/services/core/java/com/android/server/ConsumerIrService.java
|
||||
index 2ed6c77baa0..82ec033bc30 100644
|
||||
--- a/services/core/java/com/android/server/ConsumerIrService.java
|
||||
+++ b/services/core/java/com/android/server/ConsumerIrService.java
|
||||
@@ -46,13 +46,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!");
|
||||
- }
|
||||
- } else if (mHasNativeHal) {
|
||||
- throw new RuntimeException("IR HAL present, but FEATURE_CONSUMER_IR is not set!");
|
||||
- }
|
||||
}
|
||||
|
||||
@Override
|
||||
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.17.1
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
From 410c6135bef8bc83e49b182f7d3408c46ca47584 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 18/36] 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 65f9ea87ae5..aa014bf9ff4 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -93,9 +93,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.17.1
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From 378df1aac9a2b439e20dcc60d216f8c15974fdca 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 19/36] 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 aa014bf9ff4..a18ae0d6159 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -94,7 +94,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.17.1
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
From 6c3996a1e42192a481ac029932fc1c4eade50488 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 20/36] Add a property to override pre-o max aspect ratio
|
||||
|
||||
Change-Id: Id001a19fab7680feda841202b6e91c490d0d5ffa
|
||||
---
|
||||
.../core/java/com/android/server/wm/ActivityRecord.java | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||
index 371a9435643..5b61f215f3f 100644
|
||||
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||
@@ -2837,6 +2837,12 @@ final class ActivityRecord extends ConfigurationContainer {
|
||||
// TODO(b/36505427): Consider moving this method and similar ones to ConfigurationContainer.
|
||||
private void updateOverrideConfiguration() {
|
||||
final Configuration overrideConfig = mTmpConfig;
|
||||
+ 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);
|
||||
+ }
|
||||
if (shouldUseSizeCompatMode()) {
|
||||
if (mCompatDisplayInsets != null) {
|
||||
// The override configuration is set only once in size compatibility mode.
|
||||
@@ -3070,7 +3076,7 @@ final class ActivityRecord extends ConfigurationContainer {
|
||||
// TODO(b/36505427): Consider moving this method and similar ones to ConfigurationContainer.
|
||||
private void computeBounds(Rect outBounds, Rect containingAppBounds) {
|
||||
outBounds.setEmpty();
|
||||
- final float maxAspectRatio = info.maxAspectRatio;
|
||||
+ float maxAspectRatio = info.maxAspectRatio;
|
||||
final ActivityStack stack = getActivityStack();
|
||||
final float minAspectRatio = info.minAspectRatio;
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
||||
26
patches/platform_frameworks_base/0021-Add-japanese-S9.patch
Normal file
26
patches/platform_frameworks_base/0021-Add-japanese-S9.patch
Normal file
@@ -0,0 +1,26 @@
|
||||
From 05ed3ef7fba2ae7fc012ca296c60af4238c91550 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 21/36] 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 a18ae0d6159..37e03880f1e 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -93,7 +93,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.17.1
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
From 089eae49049ea602363949e8593acfd5447530c6 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 22/36] 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 6c34e1313f7..337b22c3587 100644
|
||||
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
|
||||
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
|
||||
@@ -725,6 +725,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()) {
|
||||
@@ -732,9 +735,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
||||
return;
|
||||
}
|
||||
|
||||
- mUsageStats = LocalServices.getService(UsageStatsManagerInternal.class);
|
||||
- mNetworkStats = LocalServices.getService(NetworkStatsManagerInternal.class);
|
||||
-
|
||||
synchronized (mUidRulesFirstLock) {
|
||||
synchronized (mNetworkPoliciesSecondLock) {
|
||||
updatePowerSaveWhitelistUL();
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From 1fa1945234225aa9d6201a7da2990fd17b544dc7 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 23/36] 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 37e03880f1e..993483c342b 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -93,6 +93,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.17.1
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
From 8049bd5138e52042ed47b8b0700753cb77b57641 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 24 Mar 2019 23:05:14 +0100
|
||||
Subject: [PATCH] Support new samsung light hal
|
||||
|
||||
Change-Id: I88ca834894320129737b4e31fa8f7e5ee918889a
|
||||
---
|
||||
services/core/jni/Android.bp | 1 +
|
||||
...om_android_server_lights_LightsService.cpp | 19 +++++++++++++++++++
|
||||
2 files changed, 20 insertions(+)
|
||||
|
||||
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
|
||||
index fdcefd42316..d8645012e24 100644
|
||||
--- a/services/core/jni/Android.bp
|
||||
+++ b/services/core/jni/Android.bp
|
||||
@@ -135,6 +135,7 @@ cc_defaults {
|
||||
"android.system.suspend@1.0",
|
||||
"suspend_control_aidl_interface-cpp",
|
||||
"vendor.lineage.power@1.0",
|
||||
+ "vendor.samsung.hardware.light@2.0",
|
||||
],
|
||||
|
||||
static_libs: [
|
||||
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
index 35d8219651d..20de7985d1d 100644
|
||||
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
@@ -23,6 +23,8 @@
|
||||
|
||||
#include <android/hardware/light/2.0/ILight.h>
|
||||
#include <android/hardware/light/2.0/types.h>
|
||||
+#include <vendor/samsung/hardware/light/2.0/ISecLight.h>
|
||||
+#include <vendor/samsung/hardware/light/2.0/types.h>
|
||||
#include <android-base/chrono_utils.h>
|
||||
#include <utils/misc.h>
|
||||
#include <utils/Log.h>
|
||||
@@ -40,6 +42,8 @@ using Type = ::android::hardware::light::V2_0::Type;
|
||||
template<typename T>
|
||||
using Return = ::android::hardware::Return<T>;
|
||||
|
||||
+using ISecLight = ::vendor::samsung::hardware::light::V2_0::ISecLight;
|
||||
+using SecType = ::vendor::samsung::hardware::light::V2_0::SecType;
|
||||
static bool sLightSupported = true;
|
||||
|
||||
static bool validate(jint light, jint flash, jint brightness) {
|
||||
@@ -151,6 +155,21 @@ static void setLight_native(
|
||||
colorAlpha = (colorAlpha * brightnessLevel) / 0xFF;
|
||||
colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
|
||||
}
|
||||
+
|
||||
+ sp<ISecLight> secHal = ISecLight::getService();
|
||||
+
|
||||
+ if(secHal != nullptr) {
|
||||
+ SecType type = static_cast<SecType>(light);
|
||||
+ LightState state = constructState(
|
||||
+ colorARGB, flashMode, onMS, offMS, brightnessMode);
|
||||
+
|
||||
+ {
|
||||
+ android::base::Timer t;
|
||||
+ Return<Status> ret = secHal->setLightSec(type, state);
|
||||
+ processReturn(ret, static_cast<Type>(light), state);
|
||||
+ if (t.duration() > 50ms) ALOGD("Excessive delay setting light");
|
||||
+ }
|
||||
+ }
|
||||
|
||||
Type type = static_cast<Type>(light);
|
||||
LightState state = constructState(
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
From 454a0898504d1af98f687ebdbc8bc7b13a3d3ff5 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 24 Apr 2019 20:09:53 +0200
|
||||
Subject: [PATCH 25/36] Fix backlight on S10*. Add an additional property to
|
||||
check, so testers can try it more easily
|
||||
|
||||
---
|
||||
.../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 993483c342b..a578ed894c4 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -102,7 +102,9 @@ public class LightsService extends SystemService {
|
||||
return;
|
||||
}
|
||||
|
||||
- if(fp.matches(".*(crown|star)[q2]*lte.*") ||
|
||||
+ if(SystemProperties.getInt("persist.sys.phh.samsung_backlight", 0) == 1 ||
|
||||
+ fp.matches(".*beyond.*lte.*") ||
|
||||
+ 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)) {
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From 571bf63da97814631982b28b41f96781a13848a8 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 2 Jul 2019 21:15:07 +0200
|
||||
Subject: [PATCH 26/36] Make samsung light HAL more overridable
|
||||
|
||||
---
|
||||
.../android/server/lights/LightsService.java | 24 ++++++++++++-------
|
||||
1 file changed, 15 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index a578ed894c4..ac102c94770 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -102,16 +102,22 @@ public class LightsService extends SystemService {
|
||||
return;
|
||||
}
|
||||
|
||||
- if(SystemProperties.getInt("persist.sys.phh.samsung_backlight", 0) == 1 ||
|
||||
- fp.matches(".*beyond.*lte.*") ||
|
||||
- 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);
|
||||
+ int useSamsungBacklight = SystemProperties.getInt("persist.sys.phh.samsung_backlight", -1);
|
||||
+ if(useSamsungBacklight != 0) {
|
||||
+ if(useSamsungBacklight > 0 ||
|
||||
+ fp.matches(".*beyond.*lte.*") ||
|
||||
+ fp.matches(".*(crown|star)[q2]*lte.*") ||
|
||||
+ fp.matches(".*(SC-0[23]K|SCV3[89]).*")) {
|
||||
+ int ratio = 100;
|
||||
+ if(useSamsungBacklight > 1)
|
||||
+ ratio = useSamsungBacklight;
|
||||
+ int newBrightness = brightness * ratio;
|
||||
+ 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;
|
||||
}
|
||||
- setLightLocked(newBrightness, LIGHT_FLASH_HARDWARE, 0, 0, brightnessMode);
|
||||
- return;
|
||||
}
|
||||
|
||||
boolean qcomExtendBrightness = SystemProperties.getBoolean("persist.extend.brightness", false);
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From d02ed45de2a9ad381a735ae0649f61dbca1f1d41 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 2 Jul 2019 21:19:29 +0200
|
||||
Subject: [PATCH 27/36] Make Samsung fingerprint broken HAL overridable
|
||||
|
||||
Change-Id: I8be38daa7c80fdb61e9209f12215e6daea171d03
|
||||
---
|
||||
.../server/biometrics/fingerprint/FingerprintService.java | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
index dc56a95217c..19593e7e047 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
@@ -590,8 +590,10 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
groupId, fingerId, deviceId);
|
||||
|
||||
int remaining2 = remaining;
|
||||
+ int overrideSamsung = android.os.SystemProperties.getInt("persist.sys.phh.samsung_fingerprint", -1);
|
||||
+
|
||||
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(overrideSamsung == 1 || (overrideSamsung != 0 && fp != null && fp.startsWith("samsung/")))
|
||||
remaining2 = 100 - remaining2;
|
||||
|
||||
FingerprintService.super.handleEnrollResult(fingerprint, remaining2);
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
From 677389d4f112ca9368d55e1eb661727e5974eeb1 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 11 Aug 2019 10:30:37 +0200
|
||||
Subject: [PATCH 29/36] Add property to use linear brightness slider
|
||||
|
||||
---
|
||||
.../com/android/settingslib/display/BrightnessUtils.java | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java b/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java
|
||||
index 55723f9d8ed..da8ce4a67e9 100644
|
||||
--- a/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java
|
||||
+++ b/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java
|
||||
@@ -50,7 +50,12 @@ public class BrightnessUtils {
|
||||
* @param max The maximum acceptable value for the setting.
|
||||
* @return The corresponding setting value.
|
||||
*/
|
||||
+ private static final boolean useLinearBrightness = android.os.SystemProperties.getBoolean("persist.sys.phh.linear_brightness", false);
|
||||
public static final int convertGammaToLinear(int val, int min, int max) {
|
||||
+ if(useLinearBrightness) {
|
||||
+ if(val < 4) return 1;
|
||||
+ return val/4;
|
||||
+ }
|
||||
final float normalizedVal = MathUtils.norm(0, GAMMA_SPACE_MAX, val);
|
||||
final float ret;
|
||||
if (normalizedVal <= R) {
|
||||
@@ -87,6 +92,7 @@ public class BrightnessUtils {
|
||||
* @return The corresponding slider value
|
||||
*/
|
||||
public static final int convertLinearToGamma(int val, int min, int max) {
|
||||
+ if(useLinearBrightness) return val*4;
|
||||
// For some reason, HLG normalizes to the range [0, 12] rather than [0, 1]
|
||||
final float normalizedVal = MathUtils.norm(min, max, val) * 12;
|
||||
final float ret;
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
From f93124e38386cc549fa02126c776098923f73ed7 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 12 Aug 2019 23:08:26 +0200
|
||||
Subject: [PATCH 30/36] Add support for samsung touch proximity sensor as
|
||||
fallback to real proximity sensor
|
||||
|
||||
---
|
||||
.../server/display/DisplayPowerController.java | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
index fb381c33cbc..a262c86b7c7 100644
|
||||
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
@@ -529,6 +529,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
if (!DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) {
|
||||
mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
|
||||
+ if(mProximitySensor == null) {
|
||||
+ List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
|
||||
+ for(Sensor sensor: sensors) {
|
||||
+ if("com.samsung.sensor.touch_proximity".equals(sensor.getStringType()))
|
||||
+ mProximitySensor = sensor;
|
||||
+ }
|
||||
+ }
|
||||
if (mProximitySensor != null) {
|
||||
mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
|
||||
TYPICAL_PROXIMITY_THRESHOLD);
|
||||
@@ -1944,6 +1951,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
public void onSensorChanged(SensorEvent event) {
|
||||
if (mProximitySensorEnabled) {
|
||||
final long time = SystemClock.uptimeMillis();
|
||||
+ if("com.samsung.sensor.touch_proximity".equals(mProximitySensor.getStringType())) {
|
||||
+ int v = (int)event.values[0];
|
||||
+ boolean positive = (v <= 4);
|
||||
+ android.util.Log.d("PHH", "Samsung sensor changed " + positive + ":" + v);
|
||||
+ handleProximitySensorEvent(time, positive);
|
||||
+ return;
|
||||
+ }
|
||||
final float distance = event.values[0];
|
||||
boolean positive = distance >= 0.0f && distance < mProximityThreshold;
|
||||
handleProximitySensorEvent(time, positive);
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From f852fefd22c754345767a7c3d3024f4f93791a3d Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 14 Aug 2019 08:50:47 +0200
|
||||
Subject: [PATCH 31/36] Use Samsung power HAL
|
||||
|
||||
Samsung likes to have two android.hardware.power@1.0 implementation
|
||||
side-by-side, one that works, one that doesn't.
|
||||
Pick the one that works.
|
||||
---
|
||||
.../core/jni/com_android_server_power_PowerManagerService.cpp | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/jni/com_android_server_power_PowerManagerService.cpp b/services/core/jni/com_android_server_power_PowerManagerService.cpp
|
||||
index 73bb579bd27..a211eef3d24 100644
|
||||
--- a/services/core/jni/com_android_server_power_PowerManagerService.cpp
|
||||
+++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp
|
||||
@@ -92,7 +92,9 @@ static bool checkAndClearExceptionFromCallback(JNIEnv* env, const char* methodNa
|
||||
// The caller must be holding gPowerHalMutex.
|
||||
static void connectPowerHalLocked() {
|
||||
if (gPowerHalExists && gPowerHalV1_0_ == nullptr) {
|
||||
- gPowerHalV1_0_ = IPowerV1_0::getService();
|
||||
+ gPowerHalV1_0_ = IPowerV1_0::getService("miscpower");
|
||||
+ if(gPowerHalV1_0_ == nullptr)
|
||||
+ gPowerHalV1_0_ = IPowerV1_0::getService();
|
||||
if (gPowerHalV1_0_ != nullptr) {
|
||||
ALOGI("Loaded power HAL 1.0 service");
|
||||
// Try cast to powerHAL V1_1
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From 32ce2b67710daf2e8b81f99a3660210f96d04f3a Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 14 Aug 2019 23:36:45 +0200
|
||||
Subject: [PATCH 32/36] Also add com.samsung.sensor.physical_proximity (if
|
||||
available, it is more a true proximity sensor than touch proximity sensor)
|
||||
|
||||
---
|
||||
.../com/android/server/display/DisplayPowerController.java | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
index a262c86b7c7..7c38f62b256 100644
|
||||
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
@@ -529,6 +529,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
if (!DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) {
|
||||
mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
|
||||
+ if(mProximitySensor == null) {
|
||||
+ List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
|
||||
+ for(Sensor sensor: sensors) {
|
||||
+ if("com.samsung.sensor.physical_proximity".equals(sensor.getStringType()))
|
||||
+ mProximitySensor = sensor;
|
||||
+ }
|
||||
+ }
|
||||
if(mProximitySensor == null) {
|
||||
List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
|
||||
for(Sensor sensor: sensors) {
|
||||
--
|
||||
2.17.1
|
||||
|
||||
413
patches/platform_frameworks_base/0033-wip.patch
Normal file
413
patches/platform_frameworks_base/0033-wip.patch
Normal file
@@ -0,0 +1,413 @@
|
||||
From b15c825ccb48260a85695db41aff138787d1817f Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 24 Mar 2019 22:48:39 +0100
|
||||
Subject: [PATCH] wip
|
||||
|
||||
Change-Id: I50fa9a7a670cef5b93fc4a3a027f1587b1214831
|
||||
---
|
||||
Android.bp | 2 +
|
||||
services/core/Android.bp | 1 +
|
||||
.../biometrics/fingerprint/FacolaView.java | 210 ++++++++++++++++++
|
||||
.../fingerprint/FingerprintService.java | 26 ++-
|
||||
.../testharness/TestHarnessModeService.java | 7 +-
|
||||
.../com/android/server/wm/ActivityRecord.java | 6 -
|
||||
...om_android_server_lights_LightsService.cpp | 15 +-
|
||||
7 files changed, 255 insertions(+), 12 deletions(-)
|
||||
create mode 100644 services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
|
||||
diff --git a/Android.bp b/Android.bp
|
||||
index 16abdbf79de..d01dc639c8f 100644
|
||||
--- a/Android.bp
|
||||
+++ b/Android.bp
|
||||
@@ -777,6 +777,8 @@ java_defaults {
|
||||
"android.hardware.vibrator-V1.2-java",
|
||||
"android.hardware.vibrator-V1.3-java",
|
||||
"android.hardware.wifi-V1.0-java-constants",
|
||||
+ "vendor.mediatek.hardware.radio-V2.0-java",
|
||||
+ "vendor.samsung.hardware.radio-V1.2-java",
|
||||
"devicepolicyprotosnano",
|
||||
],
|
||||
|
||||
diff --git a/services/core/Android.bp b/services/core/Android.bp
|
||||
index ee26710cf7b..2e7118da1c0 100644
|
||||
--- a/services/core/Android.bp
|
||||
+++ b/services/core/Android.bp
|
||||
@@ -55,6 +55,7 @@ java_library_static {
|
||||
"dnsresolver_aidl_interface-V2-java",
|
||||
"netd_aidl_interface-V2-java",
|
||||
"netd_event_listener_interface-java",
|
||||
+ "vendor.xiaomi.hardware.fingerprintextension-V1.0-java",
|
||||
],
|
||||
}
|
||||
|
||||
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
new file mode 100644
|
||||
index 00000000000..8829bcb7e48
|
||||
--- /dev/null
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -0,0 +1,210 @@
|
||||
+/**
|
||||
+ * Copyright (C) 2019 The Android Open Source Project
|
||||
+ *
|
||||
+ * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+ * you may not use this file except in compliance with the License.
|
||||
+ * You may obtain a copy of the License at
|
||||
+ *
|
||||
+ * http://www.apache.org/licenses/LICENSE-2.0
|
||||
+ *
|
||||
+ * Unless required by applicable law or agreed to in writing, software
|
||||
+ * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+ * See the License for the specific language governing permissions and
|
||||
+ * limitations under the License.
|
||||
+ */
|
||||
+
|
||||
+package com.android.server.biometrics.fingerprint;
|
||||
+
|
||||
+import android.graphics.Canvas;
|
||||
+import android.graphics.Color;
|
||||
+import android.graphics.Paint;
|
||||
+import android.content.Context;
|
||||
+import android.view.View.OnTouchListener;
|
||||
+import android.view.View;
|
||||
+import android.widget.ImageView;
|
||||
+import android.view.MotionEvent;
|
||||
+import android.util.Slog;
|
||||
+
|
||||
+import android.view.WindowManager;
|
||||
+import android.graphics.PixelFormat;
|
||||
+import android.view.Gravity;
|
||||
+
|
||||
+import java.io.PrintWriter;
|
||||
+
|
||||
+import vendor.xiaomi.hardware.fingerprintextension.V1_0.IXiaomiFingerprint;
|
||||
+
|
||||
+import android.os.Handler;
|
||||
+import android.os.HandlerThread;
|
||||
+import android.os.ServiceManager;
|
||||
+
|
||||
+public class FacolaView extends ImageView implements OnTouchListener {
|
||||
+ private final int mX, mY, mW, mH;
|
||||
+ private final Paint mPaintFingerprint = new Paint();
|
||||
+ private final Paint mPaintShow = new Paint();
|
||||
+ private IXiaomiFingerprint mXiaomiFingerprint = null;
|
||||
+ private boolean mInsideCircle = false;
|
||||
+ private final WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
|
||||
+
|
||||
+ private final static float UNTOUCHED_DIM = .1f;
|
||||
+ private final static float TOUCHED_DIM = .9f;
|
||||
+
|
||||
+ private final HandlerThread mHandlerThread;
|
||||
+ private final Handler mHandler;
|
||||
+
|
||||
+ private final WindowManager mWM;
|
||||
+ FacolaView(Context context) {
|
||||
+ super(context);
|
||||
+
|
||||
+ mHandlerThread = new HandlerThread("FacolaThread");
|
||||
+ mHandlerThread.start();
|
||||
+ mHandler = new Handler(mHandlerThread.getLooper());
|
||||
+
|
||||
+ String[] location = android.os.SystemProperties.get("persist.vendor.sys.fp.fod.location.X_Y", "").split(",");
|
||||
+ String[] size = android.os.SystemProperties.get("persist.vendor.sys.fp.fod.size.width_height", "").split(",");
|
||||
+ Slog.d("PHH-Enroll", "FacolaView hello");
|
||||
+ if(size.length == 2 && location.length == 2) {
|
||||
+ Slog.d("PHH-Enroll", "Got real values");
|
||||
+ mX = Integer.parseInt(location[0]);
|
||||
+ mY = Integer.parseInt(location[1]);
|
||||
+ mW = Integer.parseInt(size[0]);
|
||||
+ mH = Integer.parseInt(size[1]);
|
||||
+ } else {
|
||||
+ mX = -1;
|
||||
+ mY = -1;
|
||||
+ mW = -1;
|
||||
+ mH = -1;
|
||||
+ }
|
||||
+
|
||||
+ mPaintFingerprint.setAntiAlias(true);
|
||||
+ mPaintFingerprint.setColor(Color.GREEN);
|
||||
+
|
||||
+ mPaintShow.setAntiAlias(true);
|
||||
+ mPaintShow.setColor(Color.argb(0x18, 0x00, 0xff, 0x00));
|
||||
+ setOnTouchListener(this);
|
||||
+ mWM = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
|
||||
+ Slog.d("PHH-Enroll", "Created facola...");
|
||||
+ try {
|
||||
+ if(mW != -1)
|
||||
+ mXiaomiFingerprint = IXiaomiFingerprint.getService();
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH-Enroll", "Failed getting xiaomi fingerprint service", e);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ protected void onDraw(Canvas canvas) {
|
||||
+ super.onDraw(canvas);
|
||||
+
|
||||
+ Slog.d("PHH-Enroll", "Drawing at " + mX + ", " + mY + ", " + mW + ", " + mH);
|
||||
+ //TODO w!=h?
|
||||
+ if(mInsideCircle) {
|
||||
+ try {
|
||||
+ int nitValue = 3;
|
||||
+ if(mXiaomiFingerprint != null)
|
||||
+ mXiaomiFingerprint.extCmd(0xa, nitValue);
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
|
||||
+ }
|
||||
+
|
||||
+ canvas.drawCircle(mW/2, mH/2, (float) (mW/2.0f), this.mPaintFingerprint);
|
||||
+ } else {
|
||||
+ try {
|
||||
+ if(mXiaomiFingerprint != null)
|
||||
+ mXiaomiFingerprint.extCmd(0xa, 0);
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
|
||||
+ }
|
||||
+ canvas.drawCircle(mW/2, mH/2, (float) (mW/2.0f), this.mPaintShow);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onTouch(View v, MotionEvent event) {
|
||||
+ float x = event.getAxisValue(MotionEvent.AXIS_X);
|
||||
+ float y = event.getAxisValue(MotionEvent.AXIS_Y);
|
||||
+
|
||||
+ boolean newInside = (x > 0 && x < mW) && (y > 0 && y < mW);
|
||||
+ if(event.getAction() == MotionEvent.ACTION_UP)
|
||||
+ newInside = false;
|
||||
+
|
||||
+ Slog.d("PHH-Enroll", "Got action " + event.getAction() + ", x = " + x + ", y = " + y + ", inside = " + mInsideCircle + "/" + newInside);
|
||||
+ if(newInside == mInsideCircle) return mInsideCircle;
|
||||
+ mInsideCircle = newInside;
|
||||
+
|
||||
+ invalidate();
|
||||
+
|
||||
+ if(!mInsideCircle) {
|
||||
+ mParams.screenBrightness = .0f;
|
||||
+ mParams.dimAmount = UNTOUCHED_DIM;
|
||||
+ mWM.updateViewLayout(this, mParams);
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ mParams.dimAmount = TOUCHED_DIM;
|
||||
+ mParams.screenBrightness = 1.0f;
|
||||
+ mWM.updateViewLayout(this, mParams);
|
||||
+
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ public void show() {
|
||||
+ Slog.d("PHH-Enroll", "Show", new Exception());
|
||||
+ if(mX == -1 || mY == -1 || mW == -1 || mH == -1) return;
|
||||
+
|
||||
+ try {
|
||||
+ PrintWriter writer = new PrintWriter("/sys/devices/virtual/touch/tp_dev/fod_status", "UTF-8");
|
||||
+ writer.println("1");
|
||||
+ writer.close();
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH-Enroll", "Failed setting fod status for touchscreen");
|
||||
+ }
|
||||
+
|
||||
+ mParams.x = mX;
|
||||
+ mParams.y = mY;
|
||||
+
|
||||
+ mParams.height = mW;
|
||||
+ mParams.width = mH;
|
||||
+ mParams.format = PixelFormat.TRANSLUCENT;
|
||||
+
|
||||
+ mParams.type = WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY;
|
||||
+ mParams.setTitle("Fingerprint on display");
|
||||
+ mParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
|
||||
+ WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH |
|
||||
+ WindowManager.LayoutParams.FLAG_DIM_BEHIND |
|
||||
+ WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
|
||||
+ mParams.dimAmount = UNTOUCHED_DIM;
|
||||
+
|
||||
+ mParams.packageName = "android";
|
||||
+
|
||||
+ mParams.gravity = Gravity.TOP | Gravity.LEFT;
|
||||
+ mHandler.post( () -> {
|
||||
+ mWM.addView(this, mParams);
|
||||
+ });
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ public void hide() {
|
||||
+ Slog.d("PHH-Enroll", "Hide", new Exception());
|
||||
+ if(mX == -1 || mY == -1 || mW == -1 || mH == -1) return;
|
||||
+
|
||||
+ try {
|
||||
+ if(mXiaomiFingerprint != null)
|
||||
+ mXiaomiFingerprint.extCmd(0xa, 0);
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
|
||||
+ }
|
||||
+ try {
|
||||
+ PrintWriter writer = new PrintWriter("/sys/devices/virtual/touch/tp_dev/fod_status", "UTF-8");
|
||||
+ writer.println("0");
|
||||
+ writer.close();
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH-Enroll", "Failed setting fod status for touchscreen");
|
||||
+ }
|
||||
+
|
||||
+ Slog.d("PHH-Enroll", "Removed facola");
|
||||
+ mHandler.post( () -> {
|
||||
+ mWM.removeView(this);
|
||||
+ });
|
||||
+ }
|
||||
+}
|
||||
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
index 19593e7e047..c7de87126e8 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
@@ -120,8 +120,10 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
}
|
||||
}
|
||||
}
|
||||
+ private FacolaView mFacola;
|
||||
|
||||
private final class FingerprintAuthClient extends AuthenticationClientImpl {
|
||||
+
|
||||
@Override
|
||||
protected boolean isFingerprint() {
|
||||
return true;
|
||||
@@ -170,6 +172,26 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
|
||||
return super.handleFailedAttempt();
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onAcquired(int acquiredInfo, int vendorCode) {
|
||||
+ boolean result = super.onAcquired(acquiredInfo, vendorCode);
|
||||
+ android.util.Log.d("PHH-Enroll", "acquired ret " + result);
|
||||
+ if(result) mFacola.hide();
|
||||
+ return result;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int start() {
|
||||
+ mFacola.show();
|
||||
+ return super.start();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int stop(boolean initiatedByClient) {
|
||||
+ mFacola.hide();
|
||||
+ return super.stop(initiatedByClient);
|
||||
+ }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -180,7 +202,6 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
/**
|
||||
* The following methods contain common code which is shared in biometrics/common.
|
||||
*/
|
||||
-
|
||||
@Override // Binder call
|
||||
public long preEnroll(IBinder token) {
|
||||
checkPermission(MANAGE_FINGERPRINT);
|
||||
@@ -725,6 +746,7 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
mAlarmManager = context.getSystemService(AlarmManager.class);
|
||||
context.registerReceiver(mLockoutReceiver, new IntentFilter(getLockoutResetIntent()),
|
||||
getLockoutBroadcastPermission(), null /* handler */);
|
||||
+ mFacola = new FacolaView(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -952,6 +974,7 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
Slog.w(TAG, "startPreEnroll: no fingerprint HAL!");
|
||||
return 0;
|
||||
}
|
||||
+ mFacola.show();
|
||||
try {
|
||||
return daemon.preEnroll();
|
||||
} catch (RemoteException e) {
|
||||
@@ -966,6 +989,7 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
Slog.w(TAG, "startPostEnroll: no fingerprint HAL!");
|
||||
return 0;
|
||||
}
|
||||
+ mFacola.hide();
|
||||
try {
|
||||
return daemon.postEnroll();
|
||||
} catch (RemoteException e) {
|
||||
diff --git a/services/core/java/com/android/server/testharness/TestHarnessModeService.java b/services/core/java/com/android/server/testharness/TestHarnessModeService.java
|
||||
index fcf87ee2a4b..0aa948417c1 100644
|
||||
--- a/services/core/java/com/android/server/testharness/TestHarnessModeService.java
|
||||
+++ b/services/core/java/com/android/server/testharness/TestHarnessModeService.java
|
||||
@@ -150,7 +150,12 @@ public class TestHarnessModeService extends SystemService {
|
||||
+ "PersistentDataBlockManagerInternal was bound!");
|
||||
return null;
|
||||
}
|
||||
- byte[] testHarnessModeData = blockManager.getTestHarnessModeData();
|
||||
+ byte[] testHarnessModeData = null;
|
||||
+ try {
|
||||
+ testHarnessModeData = blockManager.getTestHarnessModeData();
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.e(TAG, "Failed to read block for test harness", e);
|
||||
+ }
|
||||
if (testHarnessModeData == null || testHarnessModeData.length == 0) {
|
||||
// There's no data to apply, so leave it as-is.
|
||||
return null;
|
||||
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||
index 479babc4c7d..1f972dd4918 100644
|
||||
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
|
||||
@@ -2833,12 +2833,6 @@ final class ActivityRecord extends ConfigurationContainer {
|
||||
// TODO(b/36505427): Consider moving this method and similar ones to ConfigurationContainer.
|
||||
private void updateOverrideConfiguration() {
|
||||
final Configuration overrideConfig = mTmpConfig;
|
||||
- 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);
|
||||
- }
|
||||
if (shouldUseSizeCompatMode()) {
|
||||
if (mCompatDisplayInsets != null) {
|
||||
// The override configuration is set only once in size compatibility mode.
|
||||
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
index 20de7985d1d..2b50d04233e 100644
|
||||
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
@@ -46,6 +46,9 @@ using ISecLight = ::vendor::samsung::hardware::light::V2_0::ISecLight;
|
||||
using SecType = ::vendor::samsung::hardware::light::V2_0::SecType;
|
||||
static bool sLightSupported = true;
|
||||
|
||||
+static sp<ISecLight> sSecHal;
|
||||
+static bool sSecTried = false;
|
||||
+
|
||||
static bool validate(jint light, jint flash, jint brightness) {
|
||||
bool valid = true;
|
||||
|
||||
@@ -155,20 +158,24 @@ static void setLight_native(
|
||||
colorAlpha = (colorAlpha * brightnessLevel) / 0xFF;
|
||||
colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
|
||||
}
|
||||
-
|
||||
- sp<ISecLight> secHal = ISecLight::getService();
|
||||
|
||||
- if(secHal != nullptr) {
|
||||
+ if(!sSecTried) {
|
||||
+ sSecHal = ISecLight::getService();
|
||||
+ sSecTried = true;
|
||||
+ }
|
||||
+
|
||||
+ if(sSecHal != nullptr) {
|
||||
SecType type = static_cast<SecType>(light);
|
||||
LightState state = constructState(
|
||||
colorARGB, flashMode, onMS, offMS, brightnessMode);
|
||||
|
||||
{
|
||||
android::base::Timer t;
|
||||
- Return<Status> ret = secHal->setLightSec(type, state);
|
||||
+ Return<Status> ret = sSecHal->setLightSec(type, state);
|
||||
processReturn(ret, static_cast<Type>(light), state);
|
||||
if (t.duration() > 50ms) ALOGD("Excessive delay setting light");
|
||||
}
|
||||
+ return;
|
||||
}
|
||||
|
||||
Type type = static_cast<Type>(light);
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
From 8167bee50010c872b82a2183e0ac17779b6b565e Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 12 Aug 2019 23:10:21 +0200
|
||||
Subject: [PATCH 34/36] User statsd/incidentd arent known to init 8.0. disable
|
||||
those services
|
||||
|
||||
Change-Id: I074654e194f764ffbc6961ff0ae304e36a9b5d1e
|
||||
---
|
||||
cmds/incidentd/incidentd.rc | 10 +++++-----
|
||||
cmds/statsd/statsd.rc | 18 +++++++++---------
|
||||
2 files changed, 14 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/cmds/incidentd/incidentd.rc b/cmds/incidentd/incidentd.rc
|
||||
index 9c16a1c52e8..cc20c936fda 100644
|
||||
--- a/cmds/incidentd/incidentd.rc
|
||||
+++ b/cmds/incidentd/incidentd.rc
|
||||
@@ -12,11 +12,11 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
-service incidentd /system/bin/incidentd
|
||||
- class main
|
||||
- user incidentd
|
||||
- group incidentd log readproc
|
||||
- capabilities KILL SYS_PTRACE
|
||||
+#service incidentd /system/bin/incidentd
|
||||
+# class main
|
||||
+# user incidentd
|
||||
+# group incidentd log readproc
|
||||
+# capabilities KILL SYS_PTRACE
|
||||
|
||||
on post-fs-data
|
||||
# Create directory for incidentd
|
||||
diff --git a/cmds/statsd/statsd.rc b/cmds/statsd/statsd.rc
|
||||
index a98ecd586b4..564cf98d0a9 100644
|
||||
--- a/cmds/statsd/statsd.rc
|
||||
+++ b/cmds/statsd/statsd.rc
|
||||
@@ -12,15 +12,15 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
-service statsd /system/bin/statsd
|
||||
- class main
|
||||
- socket statsdw dgram+passcred 0222 statsd statsd
|
||||
- user statsd
|
||||
- group statsd log
|
||||
- writepid /dev/cpuset/system-background/tasks
|
||||
-
|
||||
-on property:ro.statsd.enable=false
|
||||
- stop statsd
|
||||
+#service statsd /system/bin/statsd
|
||||
+# class main
|
||||
+# socket statsdw dgram+passcred 0222 statsd statsd
|
||||
+# user statsd
|
||||
+# group statsd log
|
||||
+# writepid /dev/cpuset/system-background/tasks
|
||||
+#
|
||||
+#on property:ro.statsd.enable=false
|
||||
+# stop statsd
|
||||
|
||||
on post-fs-data
|
||||
# Create directory for statsd
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From e73eb752f04a301bb4195a40ef3d73be5bb705d6 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 12 Sep 2019 20:38:08 +0200
|
||||
Subject: [PATCH 35/36] Check for samsung light service everytime
|
||||
|
||||
This is needed because it is possible sec light service isn't ready at
|
||||
that time.
|
||||
TODO: check that the services exists at all, so that this is done only
|
||||
on Samsung devices
|
||||
|
||||
Change-Id: I30f049f3b06f83c455301b589b3558ff384ec300
|
||||
---
|
||||
services/core/jni/com_android_server_lights_LightsService.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
index bea321da890..75793a7c0f2 100644
|
||||
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
@@ -150,7 +150,7 @@ static void setLight_native(
|
||||
|
||||
if(!sSecTried) {
|
||||
sSecHal = ISecLight::getService();
|
||||
- sSecTried = true;
|
||||
+ //sSecTried = true;
|
||||
}
|
||||
|
||||
if(sSecHal != nullptr) {
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
From f2c2a6a4707dde7f62d29aa5b204d96f9693e0e0 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 12 Sep 2019 20:39:50 +0200
|
||||
Subject: [PATCH 36/36] Forawrdport Samsung "fod" support for ultrasound fp
|
||||
|
||||
Change-Id: I9f787a01dab922cd94f9e552a6f3f53a00ca8448
|
||||
---
|
||||
.../biometrics/fingerprint/FacolaView.java | 61 ++++++++++++++++++-
|
||||
1 file changed, 58 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
index 8829bcb7e48..f61582990cf 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -30,6 +30,9 @@ import android.view.WindowManager;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.view.Gravity;
|
||||
|
||||
+import java.io.BufferedReader;
|
||||
+import java.io.File;
|
||||
+import java.io.FileReader;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import vendor.xiaomi.hardware.fingerprintextension.V1_0.IXiaomiFingerprint;
|
||||
@@ -53,9 +56,12 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
private final Handler mHandler;
|
||||
|
||||
private final WindowManager mWM;
|
||||
+ private final boolean samsungFod = samsungHasCmd("fod_enable");
|
||||
FacolaView(Context context) {
|
||||
super(context);
|
||||
|
||||
+ android.util.Log.d("PHH", "Samsung FOD " + samsungFod);
|
||||
+
|
||||
mHandlerThread = new HandlerThread("FacolaThread");
|
||||
mHandlerThread.start();
|
||||
mHandler = new Handler(mHandlerThread.getLooper());
|
||||
@@ -64,7 +70,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
String[] size = android.os.SystemProperties.get("persist.vendor.sys.fp.fod.size.width_height", "").split(",");
|
||||
Slog.d("PHH-Enroll", "FacolaView hello");
|
||||
if(size.length == 2 && location.length == 2) {
|
||||
- Slog.d("PHH-Enroll", "Got real values");
|
||||
+ Slog.d("PHH-Enroll", "Got real values");
|
||||
mX = Integer.parseInt(location[0]);
|
||||
mY = Integer.parseInt(location[1]);
|
||||
mW = Integer.parseInt(size[0]);
|
||||
@@ -149,7 +155,10 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
}
|
||||
|
||||
public void show() {
|
||||
- Slog.d("PHH-Enroll", "Show", new Exception());
|
||||
+ Slog.d("PHH-Enroll", "Show", new Exception());
|
||||
+ if(samsungFod) {
|
||||
+ samsungCmd("fod_enable,1,1");
|
||||
+ }
|
||||
if(mX == -1 || mY == -1 || mW == -1 || mH == -1) return;
|
||||
|
||||
try {
|
||||
@@ -185,7 +194,10 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
}
|
||||
|
||||
public void hide() {
|
||||
- Slog.d("PHH-Enroll", "Hide", new Exception());
|
||||
+ Slog.d("PHH-Enroll", "Hide", new Exception());
|
||||
+ if(samsungFod) {
|
||||
+ samsungCmd("fod_enable,0");
|
||||
+ }
|
||||
if(mX == -1 || mY == -1 || mW == -1 || mH == -1) return;
|
||||
|
||||
try {
|
||||
@@ -207,4 +219,47 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
mWM.removeView(this);
|
||||
});
|
||||
}
|
||||
+
|
||||
+ private static boolean samsungHasCmd(String cmd) {
|
||||
+ try {
|
||||
+ File f = new File("/sys/devices/virtual/sec/tsp/cmd_list");
|
||||
+ if(!f.exists()) return false;
|
||||
+
|
||||
+ BufferedReader b = new BufferedReader(new FileReader(f));
|
||||
+ String line = null;
|
||||
+ while( (line = b.readLine()) != null) {
|
||||
+ if(line.equals(cmd)) return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+ } catch(Exception e) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ private static String readFile(String path) {
|
||||
+ try {
|
||||
+ File f = new File(path);
|
||||
+
|
||||
+ BufferedReader b = new BufferedReader(new FileReader(f));
|
||||
+ return b.readLine();
|
||||
+ } catch(Exception e) {
|
||||
+ return null;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ private static void samsungCmd(String cmd) {
|
||||
+ try {
|
||||
+ PrintWriter writer = new PrintWriter("/sys/devices/virtual/sec/tsp/cmd", "UTF-8");
|
||||
+ writer.println(cmd);
|
||||
+ writer.close();
|
||||
+
|
||||
+ String status = readFile("/sys/devices/virtual/sec/tsp/cmd_status");
|
||||
+ String ret = readFile("/sys/devices/virtual/sec/tsp/cmd_result");
|
||||
+
|
||||
+ android.util.Log.d("PHH", "Sending command " + cmd + " returned " + ret + ":" + status);
|
||||
+ } catch(Exception e) {
|
||||
+ android.util.Log.d("PHH", "Failed sending command " + cmd, e);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
From f1e202e71f6ab47a1870aa91e65d8c777770b88d Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 14 Oct 2019 23:50:46 +0200
|
||||
Subject: [PATCH 37/38] Scan /system/overlay and fix support for properties in
|
||||
idmap2
|
||||
|
||||
Change-Id: Ic04b5b1cc7b5d8cee67b1e2fdaa8aa793546b6d6
|
||||
---
|
||||
cmds/idmap2/idmap2/Scan.cpp | 6 ++++-
|
||||
cmds/idmap2/include/idmap2/ResourceUtils.h | 3 +++
|
||||
cmds/idmap2/libidmap2/ResourceUtils.cpp | 26 +++++++++++++++++++
|
||||
.../android/content/pm/PackageParser.java | 9 ++++++-
|
||||
core/jni/android_util_AssetManager.cpp | 3 +++
|
||||
.../server/pm/PackageManagerService.java | 6 +++++
|
||||
6 files changed, 51 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/cmds/idmap2/idmap2/Scan.cpp b/cmds/idmap2/idmap2/Scan.cpp
|
||||
index cfac5f31e2e..adac1ef88cf 100644
|
||||
--- a/cmds/idmap2/idmap2/Scan.cpp
|
||||
+++ b/cmds/idmap2/idmap2/Scan.cpp
|
||||
@@ -159,13 +159,17 @@ Result<Unit> Scan(const std::vector<std::string>& args) {
|
||||
Result<OverlayManifestInfo> overlay_info =
|
||||
ExtractOverlayManifestInfo(path, /* assert_overlay */ false);
|
||||
if (!overlay_info) {
|
||||
- return overlay_info.GetError();
|
||||
+ continue;
|
||||
}
|
||||
|
||||
if (!overlay_info->is_static) {
|
||||
continue;
|
||||
}
|
||||
|
||||
+ if (!overlay_info->property_match) {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
if (overlay_info->target_package.empty() ||
|
||||
overlay_info->target_package != target_package_name) {
|
||||
continue;
|
||||
diff --git a/cmds/idmap2/include/idmap2/ResourceUtils.h b/cmds/idmap2/include/idmap2/ResourceUtils.h
|
||||
index 8797a788dd1..0f98f4d1a2d 100644
|
||||
--- a/cmds/idmap2/include/idmap2/ResourceUtils.h
|
||||
+++ b/cmds/idmap2/include/idmap2/ResourceUtils.h
|
||||
@@ -30,6 +30,9 @@ namespace android::idmap2::utils {
|
||||
struct OverlayManifestInfo {
|
||||
std::string target_package; // NOLINT(misc-non-private-member-variables-in-classes)
|
||||
std::string target_name; // NOLINT(misc-non-private-member-variables-in-classes)
|
||||
+ std::string property_name; // NOLINT(misc-non-private-member-variables-in-classes)
|
||||
+ std::string property_value; // NOLINT(misc-non-private-member-variables-in-classes)
|
||||
+ bool property_match; // NOLINT(misc-non-private-member-variables-in-classes)
|
||||
bool is_static; // NOLINT(misc-non-private-member-variables-in-classes)
|
||||
int priority = -1; // NOLINT(misc-non-private-member-variables-in-classes)
|
||||
};
|
||||
diff --git a/cmds/idmap2/libidmap2/ResourceUtils.cpp b/cmds/idmap2/libidmap2/ResourceUtils.cpp
|
||||
index 71ba3f0f1ac..7fda402b80f 100644
|
||||
--- a/cmds/idmap2/libidmap2/ResourceUtils.cpp
|
||||
+++ b/cmds/idmap2/libidmap2/ResourceUtils.cpp
|
||||
@@ -18,7 +18,9 @@
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
+#include <fnmatch.h>
|
||||
|
||||
+#include "android-base/properties.h"
|
||||
#include "androidfw/StringPiece.h"
|
||||
#include "androidfw/Util.h"
|
||||
#include "idmap2/Result.h"
|
||||
@@ -93,6 +95,30 @@ Result<OverlayManifestInfo> ExtractOverlayManifestInfo(const std::string& path,
|
||||
info.target_name = iter->second;
|
||||
}
|
||||
|
||||
+ iter = tag->find("requiredSystemPropertyName");
|
||||
+ if (iter != tag->end()) {
|
||||
+ info.property_name = iter->second;
|
||||
+ }
|
||||
+
|
||||
+ iter = tag->find("requiredSystemPropertyValue");
|
||||
+ if (iter != tag->end()) {
|
||||
+ info.property_value = iter->second;
|
||||
+ }
|
||||
+
|
||||
+ info.property_match = false;
|
||||
+ if(!info.property_name.empty() && !info.property_value.empty()) {
|
||||
+ std::string prop = android::base::GetProperty(info.property_name, "");
|
||||
+ if(info.property_value == prop) {
|
||||
+ info.property_match = true;
|
||||
+ }
|
||||
+ if(info.property_value[0] == '+') {
|
||||
+ info.property_match =
|
||||
+ fnmatch(info.property_value.c_str()+1, prop.c_str(), 0) == 0;
|
||||
+ }
|
||||
+ } else {
|
||||
+ info.property_match = true;
|
||||
+ }
|
||||
+
|
||||
iter = tag->find("isStatic");
|
||||
if (iter != tag->end()) {
|
||||
info.is_static = std::stoul(iter->second) != 0U;
|
||||
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
|
||||
index b3776787cc2..2147cc61728 100644
|
||||
--- a/core/java/android/content/pm/PackageParser.java
|
||||
+++ b/core/java/android/content/pm/PackageParser.java
|
||||
@@ -1353,6 +1353,7 @@ public class PackageParser {
|
||||
} catch (PackageParserException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
+ android.util.Log.d("PHH", "failed reading manifest because of", e);
|
||||
throw new PackageParserException(INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION,
|
||||
"Failed to read manifest from " + apkPath, e);
|
||||
} finally {
|
||||
@@ -1392,6 +1393,7 @@ public class PackageParser {
|
||||
} catch (PackageParserException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
+ android.util.Log.d("PHH", "failed reading manifest because of", e);
|
||||
throw new PackageParserException(INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION,
|
||||
"Failed to read manifest from " + apkPath, e);
|
||||
} finally {
|
||||
@@ -2556,7 +2558,12 @@ public class PackageParser {
|
||||
|
||||
// check property value - make sure it is both set and equal to expected value
|
||||
final String currValue = SystemProperties.get(propName);
|
||||
- return (currValue != null && currValue.equals(propValue));
|
||||
+ if(propValue.charAt(0) == '+') {
|
||||
+ String valRegexp = propValue.replace("*", ".*").substring(1);
|
||||
+ return currValue != null && currValue.matches(valRegexp);
|
||||
+ } else {
|
||||
+ return (currValue != null && currValue.equals(propValue));
|
||||
+ }
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
|
||||
index 4518c7e66a5..9e1b6db9ad9 100644
|
||||
--- a/core/jni/android_util_AssetManager.cpp
|
||||
+++ b/core/jni/android_util_AssetManager.cpp
|
||||
@@ -233,6 +233,9 @@ static jobjectArray NativeCreateIdmapsForStaticOverlaysTargetingAndroid(JNIEnv*
|
||||
// --input-directory can be given multiple times, but idmap2 expects the directory to exist
|
||||
std::vector<std::string> input_dirs;
|
||||
struct stat st;
|
||||
+ if (stat("/system/overlay", &st) == 0) {
|
||||
+ input_dirs.push_back("/system/overlay");
|
||||
+ }
|
||||
if (stat(AssetManager::VENDOR_OVERLAY_DIR, &st) == 0) {
|
||||
input_dirs.push_back(AssetManager::VENDOR_OVERLAY_DIR);
|
||||
}
|
||||
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
index 7469e099421..203eb793610 100644
|
||||
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
@@ -2608,6 +2608,12 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
// any apps.)
|
||||
// For security and version matching reason, only consider overlay packages if they
|
||||
// reside in the right directory.
|
||||
+ scanDirTracedLI(new File("/system/overlay"),
|
||||
+ mDefParseFlags
|
||||
+ | PackageParser.PARSE_IS_SYSTEM_DIR,
|
||||
+ scanFlags
|
||||
+ | SCAN_AS_SYSTEM,
|
||||
+ 0);
|
||||
scanDirTracedLI(new File(VENDOR_OVERLAY_DIR),
|
||||
mDefParseFlags
|
||||
| PackageParser.PARSE_IS_SYSTEM_DIR,
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
From 9bba3cbb885f9917c120bfc7f072002f9e8cd4ed Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 22 Oct 2019 00:33:23 +0200
|
||||
Subject: [PATCH 38/38] Improve FacolaView life cycle, though it is still
|
||||
missing few cases. It might require to change BiometricServiceBase for actual
|
||||
fix
|
||||
|
||||
Change-Id: Ida96f8aca360c23cd5535f0ee92fd77dada2ebec
|
||||
---
|
||||
.../server/biometrics/fingerprint/FacolaView.java | 9 ++++++++-
|
||||
.../biometrics/fingerprint/FingerprintService.java | 14 ++++++++++++++
|
||||
2 files changed, 22 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
index f61582990cf..4ff373a108d 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
|
||||
@@ -57,6 +57,8 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
|
||||
private final WindowManager mWM;
|
||||
private final boolean samsungFod = samsungHasCmd("fod_enable");
|
||||
+
|
||||
+ private boolean mHidden = true;
|
||||
FacolaView(Context context) {
|
||||
super(context);
|
||||
|
||||
@@ -106,7 +108,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
//TODO w!=h?
|
||||
if(mInsideCircle) {
|
||||
try {
|
||||
- int nitValue = 3;
|
||||
+ int nitValue = 2;
|
||||
if(mXiaomiFingerprint != null)
|
||||
mXiaomiFingerprint.extCmd(0xa, nitValue);
|
||||
} catch(Exception e) {
|
||||
@@ -156,6 +158,8 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
|
||||
public void show() {
|
||||
Slog.d("PHH-Enroll", "Show", new Exception());
|
||||
+ if(!mHidden) return;
|
||||
+ mHidden = false;
|
||||
if(samsungFod) {
|
||||
samsungCmd("fod_enable,1,1");
|
||||
}
|
||||
@@ -194,7 +198,10 @@ public class FacolaView extends ImageView implements OnTouchListener {
|
||||
}
|
||||
|
||||
public void hide() {
|
||||
+ mInsideCircle = false;
|
||||
Slog.d("PHH-Enroll", "Hide", new Exception());
|
||||
+ if(mHidden) return;
|
||||
+ mHidden = true;
|
||||
if(samsungFod) {
|
||||
samsungCmd("fod_enable,0");
|
||||
}
|
||||
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
index c7de87126e8..972b4703860 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
|
||||
@@ -181,6 +181,16 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
return result;
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public boolean onAuthenticated(BiometricAuthenticator.Identifier identifier,
|
||||
+ boolean authenticated, ArrayList<Byte> token) {
|
||||
+ boolean result = super.onAuthenticated(identifier, authenticated, token);
|
||||
+ android.util.Log.d("PHH-Enroll", "auth-ed ret " + result);
|
||||
+ if(result) mFacola.hide();
|
||||
+ return result;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
@Override
|
||||
public int start() {
|
||||
mFacola.show();
|
||||
@@ -219,6 +229,7 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
final IFingerprintServiceReceiver receiver, final int flags,
|
||||
final String opPackageName) {
|
||||
checkPermission(MANAGE_FINGERPRINT);
|
||||
+ mFacola.show();
|
||||
|
||||
final boolean restricted = isRestricted();
|
||||
final int groupId = userId; // default group for fingerprint enrollment
|
||||
@@ -641,6 +652,9 @@ public class FingerprintService extends BiometricServiceBase {
|
||||
public void onError(final long deviceId, final int error, final int vendorCode) {
|
||||
mHandler.post(() -> {
|
||||
FingerprintService.super.handleError(deviceId, error, vendorCode);
|
||||
+ if ( error == BiometricConstants.BIOMETRIC_ERROR_CANCELED) {
|
||||
+ mFacola.hide();
|
||||
+ }
|
||||
// TODO: this chunk of code should be common to all biometric services
|
||||
if (error == BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE) {
|
||||
// If we get HW_UNAVAILABLE, try to connect again later...
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
From 12005c0b0a7f7e9c33bd8cf79ffaee609c43dafb Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 22 Oct 2019 15:31:54 +0200
|
||||
Subject: [PATCH 39/39] Link hwui with libbase, because of updated skia
|
||||
dependency
|
||||
|
||||
Change-Id: I201df2cd8f66674948b56fb6d5be5e8c3cb48bd1
|
||||
---
|
||||
libs/hwui/Android.bp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp
|
||||
index ebba4cb79df..b9808751130 100644
|
||||
--- a/libs/hwui/Android.bp
|
||||
+++ b/libs/hwui/Android.bp
|
||||
@@ -70,6 +70,7 @@ cc_defaults {
|
||||
"libandroidfw",
|
||||
"libcrypto",
|
||||
"libsync",
|
||||
+ "libbase",
|
||||
],
|
||||
static_libs: [
|
||||
"libEGL_blobCache",
|
||||
--
|
||||
2.17.1
|
||||
|
||||
Reference in New Issue
Block a user