diff options
author | 2024-11-27 22:42:03 +0000 | |
---|---|---|
committer | 2024-11-27 22:42:03 +0000 | |
commit | 5c65f95cd2f8b618a8093340aa71e16589bad8f3 (patch) | |
tree | eb6c9ffe876157350c040557cceab22cb9ba306b /ravenwood | |
parent | bd0b30d95b20fadd0ab8523cbd26f140c4d083ce (diff) | |
parent | 96e2c4065694c7db0dd92b221fdb6b6a13a3f990 (diff) |
Merge "[HostStubGen] Now method descriptor is optional in policy files" into main am: 96e2c40656
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/3379964
Change-Id: Ie031ef5953744f2bbf3f230173200413b92965e4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'ravenwood')
5 files changed, 30 insertions, 15 deletions
diff --git a/ravenwood/texts/ravenwood-common-policies.txt b/ravenwood/texts/ravenwood-common-policies.txt index 08f5397730da..83c31512eb70 100644 --- a/ravenwood/texts/ravenwood-common-policies.txt +++ b/ravenwood/texts/ravenwood-common-policies.txt @@ -14,7 +14,7 @@ class :r keepclass # Support APIs not available in standard JRE class java.io.FileDescriptor keep - method getInt$ ()I @com.android.ravenwood.RavenwoodJdkPatch.getInt$ - method setInt$ (I)V @com.android.ravenwood.RavenwoodJdkPatch.setInt$ + method getInt$ @com.android.ravenwood.RavenwoodJdkPatch.getInt$ + method setInt$ @com.android.ravenwood.RavenwoodJdkPatch.setInt$ class java.util.LinkedHashMap keep - method eldest ()Ljava/util/Map$Entry; @com.android.ravenwood.RavenwoodJdkPatch.eldest + method eldest @com.android.ravenwood.RavenwoodJdkPatch.eldest diff --git a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/InMemoryOutputFilter.kt b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/InMemoryOutputFilter.kt index 59fa464a7212..fc885d6f463b 100644 --- a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/InMemoryOutputFilter.kt +++ b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/InMemoryOutputFilter.kt @@ -66,6 +66,9 @@ class InMemoryOutputFilter( methodName: String, descriptor: String ) { + if (descriptor == "*") { + return + } if (classes.findMethod(className, methodName, descriptor) == null) { log.w("Unknown method $className.$methodName$descriptor") } @@ -92,7 +95,8 @@ class InMemoryOutputFilter( descriptor: String, ): FilterPolicyWithReason { return mPolicies[getMethodKey(className, methodName, descriptor)] - ?: super.getPolicyForMethod(className, methodName, descriptor) + ?: mPolicies[getMethodKey(className, methodName, "*")] + ?: super.getPolicyForMethod(className, methodName, descriptor) } fun setPolicyForMethod( @@ -107,7 +111,8 @@ class InMemoryOutputFilter( override fun getRenameTo(className: String, methodName: String, descriptor: String): String? { return mRenames[getMethodKey(className, methodName, descriptor)] - ?: super.getRenameTo(className, methodName, descriptor) + ?: mRenames[getMethodKey(className, methodName, "*")] + ?: super.getRenameTo(className, methodName, descriptor) } fun setRenameTo(className: String, methodName: String, descriptor: String, toName: String) { diff --git a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt index caf80ebec0c9..7462a8ce12c5 100644 --- a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt +++ b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt @@ -303,12 +303,21 @@ class TextFileFilterPolicyParser( } private fun parseMethod(fields: Array<String>) { - if (fields.size < 4) { - throw ParseException("Method ('m') expects 3 fields.") + if (fields.size < 3 || fields.size > 4) { + throw ParseException("Method ('m') expects 3 or 4 fields.") } val name = fields[1] - val signature = fields[2] - val policy = parsePolicy(fields[3]) + val signature: String + val policyStr: String + if (fields.size <= 3) { + signature = "*" + policyStr = fields[2] + } else { + signature = fields[2] + policyStr = fields[3] + } + + val policy = parsePolicy(policyStr) if (!policy.isUsableWithMethods) { throw ParseException("Method can't have policy '$policy'") @@ -321,7 +330,7 @@ class TextFileFilterPolicyParser( policy.withReason(FILTER_REASON) ) if (policy == FilterPolicy.Substitute) { - val fromName = fields[3].substring(1) + val fromName = policyStr.substring(1) if (fromName == name) { throw ParseException( diff --git a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyMethodReplaceFilter.kt b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyMethodReplaceFilter.kt index d45f41407a52..a3f934cacc2c 100644 --- a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyMethodReplaceFilter.kt +++ b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyMethodReplaceFilter.kt @@ -48,10 +48,11 @@ class TextFilePolicyMethodReplaceFilter( // Maybe use 'Tri' if we end up having too many replacements. spec.forEach { if (className == it.fromClass && - methodName == it.fromMethod && - descriptor == it.fromDescriptor + methodName == it.fromMethod ) { - return MethodReplaceTarget(it.toClass, it.toMethod) + if (it.fromDescriptor == "*" || descriptor == it.fromDescriptor) { + return MethodReplaceTarget(it.toClass, it.toMethod) + } } } return null diff --git a/ravenwood/tools/hoststubgen/test-tiny-framework/policy-override-tiny-framework.txt b/ravenwood/tools/hoststubgen/test-tiny-framework/policy-override-tiny-framework.txt index 3c138d21b75d..2f35d35d608d 100644 --- a/ravenwood/tools/hoststubgen/test-tiny-framework/policy-override-tiny-framework.txt +++ b/ravenwood/tools/hoststubgen/test-tiny-framework/policy-override-tiny-framework.txt @@ -3,11 +3,11 @@ class com/android/hoststubgen/test/tinyframework/TinyFrameworkForTextPolicy keep # field remove remove # Implicitly remove method <init> ()V keep method addOne (I)I keep - method addOneInner (I)I keep + method addOneInner keep method toBeRemoved (Ljava/lang/String;)V remove method addTwo (I)I @addTwo_host # method addTwo_host (I)I # used as a substitute - method nativeAddThree (I)I @addThree_host + method nativeAddThree @addThree_host # method addThree_host (I)I # used as a substitute method unsupportedMethod ()Ljava/lang/String; throw method visibleButUsesUnsupportedMethod ()Ljava/lang/String; keep |