aconfig: prototype AconfigFlagAccessor
Bug: n/a
Test: atest aconfig.test
Ignore-AOSP-First: need to submit with annotation change. will cherry pick to aosp.
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:c65c7c7f577f4140ff5632ce87a26dc98a75b8dc)
Merged-In: I62ea458c05fb61973705346c4313535f9b2291be
Change-Id: I62ea458c05fb61973705346c4313535f9b2291be
diff --git a/tools/aconfig/aconfig/src/codegen/java.rs b/tools/aconfig/aconfig/src/codegen/java.rs
index fab2fa3..920d5fa 100644
--- a/tools/aconfig/aconfig/src/codegen/java.rs
+++ b/tools/aconfig/aconfig/src/codegen/java.rs
@@ -180,27 +180,36 @@
import android.compat.annotation.UnsupportedAppUsage;
/** @hide */
public interface FeatureFlags {
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
boolean disabledRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
boolean disabledRw();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
boolean disabledRwExported();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
boolean disabledRwInOtherNamespace();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledFixedRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledFixedRoExported();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledRoExported();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
boolean enabledRw();
}
@@ -231,43 +240,52 @@
/** @hide */
public static final String FLAG_ENABLED_RW = "com.android.aconfig.test.enabled_rw";
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
public static boolean disabledRo() {
return FEATURE_FLAGS.disabledRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
public static boolean disabledRw() {
return FEATURE_FLAGS.disabledRw();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
public static boolean disabledRwExported() {
return FEATURE_FLAGS.disabledRwExported();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
public static boolean disabledRwInOtherNamespace() {
return FEATURE_FLAGS.disabledRwInOtherNamespace();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledFixedRo() {
return FEATURE_FLAGS.enabledFixedRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledFixedRoExported() {
return FEATURE_FLAGS.enabledFixedRoExported();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledRo() {
return FEATURE_FLAGS.enabledRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledRoExported() {
return FEATURE_FLAGS.enabledRoExported();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
public static boolean enabledRw() {
return FEATURE_FLAGS.enabledRw();
@@ -458,12 +476,13 @@
other_namespace_is_cached = true;
}
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRo() {
return false;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRw() {
@@ -472,6 +491,7 @@
}
return disabledRw;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRwExported() {
@@ -480,6 +500,7 @@
}
return disabledRwExported;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRwInOtherNamespace() {
@@ -488,26 +509,31 @@
}
return disabledRwInOtherNamespace;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledFixedRo() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledFixedRoExported() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRo() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRoExported() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRw() {
@@ -566,13 +592,15 @@
public static final String FLAG_ENABLED_FIXED_RO_EXPORTED = "com.android.aconfig.test.enabled_fixed_ro_exported";
/** @hide */
public static final String FLAG_ENABLED_RO_EXPORTED = "com.android.aconfig.test.enabled_ro_exported";
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
public static boolean disabledRwExported() {
return FEATURE_FLAGS.disabledRwExported();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
public static boolean enabledFixedRoExported() {
return FEATURE_FLAGS.enabledFixedRoExported();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
public static boolean enabledRoExported() {
return FEATURE_FLAGS.enabledRoExported();
}
@@ -584,8 +612,11 @@
package com.android.aconfig.test;
/** @hide */
public interface FeatureFlags {
+ @com.android.aconfig.annotations.AconfigFlagAccessor
boolean disabledRwExported();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
boolean enabledFixedRoExported();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
boolean enabledRoExported();
}
"#;
@@ -623,7 +654,7 @@
}
aconfig_test_is_cached = true;
}
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
public boolean disabledRwExported() {
if (!aconfig_test_is_cached) {
@@ -631,7 +662,7 @@
}
return disabledRwExported;
}
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
public boolean enabledFixedRoExported() {
if (!aconfig_test_is_cached) {
@@ -639,7 +670,7 @@
}
return enabledFixedRoExported;
}
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
public boolean enabledRoExported() {
if (!aconfig_test_is_cached) {
@@ -761,54 +792,63 @@
import android.compat.annotation.UnsupportedAppUsage;
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags {
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRo() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRw() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRwExported() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRwInOtherNamespace() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledFixedRo() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledFixedRoExported() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRo() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRoExported() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRw() {
@@ -861,21 +901,27 @@
import android.compat.annotation.UnsupportedAppUsage;
/** @hide */
public interface FeatureFlags {
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
boolean disabledRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
boolean disabledRw();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
boolean disabledRwInOtherNamespace();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledFixedRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledRw();
@@ -887,31 +933,37 @@
import android.compat.annotation.UnsupportedAppUsage;
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags {
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRo() {
return false;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRw() {
return false;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRwInOtherNamespace() {
return false;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledFixedRo() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRo() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRw() {
@@ -938,32 +990,37 @@
public static final String FLAG_ENABLED_RO = "com.android.aconfig.test.enabled_ro";
/** @hide */
public static final String FLAG_ENABLED_RW = "com.android.aconfig.test.enabled_rw";
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
public static boolean disabledRo() {
return FEATURE_FLAGS.disabledRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
public static boolean disabledRw() {
return FEATURE_FLAGS.disabledRw();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
public static boolean disabledRwInOtherNamespace() {
return FEATURE_FLAGS.disabledRwInOtherNamespace();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledFixedRo() {
return FEATURE_FLAGS.enabledFixedRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledRo() {
return FEATURE_FLAGS.enabledRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledRw() {
diff --git a/tools/aconfig/aconfig/templates/FeatureFlags.java.template b/tools/aconfig/aconfig/templates/FeatureFlags.java.template
index 13edcb4..b90b201 100644
--- a/tools/aconfig/aconfig/templates/FeatureFlags.java.template
+++ b/tools/aconfig/aconfig/templates/FeatureFlags.java.template
@@ -6,6 +6,7 @@
/** @hide */
public interface FeatureFlags \{
{{ for item in flag_elements }}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
{{ -if not item.is_read_write }}
{{ -if item.default_value }}
@com.android.aconfig.annotations.AssumeTrueForR8
diff --git a/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template b/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
index 12b2fc1..704f25b 100644
--- a/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
+++ b/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
@@ -45,6 +45,7 @@
{{ endfor- }}
{{ -endif }}{#- end of runtime_lookup_required #}
{{ -for flag in flag_elements }}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
{{ -if not library_exported }}
@UnsupportedAppUsage
@@ -66,6 +67,7 @@
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags \{
{{ for flag in flag_elements }}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
{{ -if not library_exported }}
@UnsupportedAppUsage
diff --git a/tools/aconfig/aconfig/templates/Flags.java.template b/tools/aconfig/aconfig/templates/Flags.java.template
index e105991..55db924 100644
--- a/tools/aconfig/aconfig/templates/Flags.java.template
+++ b/tools/aconfig/aconfig/templates/Flags.java.template
@@ -10,6 +10,7 @@
public static final String FLAG_{item.flag_name_constant_suffix} = "{item.device_config_flag}";
{{- endfor }}
{{ -for item in flag_elements}}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
{{ -if not item.is_read_write }}
{{ -if item.default_value }}
@com.android.aconfig.annotations.AssumeTrueForR8