aconfig: add fixed read only flag

Add a new field in the declaration to indicate whether
the permission can be overridden.

When the field “is_fixed_read_only” is set to true,
the flag permission will be set as fixed “READ_ONLY”,
and the permission should not be changed by Gantry.

Bug: 292521627
Test: atest aconfig.test
Change-Id: Ic9bcd7823bccb8b947cf05568c7ced3763490a23
diff --git a/tools/aconfig/src/codegen_java.rs b/tools/aconfig/src/codegen_java.rs
index 2c9dcf5..be0ec97 100644
--- a/tools/aconfig/src/codegen_java.rs
+++ b/tools/aconfig/src/codegen_java.rs
@@ -121,6 +121,7 @@
     public interface FeatureFlags {
         boolean disabledRo();
         boolean disabledRw();
+        boolean enabledFixedRo();
         boolean enabledRo();
         boolean enabledRw();
     "#;
@@ -130,6 +131,7 @@
     public final class Flags {
         public static final String FLAG_DISABLED_RO = "com.android.aconfig.test.disabled_ro";
         public static final String FLAG_DISABLED_RW = "com.android.aconfig.test.disabled_rw";
+        public static final String FLAG_ENABLED_FIXED_RO = "com.android.aconfig.test.enabled_fixed_ro";
         public static final String FLAG_ENABLED_RO = "com.android.aconfig.test.enabled_ro";
         public static final String FLAG_ENABLED_RW = "com.android.aconfig.test.enabled_rw";
 
@@ -139,6 +141,9 @@
         public static boolean disabledRw() {
             return FEATURE_FLAGS.disabledRw();
         }
+        public static boolean enabledFixedRo() {
+            return FEATURE_FLAGS.enabledFixedRo();
+        }
         public static boolean enabledRo() {
             return FEATURE_FLAGS.enabledRo();
         }
@@ -159,6 +164,11 @@
                 "Method is not implemented.");
         }
         @Override
+        public boolean enabledFixedRo() {
+            throw new UnsupportedOperationException(
+                "Method is not implemented.");
+        }
+        @Override
         public boolean enabledRo() {
             throw new UnsupportedOperationException(
                 "Method is not implemented.");
@@ -211,6 +221,10 @@
                 );
             }
             @Override
+            public boolean enabledFixedRo() {
+                return true;
+            }
+            @Override
             public boolean enabledRo() {
                 return true;
             }
@@ -311,6 +325,10 @@
                 return getFlag(Flags.FLAG_DISABLED_RW);
             }
             @Override
+            public boolean enabledFixedRo() {
+                return getFlag(Flags.FLAG_ENABLED_FIXED_RO);
+            }
+            @Override
             public boolean enabledRo() {
                 return getFlag(Flags.FLAG_ENABLED_RO);
             }
@@ -341,6 +359,7 @@
             private HashMap<String, Boolean> mFlagMap = Stream.of(
                     Flags.FLAG_DISABLED_RO,
                     Flags.FLAG_DISABLED_RW,
+                    Flags.FLAG_ENABLED_FIXED_RO,
                     Flags.FLAG_ENABLED_RO,
                     Flags.FLAG_ENABLED_RW
                 )