diff options
author | 2023-11-29 15:44:24 +0000 | |
---|---|---|
committer | 2023-11-29 15:44:24 +0000 | |
commit | 4a6af78b6905b90549686b0a107c80ea8533f76c (patch) | |
tree | 2b59669e4630a3643335d8529256a476bc0e6c34 /tools/aconfig/src/codegen_cpp.rs | |
parent | 53084d3f9177a5f07eb7446a56759ae18497b575 (diff) |
aconfig: Add exported mode to aconfig Java library generation.
This commit adds a third codegen mode, _exported_, in addition to
the existing modes, production and test.
When codegen mode is _exported_, getters are generated _only_ for
flags marked as exported as well. Also the getters always look
up DeviceConfig values at runtime, and have a default value of
false.
This only implements exported mode for Java codegen, follow-up CLs
will support Rust and C++.
Test: atest aconfig.test
Bug: 311152507
Change-Id: Ie39379b40de072180e05d84c76361b24cc0e0d83
Diffstat (limited to 'tools/aconfig/src/codegen_cpp.rs')
-rw-r--r-- | tools/aconfig/src/codegen_cpp.rs | 81 |
1 files changed, 74 insertions, 7 deletions
diff --git a/tools/aconfig/src/codegen_cpp.rs b/tools/aconfig/src/codegen_cpp.rs index 5aa373aab9..c536260042 100644 --- a/tools/aconfig/src/codegen_cpp.rs +++ b/tools/aconfig/src/codegen_cpp.rs @@ -162,6 +162,8 @@ public: virtual bool disabled_rw() = 0; + virtual bool disabled_rw_exported() = 0; + virtual bool disabled_rw_in_other_namespace() = 0; virtual bool enabled_fixed_ro() = 0; @@ -181,6 +183,10 @@ inline bool disabled_rw() { return provider_->disabled_rw(); } +inline bool disabled_rw_exported() { + return provider_->disabled_rw_exported(); +} + inline bool disabled_rw_in_other_namespace() { return provider_->disabled_rw_in_other_namespace(); } @@ -206,6 +212,8 @@ bool com_android_aconfig_test_disabled_ro(); bool com_android_aconfig_test_disabled_rw(); +bool com_android_aconfig_test_disabled_rw_exported(); + bool com_android_aconfig_test_disabled_rw_in_other_namespace(); bool com_android_aconfig_test_enabled_fixed_ro(); @@ -241,6 +249,10 @@ public: virtual void disabled_rw(bool val) = 0; + virtual bool disabled_rw_exported() = 0; + + virtual void disabled_rw_exported(bool val) = 0; + virtual bool disabled_rw_in_other_namespace() = 0; virtual void disabled_rw_in_other_namespace(bool val) = 0; @@ -278,6 +290,14 @@ inline void disabled_rw(bool val) { provider_->disabled_rw(val); } +inline bool disabled_rw_exported() { + return provider_->disabled_rw_exported(); +} + +inline void disabled_rw_exported(bool val) { + provider_->disabled_rw_exported(val); +} + inline bool disabled_rw_in_other_namespace() { return provider_->disabled_rw_in_other_namespace(); } @@ -327,6 +347,10 @@ bool com_android_aconfig_test_disabled_rw(); void set_com_android_aconfig_test_disabled_rw(bool val); +bool com_android_aconfig_test_disabled_rw_exported(); + +void set_com_android_aconfig_test_disabled_rw_exported(bool val); + bool com_android_aconfig_test_disabled_rw_in_other_namespace(); void set_com_android_aconfig_test_disabled_rw_in_other_namespace(bool val); @@ -377,14 +401,24 @@ namespace com::android::aconfig::test { return cache_[0]; } - virtual bool disabled_rw_in_other_namespace() override { + virtual bool disabled_rw_exported() override { if (cache_[1] == -1) { cache_[1] = server_configurable_flags::GetServerConfigurableFlag( + "aconfig_flags.aconfig_test", + "com.android.aconfig.test.disabled_rw_exported", + "false") == "true"; + } + return cache_[1]; + } + + virtual bool disabled_rw_in_other_namespace() override { + if (cache_[2] == -1) { + cache_[2] = server_configurable_flags::GetServerConfigurableFlag( "aconfig_flags.other_namespace", "com.android.aconfig.test.disabled_rw_in_other_namespace", "false") == "true"; } - return cache_[1]; + return cache_[2]; } virtual bool enabled_fixed_ro() override { @@ -396,17 +430,17 @@ namespace com::android::aconfig::test { } virtual bool enabled_rw() override { - if (cache_[2] == -1) { - cache_[2] = server_configurable_flags::GetServerConfigurableFlag( + if (cache_[3] == -1) { + cache_[3] = server_configurable_flags::GetServerConfigurableFlag( "aconfig_flags.aconfig_test", "com.android.aconfig.test.enabled_rw", "true") == "true"; } - return cache_[2]; + return cache_[3]; } private: - std::vector<int8_t> cache_ = std::vector<int8_t>(3, -1); + std::vector<int8_t> cache_ = std::vector<int8_t>(4, -1); }; std::unique_ptr<flag_provider_interface> provider_ = @@ -421,6 +455,10 @@ bool com_android_aconfig_test_disabled_rw() { return com::android::aconfig::test::disabled_rw(); } +bool com_android_aconfig_test_disabled_rw_exported() { + return com::android::aconfig::test::disabled_rw_exported(); +} + bool com_android_aconfig_test_disabled_rw_in_other_namespace() { return com::android::aconfig::test::disabled_rw_in_other_namespace(); } @@ -485,6 +523,22 @@ namespace com::android::aconfig::test { overrides_["disabled_rw"] = val; } + virtual bool disabled_rw_exported() override { + auto it = overrides_.find("disabled_rw_exported"); + if (it != overrides_.end()) { + return it->second; + } else { + return server_configurable_flags::GetServerConfigurableFlag( + "aconfig_flags.aconfig_test", + "com.android.aconfig.test.disabled_rw_exported", + "false") == "true"; + } + } + + virtual void disabled_rw_exported(bool val) override { + overrides_["disabled_rw_exported"] = val; + } + virtual bool disabled_rw_in_other_namespace() override { auto it = overrides_.find("disabled_rw_in_other_namespace"); if (it != overrides_.end()) { @@ -570,11 +624,20 @@ void set_com_android_aconfig_test_disabled_rw(bool val) { com::android::aconfig::test::disabled_rw(val); } + +bool com_android_aconfig_test_disabled_rw_exported() { + return com::android::aconfig::test::disabled_rw_exported(); +} + +void set_com_android_aconfig_test_disabled_rw_exported(bool val) { + com::android::aconfig::test::disabled_rw_exported(val); +} + + bool com_android_aconfig_test_disabled_rw_in_other_namespace() { return com::android::aconfig::test::disabled_rw_in_other_namespace(); } - void set_com_android_aconfig_test_disabled_rw_in_other_namespace(bool val) { com::android::aconfig::test::disabled_rw_in_other_namespace(val); } @@ -634,6 +697,8 @@ void com_android_aconfig_test_reset_flags() { match mode { CodegenMode::Production => EXPORTED_PROD_HEADER_EXPECTED, CodegenMode::Test => EXPORTED_TEST_HEADER_EXPECTED, + CodegenMode::Exported => + todo!("exported mode not yet supported for cpp, see b/313894653."), }, generated_files_map.get(&target_file_path).unwrap() ) @@ -647,6 +712,8 @@ void com_android_aconfig_test_reset_flags() { match mode { CodegenMode::Production => PROD_SOURCE_FILE_EXPECTED, CodegenMode::Test => TEST_SOURCE_FILE_EXPECTED, + CodegenMode::Exported => + todo!("exported mode not yet supported for cpp, see b/313894653."), }, generated_files_map.get(&target_file_path).unwrap() ) |