Loading tools/aconfig/aconfig/Android.bp +5 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,10 @@ rust_defaults { cfgs: select(release_flag("RELEASE_ACONFIG_FINGERPRINT_RUST"), { true: ["enable_fingerprint_rust"], default: [], }) + select(release_flag("RELEASE_JARJAR_FLAGS_IN_FRAMEWORK"), { true: ["enable_jarjar_flags_in_framwork"], default: [], }), } Loading tools/aconfig/aconfig/Cargo.toml +6 −2 Original line number Diff line number Diff line Loading @@ -27,5 +27,9 @@ serde = { version = "1.0.152", features = ["derive"] } serde_json = "1.0.93" convert_finalized_flags = { path = "../convert_finalized_flags" } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(enable_fingerprint_rust)'] } [lints.rust.unexpected_cfgs] level = "warn" check-cfg = [ "cfg(enable_fingerprint_rust)", "cfg(enable_jarjar_flags_in_framwork)", ] tools/aconfig/aconfig/src/codegen/java.rs +45 −110 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ pub struct JavaCodegenConfig { pub package_fingerprint: u64, pub single_exported_file: bool, pub finalized_flags: FinalizedFlagMap, // whether add UnsupportedAppUsage(uau) anotation in the generated code pub support_uau_annotation: bool, } pub fn generate_java_code<I>( Loading Loading @@ -83,6 +85,7 @@ where package_fingerprint: format!("0x{:X}L", config.package_fingerprint), single_exported_file: config.single_exported_file, use_device_config, support_uau_annotation: config.support_uau_annotation, }; let mut template = TinyTemplate::new(); if library_exported && config.single_exported_file { Loading Loading @@ -161,6 +164,7 @@ struct Context { pub package_fingerprint: String, pub single_exported_file: bool, pub use_device_config: bool, pub support_uau_annotation: bool, } #[derive(Serialize, Debug)] Loading Loading @@ -290,49 +294,36 @@ mod tests { const EXPECTED_FEATUREFLAGS_COMMON_CONTENT: &str = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; /** @hide */ public interface FeatureFlags { @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @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.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledFixedRo(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledFixedRoExported(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledRo(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledRoExported(); @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledRw(); } "#; const EXPECTED_FLAG_COMMON_CONTENT: &str = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; /** @hide */ public final class Flags { /** @hide */ Loading @@ -356,51 +347,42 @@ mod tests { @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @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.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledFixedRo() { return FEATURE_FLAGS.enabledFixedRo(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledFixedRoExported() { return FEATURE_FLAGS.enabledFixedRoExported(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledRo() { return FEATURE_FLAGS.enabledRo(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledRoExported() { return FEATURE_FLAGS.enabledRoExported(); } @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledRw() { return FEATURE_FLAGS.enabledRw(); } Loading @@ -408,9 +390,6 @@ mod tests { const EXPECTED_CUSTOMFEATUREFLAGS_CONTENT: &str = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; import java.util.Arrays; import java.util.HashSet; import java.util.List; Loading @@ -428,55 +407,46 @@ mod tests { } @Override @UnsupportedAppUsage public boolean disabledRo() { return getValue(Flags.FLAG_DISABLED_RO, FeatureFlags::disabledRo); } @Override @UnsupportedAppUsage public boolean disabledRw() { return getValue(Flags.FLAG_DISABLED_RW, FeatureFlags::disabledRw); } @Override @UnsupportedAppUsage public boolean disabledRwExported() { return getValue(Flags.FLAG_DISABLED_RW_EXPORTED, FeatureFlags::disabledRwExported); } @Override @UnsupportedAppUsage public boolean disabledRwInOtherNamespace() { return getValue(Flags.FLAG_DISABLED_RW_IN_OTHER_NAMESPACE, FeatureFlags::disabledRwInOtherNamespace); } @Override @UnsupportedAppUsage public boolean enabledFixedRo() { return getValue(Flags.FLAG_ENABLED_FIXED_RO, FeatureFlags::enabledFixedRo); } @Override @UnsupportedAppUsage public boolean enabledFixedRoExported() { return getValue(Flags.FLAG_ENABLED_FIXED_RO_EXPORTED, FeatureFlags::enabledFixedRoExported); } @Override @UnsupportedAppUsage public boolean enabledRo() { return getValue(Flags.FLAG_ENABLED_RO, FeatureFlags::enabledRo); } @Override @UnsupportedAppUsage public boolean enabledRoExported() { return getValue(Flags.FLAG_ENABLED_RO_EXPORTED, FeatureFlags::enabledRoExported); } @Override @UnsupportedAppUsage public boolean enabledRw() { return getValue(Flags.FLAG_ENABLED_RW, FeatureFlags::enabledRw); Loading Loading @@ -592,6 +562,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags: FinalizedFlagMap::new(), support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading @@ -606,8 +577,6 @@ mod tests { let expected_featureflagsmpl_content = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; import android.os.flagging.PlatformAconfigPackageInternal; import android.util.Log; /** @hide */ Loading Loading @@ -637,13 +606,11 @@ mod tests { @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRo() { return false; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRw() { if (!isCached) { init(); Loading @@ -652,7 +619,6 @@ mod tests { } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRwExported() { if (!isCached) { init(); Loading @@ -661,7 +627,6 @@ mod tests { } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRwInOtherNamespace() { if (!isCached) { init(); Loading @@ -670,31 +635,26 @@ mod tests { } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledFixedRo() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledFixedRoExported() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledRo() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledRoExported() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledRw() { if (!isCached) { init(); Loading Loading @@ -750,6 +710,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags: FinalizedFlagMap::new(), support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading Loading @@ -968,6 +929,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags, support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading Loading @@ -1192,6 +1154,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags, support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading Loading @@ -1230,6 +1193,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags: FinalizedFlagMap::new(), support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading Loading @@ -1356,6 +1320,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags: FinalizedFlagMap::new(), support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading @@ -1365,75 +1330,59 @@ mod tests { .unwrap(); let expect_featureflags_content = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; /** @hide */ public interface FeatureFlags { @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean disabledRo(); @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean disabledRw(); @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean disabledRwInOtherNamespace(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledFixedRo(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledRo(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledRw(); }"#; let expect_featureflagsimpl_content = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; /** @hide */ public final class FeatureFlagsImpl implements FeatureFlags { @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRo() { return false; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRw() { return false; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRwInOtherNamespace() { return false; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledFixedRo() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledRo() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledRw() { return true; } Loading @@ -1442,8 +1391,6 @@ mod tests { let expect_flags_content = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; /** @hide */ public final class Flags { /** @hide */ Loading @@ -1460,37 +1407,31 @@ mod tests { public static final String FLAG_ENABLED_RW = "com.android.aconfig.test.enabled_rw"; @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean disabledRo() { return FEATURE_FLAGS.disabledRo(); } @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean disabledRw() { return FEATURE_FLAGS.disabledRw(); } @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean disabledRwInOtherNamespace() { return FEATURE_FLAGS.disabledRwInOtherNamespace(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledFixedRo() { return FEATURE_FLAGS.enabledFixedRo(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledRo() { return FEATURE_FLAGS.enabledRo(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledRw() { return FEATURE_FLAGS.enabledRw(); } Loading @@ -1500,8 +1441,6 @@ mod tests { let expect_customfeatureflags_content = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; import java.util.Arrays; import java.util.HashSet; import java.util.List; Loading @@ -1519,37 +1458,31 @@ mod tests { } @Override @UnsupportedAppUsage public boolean disabledRo() { return getValue(Flags.FLAG_DISABLED_RO, FeatureFlags::disabledRo); } @Override @UnsupportedAppUsage public boolean disabledRw() { return getValue(Flags.FLAG_DISABLED_RW, FeatureFlags::disabledRw); } @Override @UnsupportedAppUsage public boolean disabledRwInOtherNamespace() { return getValue(Flags.FLAG_DISABLED_RW_IN_OTHER_NAMESPACE, FeatureFlags::disabledRwInOtherNamespace); } @Override @UnsupportedAppUsage public boolean enabledFixedRo() { return getValue(Flags.FLAG_ENABLED_FIXED_RO, FeatureFlags::enabledFixedRo); } @Override @UnsupportedAppUsage public boolean enabledRo() { return getValue(Flags.FLAG_ENABLED_RO, FeatureFlags::enabledRo); } @Override @UnsupportedAppUsage public boolean enabledRw() { return getValue(Flags.FLAG_ENABLED_RW, FeatureFlags::enabledRw); Loading Loading @@ -1648,6 +1581,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: true, finalized_flags, support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading Loading @@ -1747,6 +1681,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags: FinalizedFlagMap::new(), support_uau_annotation: false, }; let error = generate_java_code( crate::test::TEST_PACKAGE, Loading tools/aconfig/aconfig/src/commands.rs +1 −0 Original line number Diff line number Diff line Loading @@ -261,6 +261,7 @@ pub fn create_java_lib( package_fingerprint, single_exported_file, finalized_flags, support_uau_annotation: !cfg!(enable_jarjar_flags_in_framwork), }; generate_java_code(&package, modified_parsed_flags.into_iter(), config) } Loading tools/aconfig/aconfig/templates/CustomFeatureFlags.java.template +3 −1 Original line number Diff line number Diff line package {package_name}; {{ if not library_exported- }} {{ if support_uau_annotation- }} // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; {{ -endif }} {{ -endif }} import java.util.Arrays; {{ -if library_exported }} import java.util.HashMap; Loading Loading @@ -35,7 +37,7 @@ public class CustomFeatureFlags implements FeatureFlags \{ {{ -for item in flag_elements}} @Override {{ if not library_exported }} @UnsupportedAppUsage{{ -endif }} {{ if not library_exported }}{{ if support_uau_annotation- }} @UnsupportedAppUsage{{ -endif }}{{ -endif }} public boolean {item.method_name}() \{ return getValue(Flags.FLAG_{item.flag_name_constant_suffix}, FeatureFlags::{item.method_name}); Loading Loading
tools/aconfig/aconfig/Android.bp +5 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,10 @@ rust_defaults { cfgs: select(release_flag("RELEASE_ACONFIG_FINGERPRINT_RUST"), { true: ["enable_fingerprint_rust"], default: [], }) + select(release_flag("RELEASE_JARJAR_FLAGS_IN_FRAMEWORK"), { true: ["enable_jarjar_flags_in_framwork"], default: [], }), } Loading
tools/aconfig/aconfig/Cargo.toml +6 −2 Original line number Diff line number Diff line Loading @@ -27,5 +27,9 @@ serde = { version = "1.0.152", features = ["derive"] } serde_json = "1.0.93" convert_finalized_flags = { path = "../convert_finalized_flags" } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(enable_fingerprint_rust)'] } [lints.rust.unexpected_cfgs] level = "warn" check-cfg = [ "cfg(enable_fingerprint_rust)", "cfg(enable_jarjar_flags_in_framwork)", ]
tools/aconfig/aconfig/src/codegen/java.rs +45 −110 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ pub struct JavaCodegenConfig { pub package_fingerprint: u64, pub single_exported_file: bool, pub finalized_flags: FinalizedFlagMap, // whether add UnsupportedAppUsage(uau) anotation in the generated code pub support_uau_annotation: bool, } pub fn generate_java_code<I>( Loading Loading @@ -83,6 +85,7 @@ where package_fingerprint: format!("0x{:X}L", config.package_fingerprint), single_exported_file: config.single_exported_file, use_device_config, support_uau_annotation: config.support_uau_annotation, }; let mut template = TinyTemplate::new(); if library_exported && config.single_exported_file { Loading Loading @@ -161,6 +164,7 @@ struct Context { pub package_fingerprint: String, pub single_exported_file: bool, pub use_device_config: bool, pub support_uau_annotation: bool, } #[derive(Serialize, Debug)] Loading Loading @@ -290,49 +294,36 @@ mod tests { const EXPECTED_FEATUREFLAGS_COMMON_CONTENT: &str = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; /** @hide */ public interface FeatureFlags { @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @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.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledFixedRo(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledFixedRoExported(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledRo(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledRoExported(); @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledRw(); } "#; const EXPECTED_FLAG_COMMON_CONTENT: &str = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; /** @hide */ public final class Flags { /** @hide */ Loading @@ -356,51 +347,42 @@ mod tests { @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @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.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledFixedRo() { return FEATURE_FLAGS.enabledFixedRo(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledFixedRoExported() { return FEATURE_FLAGS.enabledFixedRoExported(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledRo() { return FEATURE_FLAGS.enabledRo(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledRoExported() { return FEATURE_FLAGS.enabledRoExported(); } @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledRw() { return FEATURE_FLAGS.enabledRw(); } Loading @@ -408,9 +390,6 @@ mod tests { const EXPECTED_CUSTOMFEATUREFLAGS_CONTENT: &str = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; import java.util.Arrays; import java.util.HashSet; import java.util.List; Loading @@ -428,55 +407,46 @@ mod tests { } @Override @UnsupportedAppUsage public boolean disabledRo() { return getValue(Flags.FLAG_DISABLED_RO, FeatureFlags::disabledRo); } @Override @UnsupportedAppUsage public boolean disabledRw() { return getValue(Flags.FLAG_DISABLED_RW, FeatureFlags::disabledRw); } @Override @UnsupportedAppUsage public boolean disabledRwExported() { return getValue(Flags.FLAG_DISABLED_RW_EXPORTED, FeatureFlags::disabledRwExported); } @Override @UnsupportedAppUsage public boolean disabledRwInOtherNamespace() { return getValue(Flags.FLAG_DISABLED_RW_IN_OTHER_NAMESPACE, FeatureFlags::disabledRwInOtherNamespace); } @Override @UnsupportedAppUsage public boolean enabledFixedRo() { return getValue(Flags.FLAG_ENABLED_FIXED_RO, FeatureFlags::enabledFixedRo); } @Override @UnsupportedAppUsage public boolean enabledFixedRoExported() { return getValue(Flags.FLAG_ENABLED_FIXED_RO_EXPORTED, FeatureFlags::enabledFixedRoExported); } @Override @UnsupportedAppUsage public boolean enabledRo() { return getValue(Flags.FLAG_ENABLED_RO, FeatureFlags::enabledRo); } @Override @UnsupportedAppUsage public boolean enabledRoExported() { return getValue(Flags.FLAG_ENABLED_RO_EXPORTED, FeatureFlags::enabledRoExported); } @Override @UnsupportedAppUsage public boolean enabledRw() { return getValue(Flags.FLAG_ENABLED_RW, FeatureFlags::enabledRw); Loading Loading @@ -592,6 +562,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags: FinalizedFlagMap::new(), support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading @@ -606,8 +577,6 @@ mod tests { let expected_featureflagsmpl_content = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; import android.os.flagging.PlatformAconfigPackageInternal; import android.util.Log; /** @hide */ Loading Loading @@ -637,13 +606,11 @@ mod tests { @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRo() { return false; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRw() { if (!isCached) { init(); Loading @@ -652,7 +619,6 @@ mod tests { } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRwExported() { if (!isCached) { init(); Loading @@ -661,7 +627,6 @@ mod tests { } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRwInOtherNamespace() { if (!isCached) { init(); Loading @@ -670,31 +635,26 @@ mod tests { } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledFixedRo() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledFixedRoExported() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledRo() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledRoExported() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledRw() { if (!isCached) { init(); Loading Loading @@ -750,6 +710,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags: FinalizedFlagMap::new(), support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading Loading @@ -968,6 +929,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags, support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading Loading @@ -1192,6 +1154,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags, support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading Loading @@ -1230,6 +1193,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags: FinalizedFlagMap::new(), support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading Loading @@ -1356,6 +1320,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags: FinalizedFlagMap::new(), support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading @@ -1365,75 +1330,59 @@ mod tests { .unwrap(); let expect_featureflags_content = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; /** @hide */ public interface FeatureFlags { @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean disabledRo(); @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean disabledRw(); @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean disabledRwInOtherNamespace(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledFixedRo(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledRo(); @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage boolean enabledRw(); }"#; let expect_featureflagsimpl_content = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; /** @hide */ public final class FeatureFlagsImpl implements FeatureFlags { @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRo() { return false; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRw() { return false; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean disabledRwInOtherNamespace() { return false; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledFixedRo() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledRo() { return true; } @Override @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public boolean enabledRw() { return true; } Loading @@ -1442,8 +1391,6 @@ mod tests { let expect_flags_content = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; /** @hide */ public final class Flags { /** @hide */ Loading @@ -1460,37 +1407,31 @@ mod tests { public static final String FLAG_ENABLED_RW = "com.android.aconfig.test.enabled_rw"; @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean disabledRo() { return FEATURE_FLAGS.disabledRo(); } @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean disabledRw() { return FEATURE_FLAGS.disabledRw(); } @com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean disabledRwInOtherNamespace() { return FEATURE_FLAGS.disabledRwInOtherNamespace(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledFixedRo() { return FEATURE_FLAGS.enabledFixedRo(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledRo() { return FEATURE_FLAGS.enabledRo(); } @com.android.aconfig.annotations.AssumeTrueForR8 @com.android.aconfig.annotations.AconfigFlagAccessor @UnsupportedAppUsage public static boolean enabledRw() { return FEATURE_FLAGS.enabledRw(); } Loading @@ -1500,8 +1441,6 @@ mod tests { let expect_customfeatureflags_content = r#" package com.android.aconfig.test; // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; import java.util.Arrays; import java.util.HashSet; import java.util.List; Loading @@ -1519,37 +1458,31 @@ mod tests { } @Override @UnsupportedAppUsage public boolean disabledRo() { return getValue(Flags.FLAG_DISABLED_RO, FeatureFlags::disabledRo); } @Override @UnsupportedAppUsage public boolean disabledRw() { return getValue(Flags.FLAG_DISABLED_RW, FeatureFlags::disabledRw); } @Override @UnsupportedAppUsage public boolean disabledRwInOtherNamespace() { return getValue(Flags.FLAG_DISABLED_RW_IN_OTHER_NAMESPACE, FeatureFlags::disabledRwInOtherNamespace); } @Override @UnsupportedAppUsage public boolean enabledFixedRo() { return getValue(Flags.FLAG_ENABLED_FIXED_RO, FeatureFlags::enabledFixedRo); } @Override @UnsupportedAppUsage public boolean enabledRo() { return getValue(Flags.FLAG_ENABLED_RO, FeatureFlags::enabledRo); } @Override @UnsupportedAppUsage public boolean enabledRw() { return getValue(Flags.FLAG_ENABLED_RW, FeatureFlags::enabledRw); Loading Loading @@ -1648,6 +1581,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: true, finalized_flags, support_uau_annotation: false, }; let generated_files = generate_java_code( crate::test::TEST_PACKAGE, Loading Loading @@ -1747,6 +1681,7 @@ mod tests { package_fingerprint: 5801144784618221668, single_exported_file: false, finalized_flags: FinalizedFlagMap::new(), support_uau_annotation: false, }; let error = generate_java_code( crate::test::TEST_PACKAGE, Loading
tools/aconfig/aconfig/src/commands.rs +1 −0 Original line number Diff line number Diff line Loading @@ -261,6 +261,7 @@ pub fn create_java_lib( package_fingerprint, single_exported_file, finalized_flags, support_uau_annotation: !cfg!(enable_jarjar_flags_in_framwork), }; generate_java_code(&package, modified_parsed_flags.into_iter(), config) } Loading
tools/aconfig/aconfig/templates/CustomFeatureFlags.java.template +3 −1 Original line number Diff line number Diff line package {package_name}; {{ if not library_exported- }} {{ if support_uau_annotation- }} // TODO(b/303773055): Remove the annotation after access issue is resolved. import android.compat.annotation.UnsupportedAppUsage; {{ -endif }} {{ -endif }} import java.util.Arrays; {{ -if library_exported }} import java.util.HashMap; Loading Loading @@ -35,7 +37,7 @@ public class CustomFeatureFlags implements FeatureFlags \{ {{ -for item in flag_elements}} @Override {{ if not library_exported }} @UnsupportedAppUsage{{ -endif }} {{ if not library_exported }}{{ if support_uau_annotation- }} @UnsupportedAppUsage{{ -endif }}{{ -endif }} public boolean {item.method_name}() \{ return getValue(Flags.FLAG_{item.flag_name_constant_suffix}, FeatureFlags::{item.method_name}); Loading