summaryrefslogtreecommitdiff
path: root/ravenwood/texts
diff options
context:
space:
mode:
author Makoto Onuki <omakoto@google.com> 2025-01-09 13:20:42 -0800
committer Makoto Onuki <omakoto@google.com> 2025-01-14 10:26:57 -0800
commit6434c0301d320233bdc7da77eb800f5e87de07f3 (patch)
tree49f78664c09070e6bfe38d0da1be4b896994e49d /ravenwood/texts
parent816c7b4c30dc1da4ee74610fbef934aee3c216fe (diff)
[ravenwood] Add a tool to convert text policy to annotations
- Add a new command "ravenhelper", which performs different functions depending on the first argument ("subcommand") just like the git command. - For now, it has one subcommand "pta" -- policy-to-annotation, which reads the policy file and add corresponding annotations to the java source files. - This will also add classes to ravenwood-annotation-allowed-classes.txt as needed. - Use the f/b/r/scripts/pta-framework.sh script to run it. - For safety and easier testing/debugging, the command actually won't directly update any files. Instead, it'll generate a shell script which does so, using sed(1). Here's an example script: https://paste.googleplex.com/6561708886458368?raw Bug: 388607679 Flag: EXEMPT host test change only Test: ./frameworks/base/ravenwood/scripts/pta-framework.sh, and manually check /tmp/pta.sh Change-Id: I5dcf078ca47eb373bcaf435ef133335f44bce6b3
Diffstat (limited to 'ravenwood/texts')
-rw-r--r--ravenwood/texts/ravenwood-common-policies.txt7
-rw-r--r--ravenwood/texts/ravenwood-framework-policies.txt73
-rw-r--r--ravenwood/texts/ravenwood-services-policies.txt21
3 files changed, 55 insertions, 46 deletions
diff --git a/ravenwood/texts/ravenwood-common-policies.txt b/ravenwood/texts/ravenwood-common-policies.txt
index 83c31512eb70..fd4ea6cf40c2 100644
--- a/ravenwood/texts/ravenwood-common-policies.txt
+++ b/ravenwood/texts/ravenwood-common-policies.txt
@@ -1,5 +1,8 @@
# Ravenwood "policy" that should apply to all code.
+# The "no-pta" marker is used to exclude the lines from "ravenhelper pta",
+# which tries to convert policies to annotations.
+
# Keep all AIDL interfaces
class :aidl keepclass
@@ -13,8 +16,8 @@ class :sysprops keepclass
class :r keepclass
# Support APIs not available in standard JRE
-class java.io.FileDescriptor keep
+class java.io.FileDescriptor # no-pta
method getInt$ @com.android.ravenwood.RavenwoodJdkPatch.getInt$
method setInt$ @com.android.ravenwood.RavenwoodJdkPatch.setInt$
-class java.util.LinkedHashMap keep
+class java.util.LinkedHashMap # no-pta
method eldest @com.android.ravenwood.RavenwoodJdkPatch.eldest
diff --git a/ravenwood/texts/ravenwood-framework-policies.txt b/ravenwood/texts/ravenwood-framework-policies.txt
index 26b6fe3d82ad..4033782c607e 100644
--- a/ravenwood/texts/ravenwood-framework-policies.txt
+++ b/ravenwood/texts/ravenwood-framework-policies.txt
@@ -1,62 +1,65 @@
# Ravenwood "policy" file for framework-minus-apex.
+# The "no-pta" marker is used to exclude the lines from "ravenhelper pta",
+# which tries to convert policies to annotations.
+
# To avoid VerifyError on nano proto files (b/324063814), we rename nano proto classes.
# Note: The "rename" directive must use slashes (/) as a package name separator.
rename com/.*/nano/ devicenano/
rename android/.*/nano/ devicenano/
# StatsD auto-generated
-class com.android.internal.util.FrameworkStatsLog keepclass
+class com.android.internal.util.FrameworkStatsLog keepclass # no-pta
# Exported to Mainline modules; cannot use annotations
-class com.android.internal.util.FastXmlSerializer keepclass
-class com.android.internal.util.FileRotator keepclass
-class com.android.internal.util.HexDump keepclass
-class com.android.internal.util.IndentingPrintWriter keepclass
-class com.android.internal.util.LocalLog keepclass
-class com.android.internal.util.MessageUtils keepclass
-class com.android.internal.util.TokenBucket keepclass
-class android.os.HandlerExecutor keepclass
-class android.util.BackupUtils keepclass
-class android.util.IndentingPrintWriter keepclass
-class android.util.LocalLog keepclass
-class android.util.Pair keepclass
-class android.util.Rational keepclass
+class com.android.internal.util.FastXmlSerializer keepclass # no-pta
+class com.android.internal.util.FileRotator keepclass # no-pta
+class com.android.internal.util.HexDump keepclass # no-pta
+class com.android.internal.util.IndentingPrintWriter keepclass # no-pta
+class com.android.internal.util.LocalLog keepclass # no-pta
+class com.android.internal.util.MessageUtils keepclass # no-pta
+class com.android.internal.util.TokenBucket keepclass # no-pta
+class android.os.HandlerExecutor keepclass # no-pta
+class android.util.BackupUtils keepclass # no-pta
+class android.util.IndentingPrintWriter keepclass # no-pta
+class android.util.LocalLog keepclass # no-pta
+class android.util.Pair keepclass # no-pta
+class android.util.Rational keepclass # no-pta
# From modules-utils; cannot use annotations
-class com.android.internal.util.Preconditions keepclass
-class com.android.internal.logging.InstanceId keepclass
-class com.android.internal.logging.InstanceIdSequence keepclass
-class com.android.internal.logging.UiEvent keepclass
-class com.android.internal.logging.UiEventLogger keepclass
+class com.android.internal.util.Preconditions keepclass # no-pta
+class com.android.internal.logging.InstanceId keepclass # no-pta
+class com.android.internal.logging.InstanceIdSequence keepclass # no-pta
+class com.android.internal.logging.UiEvent keepclass # no-pta
+class com.android.internal.logging.UiEventLogger keepclass # no-pta
# From modules-utils; cannot use annotations
-class com.android.modules.utils.BinaryXmlPullParser keepclass
-class com.android.modules.utils.BinaryXmlSerializer keepclass
-class com.android.modules.utils.FastDataInput keepclass
-class com.android.modules.utils.FastDataOutput keepclass
-class com.android.modules.utils.ModifiedUtf8 keepclass
-class com.android.modules.utils.TypedXmlPullParser keepclass
-class com.android.modules.utils.TypedXmlSerializer keepclass
+class com.android.modules.utils.BinaryXmlPullParser keepclass # no-pta
+class com.android.modules.utils.BinaryXmlSerializer keepclass # no-pta
+class com.android.modules.utils.FastDataInput keepclass # no-pta
+class com.android.modules.utils.FastDataOutput keepclass # no-pta
+class com.android.modules.utils.ModifiedUtf8 keepclass # no-pta
+class com.android.modules.utils.TypedXmlPullParser keepclass # no-pta
+class com.android.modules.utils.TypedXmlSerializer keepclass # no-pta
# Uri
-class android.net.Uri keepclass
-class android.net.UriCodec keepclass
+class android.net.Uri keepclass # no-pta
+class android.net.UriCodec keepclass # no-pta
# Telephony
-class android.telephony.PinResult keepclass
+class android.telephony.PinResult keepclass # no-pta
# Just enough to support mocking, no further functionality
-class android.content.BroadcastReceiver keep
+class android.content.BroadcastReceiver keep # no-pta
method <init> ()V keep
-class android.content.Context keep
+class android.content.Context keep # no-pta
method <init> ()V keep
- method getSystemService (Ljava/lang/Class;)Ljava/lang/Object; keep
-class android.content.pm.PackageManager
+ method getSystemService (Ljava/lang/Class;)Ljava/lang/Object; keep # no-pta
+class android.content.pm.PackageManager # no-pta
method <init> ()V keep
-class android.text.ClipboardManager keep
+class android.text.ClipboardManager keep # no-pta
method <init> ()V keep
# Just enough to allow ResourcesManager to run
-class android.hardware.display.DisplayManagerGlobal keep
+class android.hardware.display.DisplayManagerGlobal keep # no-pta
method getInstance ()Landroid/hardware/display/DisplayManagerGlobal; ignore
diff --git a/ravenwood/texts/ravenwood-services-policies.txt b/ravenwood/texts/ravenwood-services-policies.txt
index 530e5c8f5986..e3be9afdba5c 100644
--- a/ravenwood/texts/ravenwood-services-policies.txt
+++ b/ravenwood/texts/ravenwood-services-policies.txt
@@ -1,12 +1,15 @@
# Ravenwood "policy" file for services.core.
+# The "no-pta" marker is used to exclude the lines from "ravenhelper pta",
+# which tries to convert policies to annotations.
+
# Auto-generated from XSD
-class com.android.server.compat.config.Change keepclass
-class com.android.server.compat.config.Config keepclass
-class com.android.server.compat.config.XmlParser keepclass
-class com.android.server.compat.overrides.ChangeOverrides keepclass
-class com.android.server.compat.overrides.OverrideValue keepclass
-class com.android.server.compat.overrides.Overrides keepclass
-class com.android.server.compat.overrides.RawOverrideValue keepclass
-class com.android.server.compat.overrides.XmlParser keepclass
-class com.android.server.compat.overrides.XmlWriter keepclass \ No newline at end of file
+class com.android.server.compat.config.Change keepclass # no-pta
+class com.android.server.compat.config.Config keepclass # no-pta
+class com.android.server.compat.config.XmlParser keepclass # no-pta
+class com.android.server.compat.overrides.ChangeOverrides keepclass # no-pta
+class com.android.server.compat.overrides.OverrideValue keepclass # no-pta
+class com.android.server.compat.overrides.Overrides keepclass # no-pta
+class com.android.server.compat.overrides.RawOverrideValue keepclass # no-pta
+class com.android.server.compat.overrides.XmlParser keepclass # no-pta
+class com.android.server.compat.overrides.XmlWriter keepclass # no-pta \ No newline at end of file