Merge "aconfig: Respect flag naming convention on test flags" into main
This commit is contained in:
@@ -170,6 +170,8 @@ public:
|
||||
|
||||
virtual bool enabled_ro() = 0;
|
||||
|
||||
virtual bool enabled_ro_exported() = 0;
|
||||
|
||||
virtual bool enabled_rw() = 0;
|
||||
};
|
||||
|
||||
@@ -199,6 +201,10 @@ inline bool enabled_ro() {
|
||||
return true;
|
||||
}
|
||||
|
||||
inline bool enabled_ro_exported() {
|
||||
return true;
|
||||
}
|
||||
|
||||
inline bool enabled_rw() {
|
||||
return provider_->enabled_rw();
|
||||
}
|
||||
@@ -220,6 +226,8 @@ bool com_android_aconfig_test_enabled_fixed_ro();
|
||||
|
||||
bool com_android_aconfig_test_enabled_ro();
|
||||
|
||||
bool com_android_aconfig_test_enabled_ro_exported();
|
||||
|
||||
bool com_android_aconfig_test_enabled_rw();
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -265,6 +273,10 @@ public:
|
||||
|
||||
virtual void enabled_ro(bool val) = 0;
|
||||
|
||||
virtual bool enabled_ro_exported() = 0;
|
||||
|
||||
virtual void enabled_ro_exported(bool val) = 0;
|
||||
|
||||
virtual bool enabled_rw() = 0;
|
||||
|
||||
virtual void enabled_rw(bool val) = 0;
|
||||
@@ -322,6 +334,14 @@ inline void enabled_ro(bool val) {
|
||||
provider_->enabled_ro(val);
|
||||
}
|
||||
|
||||
inline bool enabled_ro_exported() {
|
||||
return provider_->enabled_ro_exported();
|
||||
}
|
||||
|
||||
inline void enabled_ro_exported(bool val) {
|
||||
provider_->enabled_ro_exported(val);
|
||||
}
|
||||
|
||||
inline bool enabled_rw() {
|
||||
return provider_->enabled_rw();
|
||||
}
|
||||
@@ -363,6 +383,10 @@ bool com_android_aconfig_test_enabled_ro();
|
||||
|
||||
void set_com_android_aconfig_test_enabled_ro(bool val);
|
||||
|
||||
bool com_android_aconfig_test_enabled_ro_exported();
|
||||
|
||||
void set_com_android_aconfig_test_enabled_ro_exported(bool val);
|
||||
|
||||
bool com_android_aconfig_test_enabled_rw();
|
||||
|
||||
void set_com_android_aconfig_test_enabled_rw(bool val);
|
||||
@@ -429,6 +453,10 @@ namespace com::android::aconfig::test {
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool enabled_ro_exported() override {
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool enabled_rw() override {
|
||||
if (cache_[3] == -1) {
|
||||
cache_[3] = server_configurable_flags::GetServerConfigurableFlag(
|
||||
@@ -471,6 +499,10 @@ bool com_android_aconfig_test_enabled_ro() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool com_android_aconfig_test_enabled_ro_exported() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool com_android_aconfig_test_enabled_rw() {
|
||||
return com::android::aconfig::test::enabled_rw();
|
||||
}
|
||||
@@ -581,6 +613,19 @@ namespace com::android::aconfig::test {
|
||||
overrides_["enabled_ro"] = val;
|
||||
}
|
||||
|
||||
virtual bool enabled_ro_exported() override {
|
||||
auto it = overrides_.find("enabled_ro_exported");
|
||||
if (it != overrides_.end()) {
|
||||
return it->second;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
virtual void enabled_ro_exported(bool val) override {
|
||||
overrides_["enabled_ro_exported"] = val;
|
||||
}
|
||||
|
||||
virtual bool enabled_rw() override {
|
||||
auto it = overrides_.find("enabled_rw");
|
||||
if (it != overrides_.end()) {
|
||||
@@ -661,6 +706,17 @@ void set_com_android_aconfig_test_enabled_ro(bool val) {
|
||||
com::android::aconfig::test::enabled_ro(val);
|
||||
}
|
||||
|
||||
|
||||
bool com_android_aconfig_test_enabled_ro_exported() {
|
||||
return com::android::aconfig::test::enabled_ro_exported();
|
||||
}
|
||||
|
||||
|
||||
void set_com_android_aconfig_test_enabled_ro_exported(bool val) {
|
||||
com::android::aconfig::test::enabled_ro_exported(val);
|
||||
}
|
||||
|
||||
|
||||
bool com_android_aconfig_test_enabled_rw() {
|
||||
return com::android::aconfig::test::enabled_rw();
|
||||
}
|
||||
|
@@ -193,6 +193,9 @@ mod tests {
|
||||
@com.android.aconfig.annotations.AssumeTrueForR8
|
||||
@UnsupportedAppUsage
|
||||
boolean enabledRo();
|
||||
@com.android.aconfig.annotations.AssumeTrueForR8
|
||||
@UnsupportedAppUsage
|
||||
boolean enabledRoExported();
|
||||
@UnsupportedAppUsage
|
||||
boolean enabledRw();
|
||||
}
|
||||
@@ -217,6 +220,8 @@ mod tests {
|
||||
/** @hide */
|
||||
public static final String FLAG_ENABLED_RO = "com.android.aconfig.test.enabled_ro";
|
||||
/** @hide */
|
||||
public static final String FLAG_ENABLED_RO_EXPORTED = "com.android.aconfig.test.enabled_ro_exported";
|
||||
/** @hide */
|
||||
public static final String FLAG_ENABLED_RW = "com.android.aconfig.test.enabled_rw";
|
||||
|
||||
@com.android.aconfig.annotations.AssumeFalseForR8
|
||||
@@ -246,6 +251,11 @@ mod tests {
|
||||
public static boolean enabledRo() {
|
||||
return FEATURE_FLAGS.enabledRo();
|
||||
}
|
||||
@com.android.aconfig.annotations.AssumeTrueForR8
|
||||
@UnsupportedAppUsage
|
||||
public static boolean enabledRoExported() {
|
||||
return FEATURE_FLAGS.enabledRoExported();
|
||||
}
|
||||
@UnsupportedAppUsage
|
||||
public static boolean enabledRw() {
|
||||
return FEATURE_FLAGS.enabledRw();
|
||||
@@ -295,6 +305,11 @@ mod tests {
|
||||
}
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean enabledRoExported() {
|
||||
return getValue(Flags.FLAG_ENABLED_RO_EXPORTED);
|
||||
}
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean enabledRw() {
|
||||
return getValue(Flags.FLAG_ENABLED_RW);
|
||||
}
|
||||
@@ -324,6 +339,7 @@ mod tests {
|
||||
Map.entry(Flags.FLAG_DISABLED_RW_IN_OTHER_NAMESPACE, false),
|
||||
Map.entry(Flags.FLAG_ENABLED_FIXED_RO, false),
|
||||
Map.entry(Flags.FLAG_ENABLED_RO, false),
|
||||
Map.entry(Flags.FLAG_ENABLED_RO_EXPORTED, false),
|
||||
Map.entry(Flags.FLAG_ENABLED_RW, false)
|
||||
)
|
||||
);
|
||||
@@ -442,6 +458,11 @@ mod tests {
|
||||
}
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean enabledRoExported() {
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean enabledRw() {
|
||||
if (!aconfig_test_is_cached) {
|
||||
load_overrides_aconfig_test();
|
||||
@@ -494,19 +515,19 @@ mod tests {
|
||||
import android.compat.annotation.UnsupportedAppUsage;
|
||||
/** @hide */
|
||||
public final class Flags {
|
||||
/** @hide */
|
||||
public static final String FLAG_DISABLED_RW = "com.android.aconfig.test.disabled_rw";
|
||||
/** @hide */
|
||||
public static final String FLAG_DISABLED_RW_EXPORTED = "com.android.aconfig.test.disabled_rw_exported";
|
||||
/** @hide */
|
||||
public static final String FLAG_ENABLED_RO_EXPORTED = "com.android.aconfig.test.enabled_ro_exported";
|
||||
|
||||
@UnsupportedAppUsage
|
||||
public static boolean disabledRw() {
|
||||
return FEATURE_FLAGS.disabledRw();
|
||||
}
|
||||
@UnsupportedAppUsage
|
||||
public static boolean disabledRwExported() {
|
||||
return FEATURE_FLAGS.disabledRwExported();
|
||||
}
|
||||
@UnsupportedAppUsage
|
||||
public static boolean enabledRoExported() {
|
||||
return FEATURE_FLAGS.enabledRoExported();
|
||||
}
|
||||
private static FeatureFlags FEATURE_FLAGS = new FeatureFlagsImpl();
|
||||
}
|
||||
"#;
|
||||
@@ -517,10 +538,10 @@ mod tests {
|
||||
import android.compat.annotation.UnsupportedAppUsage;
|
||||
/** @hide */
|
||||
public interface FeatureFlags {
|
||||
@UnsupportedAppUsage
|
||||
boolean disabledRw();
|
||||
@UnsupportedAppUsage
|
||||
boolean disabledRwExported();
|
||||
@UnsupportedAppUsage
|
||||
boolean enabledRoExported();
|
||||
}
|
||||
"#;
|
||||
|
||||
@@ -534,17 +555,17 @@ mod tests {
|
||||
public final class FeatureFlagsImpl implements FeatureFlags {
|
||||
private static boolean aconfig_test_is_cached = false;
|
||||
private static boolean other_namespace_is_cached = false;
|
||||
private static boolean disabledRw = false;
|
||||
private static boolean disabledRwExported = false;
|
||||
private static boolean enabledRoExported = false;
|
||||
|
||||
|
||||
private void load_overrides_aconfig_test() {
|
||||
try {
|
||||
Properties properties = DeviceConfig.getProperties("aconfig_test");
|
||||
disabledRw =
|
||||
properties.getBoolean("com.android.aconfig.test.disabled_rw", false);
|
||||
disabledRwExported =
|
||||
properties.getBoolean("com.android.aconfig.test.disabled_rw_exported", false);
|
||||
enabledRoExported =
|
||||
properties.getBoolean("com.android.aconfig.test.enabled_ro_exported", false);
|
||||
} catch (NullPointerException e) {
|
||||
throw new RuntimeException(
|
||||
"Cannot read value from namespace aconfig_test "
|
||||
@@ -574,15 +595,6 @@ mod tests {
|
||||
other_namespace_is_cached = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean disabledRw() {
|
||||
if (!aconfig_test_is_cached) {
|
||||
load_overrides_aconfig_test();
|
||||
}
|
||||
return disabledRw;
|
||||
}
|
||||
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean disabledRwExported() {
|
||||
@@ -591,6 +603,15 @@ mod tests {
|
||||
}
|
||||
return disabledRwExported;
|
||||
}
|
||||
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean enabledRoExported() {
|
||||
if (!aconfig_test_is_cached) {
|
||||
load_overrides_aconfig_test();
|
||||
}
|
||||
return enabledRoExported;
|
||||
}
|
||||
}"#;
|
||||
|
||||
let expect_fake_feature_flags_impl_content = r#"
|
||||
@@ -606,13 +627,13 @@ mod tests {
|
||||
}
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean disabledRw() {
|
||||
return getValue(Flags.FLAG_DISABLED_RW);
|
||||
public boolean disabledRwExported() {
|
||||
return getValue(Flags.FLAG_DISABLED_RW_EXPORTED);
|
||||
}
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean disabledRwExported() {
|
||||
return getValue(Flags.FLAG_DISABLED_RW_EXPORTED);
|
||||
public boolean enabledRoExported() {
|
||||
return getValue(Flags.FLAG_ENABLED_RO_EXPORTED);
|
||||
}
|
||||
public void setFlag(String flagName, boolean value) {
|
||||
if (!this.mFlagMap.containsKey(flagName)) {
|
||||
@@ -640,6 +661,7 @@ mod tests {
|
||||
Map.entry(Flags.FLAG_DISABLED_RW_IN_OTHER_NAMESPACE, false),
|
||||
Map.entry(Flags.FLAG_ENABLED_FIXED_RO, false),
|
||||
Map.entry(Flags.FLAG_ENABLED_RO, false),
|
||||
Map.entry(Flags.FLAG_ENABLED_RO_EXPORTED, false),
|
||||
Map.entry(Flags.FLAG_ENABLED_RW, false)
|
||||
)
|
||||
);
|
||||
@@ -739,6 +761,12 @@ mod tests {
|
||||
}
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean enabledRoExported() {
|
||||
throw new UnsupportedOperationException(
|
||||
"Method is not implemented.");
|
||||
}
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean enabledRw() {
|
||||
throw new UnsupportedOperationException(
|
||||
"Method is not implemented.");
|
||||
|
@@ -158,6 +158,11 @@ impl FlagProvider {
|
||||
true
|
||||
}
|
||||
|
||||
/// query flag enabled_ro_exported
|
||||
pub fn enabled_ro_exported(&self) -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
/// query flag enabled_rw
|
||||
pub fn enabled_rw(&self) -> bool {
|
||||
*CACHED_enabled_rw
|
||||
@@ -203,6 +208,12 @@ pub fn enabled_ro() -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
/// query flag enabled_ro_exported
|
||||
#[inline(always)]
|
||||
pub fn enabled_ro_exported() -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
/// query flag enabled_rw
|
||||
#[inline(always)]
|
||||
pub fn enabled_rw() -> bool {
|
||||
@@ -303,6 +314,18 @@ impl FlagProvider {
|
||||
self.overrides.insert("enabled_ro", val);
|
||||
}
|
||||
|
||||
/// query flag enabled_ro_exported
|
||||
pub fn enabled_ro_exported(&self) -> bool {
|
||||
self.overrides.get("enabled_ro_exported").copied().unwrap_or(
|
||||
true
|
||||
)
|
||||
}
|
||||
|
||||
/// set flag enabled_ro_exported
|
||||
pub fn set_enabled_ro_exported(&mut self, val: bool) {
|
||||
self.overrides.insert("enabled_ro_exported", val);
|
||||
}
|
||||
|
||||
/// query flag enabled_rw
|
||||
pub fn enabled_rw(&self) -> bool {
|
||||
self.overrides.get("enabled_rw").copied().unwrap_or(
|
||||
@@ -401,6 +424,18 @@ pub fn set_enabled_ro(val: bool) {
|
||||
PROVIDER.lock().unwrap().set_enabled_ro(val);
|
||||
}
|
||||
|
||||
/// query flag enabled_ro_exported
|
||||
#[inline(always)]
|
||||
pub fn enabled_ro_exported() -> bool {
|
||||
PROVIDER.lock().unwrap().enabled_ro_exported()
|
||||
}
|
||||
|
||||
/// set flag enabled_ro_exported
|
||||
#[inline(always)]
|
||||
pub fn set_enabled_ro_exported(val: bool) {
|
||||
PROVIDER.lock().unwrap().set_enabled_ro_exported(val);
|
||||
}
|
||||
|
||||
/// query flag enabled_rw
|
||||
#[inline(always)]
|
||||
pub fn enabled_rw() -> bool {
|
||||
|
@@ -370,7 +370,7 @@ mod tests {
|
||||
assert_eq!(ProtoFlagState::ENABLED, enabled_ro.trace[2].state());
|
||||
assert_eq!(ProtoFlagPermission::READ_ONLY, enabled_ro.trace[2].permission());
|
||||
|
||||
assert_eq!(7, parsed_flags.parsed_flag.len());
|
||||
assert_eq!(8, parsed_flags.parsed_flag.len());
|
||||
for pf in parsed_flags.parsed_flag.iter() {
|
||||
if pf.name() == "enabled_fixed_ro" {
|
||||
continue;
|
||||
|
@@ -62,7 +62,7 @@ parsed_flag {
|
||||
permission: READ_WRITE
|
||||
}
|
||||
is_fixed_read_only: false
|
||||
is_exported: true
|
||||
is_exported: false
|
||||
container: "system"
|
||||
metadata {
|
||||
purpose: PURPOSE_UNSPECIFIED
|
||||
@@ -72,7 +72,7 @@ parsed_flag {
|
||||
package: "com.android.aconfig.test"
|
||||
name: "disabled_rw_exported"
|
||||
namespace: "aconfig_test"
|
||||
description: "This flag is exported"
|
||||
description: "This flag is DISABLED + READ_WRITE and exported"
|
||||
bug: "111"
|
||||
state: DISABLED
|
||||
permission: READ_WRITE
|
||||
@@ -173,6 +173,31 @@ parsed_flag {
|
||||
purpose: PURPOSE_BUGFIX
|
||||
}
|
||||
}
|
||||
parsed_flag {
|
||||
package: "com.android.aconfig.test"
|
||||
name: "enabled_ro_exported"
|
||||
namespace: "aconfig_test"
|
||||
description: "This flag is ENABLED + READ_ONLY and exported"
|
||||
bug: "111"
|
||||
state: ENABLED
|
||||
permission: READ_ONLY
|
||||
trace {
|
||||
source: "tests/test.aconfig"
|
||||
state: DISABLED
|
||||
permission: READ_WRITE
|
||||
}
|
||||
trace {
|
||||
source: "tests/first.values"
|
||||
state: ENABLED
|
||||
permission: READ_ONLY
|
||||
}
|
||||
is_fixed_read_only: false
|
||||
is_exported: true
|
||||
container: "system"
|
||||
metadata {
|
||||
purpose: PURPOSE_UNSPECIFIED
|
||||
}
|
||||
}
|
||||
parsed_flag {
|
||||
package: "com.android.aconfig.test"
|
||||
name: "enabled_rw"
|
||||
|
@@ -71,14 +71,10 @@ public final class FeatureFlagsImpl implements FeatureFlags \{
|
||||
@Override
|
||||
@UnsupportedAppUsage
|
||||
public boolean {flag.method_name}() \{
|
||||
{{ -if flag.is_read_write }}
|
||||
if (!{flag.device_config_namespace}_is_cached) \{
|
||||
load_overrides_{flag.device_config_namespace}();
|
||||
}
|
||||
return {flag.method_name};
|
||||
{{ else }}
|
||||
return {flag.default_value};
|
||||
{{ endif- }}
|
||||
}
|
||||
{{ endif }}
|
||||
|
||||
|
@@ -28,6 +28,12 @@ flag_value {
|
||||
state: ENABLED
|
||||
permission: READ_ONLY
|
||||
}
|
||||
flag_value {
|
||||
package: "com.android.aconfig.test"
|
||||
name: "enabled_ro_exported"
|
||||
state: ENABLED
|
||||
permission: READ_ONLY
|
||||
}
|
||||
flag_value {
|
||||
package: "com.android.aconfig.test"
|
||||
name: "disabled_rw_exported"
|
||||
|
@@ -43,7 +43,6 @@ flag {
|
||||
namespace: "aconfig_test"
|
||||
description: "This flag is DISABLED + READ_WRITE"
|
||||
bug: "456"
|
||||
is_exported: true
|
||||
}
|
||||
|
||||
# This flag's final value calculated from:
|
||||
@@ -65,9 +64,17 @@ flag {
|
||||
}
|
||||
|
||||
flag {
|
||||
name: "disabled_rw_exported"
|
||||
name: "enabled_ro_exported"
|
||||
namespace: "aconfig_test"
|
||||
description: "This flag is exported"
|
||||
description: "This flag is ENABLED + READ_ONLY and exported"
|
||||
bug: "111"
|
||||
is_exported: true
|
||||
}
|
||||
}
|
||||
|
||||
flag {
|
||||
name: "disabled_rw_exported"
|
||||
namespace: "aconfig_test"
|
||||
description: "This flag is DISABLED + READ_WRITE and exported"
|
||||
bug: "111"
|
||||
is_exported: true
|
||||
}
|
||||
|
Reference in New Issue
Block a user