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
This commit is contained in:
@@ -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()
|
||||
)
|
||||
|
Reference in New Issue
Block a user