aconfig: add new testing flag enabled_fixed_ro_exported

This commit adds a new testing flag enabled_fixed_ro_exported to test
the case of a exported and fixed_read_only flag.

Test: atest aconfig.test aconfig.test.java AconfigJavaHostTest
aconfig.test.cpp aconfig.test.cpp.test_mode aconfig.prod_mode.test.rust
Bug: 316357680

Change-Id: Iaedb8a6875166c6a6d24c7c3deee701a496b4964
This commit is contained in:
Zhi Dou
2023-12-15 22:48:16 +00:00
parent c1d0a14b69
commit b52465da31
8 changed files with 231 additions and 11 deletions

View File

@@ -153,6 +153,10 @@ mod tests {
#define COM_ANDROID_ACONFIG_TEST_ENABLED_FIXED_RO true
#endif
#ifndef COM_ANDROID_ACONFIG_TEST_ENABLED_FIXED_RO_EXPORTED
#define COM_ANDROID_ACONFIG_TEST_ENABLED_FIXED_RO_EXPORTED true
#endif
#ifdef __cplusplus
#include <memory>
@@ -173,6 +177,8 @@ public:
virtual bool enabled_fixed_ro() = 0;
virtual bool enabled_fixed_ro_exported() = 0;
virtual bool enabled_ro() = 0;
virtual bool enabled_ro_exported() = 0;
@@ -202,6 +208,10 @@ inline bool enabled_fixed_ro() {
return COM_ANDROID_ACONFIG_TEST_ENABLED_FIXED_RO;
}
inline bool enabled_fixed_ro_exported() {
return COM_ANDROID_ACONFIG_TEST_ENABLED_FIXED_RO_EXPORTED;
}
inline bool enabled_ro() {
return true;
}
@@ -229,6 +239,8 @@ bool com_android_aconfig_test_disabled_rw_in_other_namespace();
bool com_android_aconfig_test_enabled_fixed_ro();
bool com_android_aconfig_test_enabled_fixed_ro_exported();
bool com_android_aconfig_test_enabled_ro();
bool com_android_aconfig_test_enabled_ro_exported();
@@ -274,6 +286,10 @@ public:
virtual void enabled_fixed_ro(bool val) = 0;
virtual bool enabled_fixed_ro_exported() = 0;
virtual void enabled_fixed_ro_exported(bool val) = 0;
virtual bool enabled_ro() = 0;
virtual void enabled_ro(bool val) = 0;
@@ -331,6 +347,14 @@ inline void enabled_fixed_ro(bool val) {
provider_->enabled_fixed_ro(val);
}
inline bool enabled_fixed_ro_exported() {
return provider_->enabled_fixed_ro_exported();
}
inline void enabled_fixed_ro_exported(bool val) {
provider_->enabled_fixed_ro_exported(val);
}
inline bool enabled_ro() {
return provider_->enabled_ro();
}
@@ -384,6 +408,10 @@ bool com_android_aconfig_test_enabled_fixed_ro();
void set_com_android_aconfig_test_enabled_fixed_ro(bool val);
bool com_android_aconfig_test_enabled_fixed_ro_exported();
void set_com_android_aconfig_test_enabled_fixed_ro_exported(bool val);
bool com_android_aconfig_test_enabled_ro();
void set_com_android_aconfig_test_enabled_ro(bool val);
@@ -421,6 +449,8 @@ public:
virtual bool disabled_rw_exported() = 0;
virtual bool enabled_fixed_ro_exported() = 0;
virtual bool enabled_ro_exported() = 0;
};
@@ -430,6 +460,10 @@ inline bool disabled_rw_exported() {
return provider_->disabled_rw_exported();
}
inline bool enabled_fixed_ro_exported() {
return provider_->enabled_fixed_ro_exported();
}
inline bool enabled_ro_exported() {
return provider_->enabled_ro_exported();
}
@@ -441,6 +475,8 @@ extern "C" {
bool com_android_aconfig_test_disabled_rw_exported();
bool com_android_aconfig_test_enabled_fixed_ro_exported();
bool com_android_aconfig_test_enabled_ro_exported();
#ifdef __cplusplus
@@ -496,6 +532,10 @@ namespace com::android::aconfig::test {
return COM_ANDROID_ACONFIG_TEST_ENABLED_FIXED_RO;
}
virtual bool enabled_fixed_ro_exported() override {
return COM_ANDROID_ACONFIG_TEST_ENABLED_FIXED_RO_EXPORTED;
}
virtual bool enabled_ro() override {
return true;
}
@@ -542,6 +582,10 @@ bool com_android_aconfig_test_enabled_fixed_ro() {
return COM_ANDROID_ACONFIG_TEST_ENABLED_FIXED_RO;
}
bool com_android_aconfig_test_enabled_fixed_ro_exported() {
return COM_ANDROID_ACONFIG_TEST_ENABLED_FIXED_RO_EXPORTED;
}
bool com_android_aconfig_test_enabled_ro() {
return true;
}
@@ -647,6 +691,19 @@ namespace com::android::aconfig::test {
overrides_["enabled_fixed_ro"] = val;
}
virtual bool enabled_fixed_ro_exported() override {
auto it = overrides_.find("enabled_fixed_ro_exported");
if (it != overrides_.end()) {
return it->second;
} else {
return true;
}
}
virtual void enabled_fixed_ro_exported(bool val) override {
overrides_["enabled_fixed_ro_exported"] = val;
}
virtual bool enabled_ro() override {
auto it = overrides_.find("enabled_ro");
if (it != overrides_.end()) {
@@ -743,6 +800,13 @@ void set_com_android_aconfig_test_enabled_fixed_ro(bool val) {
com::android::aconfig::test::enabled_fixed_ro(val);
}
bool com_android_aconfig_test_enabled_fixed_ro_exported() {
return com::android::aconfig::test::enabled_fixed_ro_exported();
}
void set_com_android_aconfig_test_enabled_fixed_ro_exported(bool val) {
com::android::aconfig::test::enabled_fixed_ro_exported(val);
}
bool com_android_aconfig_test_enabled_ro() {
return com::android::aconfig::test::enabled_ro();
@@ -798,19 +862,28 @@ namespace com::android::aconfig::test {
return cache_[0];
}
virtual bool enabled_ro_exported() override {
virtual bool enabled_fixed_ro_exported() override {
if (cache_[1] == -1) {
cache_[1] = server_configurable_flags::GetServerConfigurableFlag(
"aconfig_flags.aconfig_test",
"com.android.aconfig.test.enabled_ro_exported",
"com.android.aconfig.test.enabled_fixed_ro_exported",
"false") == "true";
}
return cache_[1];
}
virtual bool enabled_ro_exported() override {
if (cache_[2] == -1) {
cache_[2] = server_configurable_flags::GetServerConfigurableFlag(
"aconfig_flags.aconfig_test",
"com.android.aconfig.test.enabled_ro_exported",
"false") == "true";
}
return cache_[2];
}
private:
std::vector<int8_t> cache_ = std::vector<int8_t>(2, -1);
std::vector<int8_t> cache_ = std::vector<int8_t>(3, -1);
};
std::unique_ptr<flag_provider_interface> provider_ =
@@ -821,6 +894,10 @@ bool com_android_aconfig_test_disabled_rw_exported() {
return com::android::aconfig::test::disabled_rw_exported();
}
bool com_android_aconfig_test_enabled_fixed_ro_exported() {
return com::android::aconfig::test::enabled_fixed_ro_exported();
}
bool com_android_aconfig_test_enabled_ro_exported() {
return com::android::aconfig::test::enabled_ro_exported();
}