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
63 lines
1.7 KiB
Plaintext
63 lines
1.7 KiB
Plaintext
package {package_name};
|
|
// TODO(b/303773055): Remove the annotation after access issue is resolved.
|
|
import android.compat.annotation.UnsupportedAppUsage;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
/** @hide */
|
|
public class FakeFeatureFlagsImpl implements FeatureFlags \{
|
|
public FakeFeatureFlagsImpl() \{
|
|
resetAll();
|
|
}
|
|
|
|
{{ for item in flag_elements}}
|
|
{{ if library_exported }}
|
|
|
|
{{ if item.exported }}
|
|
@Override
|
|
@UnsupportedAppUsage
|
|
public boolean {item.method_name}() \{
|
|
return getValue(Flags.FLAG_{item.flag_name_constant_suffix});
|
|
}
|
|
{{ endif }}
|
|
|
|
{{ else }}
|
|
@Override
|
|
@UnsupportedAppUsage
|
|
public boolean {item.method_name}() \{
|
|
return getValue(Flags.FLAG_{item.flag_name_constant_suffix});
|
|
}
|
|
{{ endif }}
|
|
{{ endfor}}
|
|
public void setFlag(String flagName, boolean value) \{
|
|
if (!this.mFlagMap.containsKey(flagName)) \{
|
|
throw new IllegalArgumentException("no such flag " + flagName);
|
|
}
|
|
this.mFlagMap.put(flagName, value);
|
|
}
|
|
|
|
public void resetAll() \{
|
|
for (Map.Entry entry : mFlagMap.entrySet()) \{
|
|
entry.setValue(null);
|
|
}
|
|
}
|
|
|
|
private boolean getValue(String flagName) \{
|
|
Boolean value = this.mFlagMap.get(flagName);
|
|
if (value == null) \{
|
|
throw new IllegalArgumentException(flagName + " is not set");
|
|
}
|
|
return value;
|
|
}
|
|
|
|
private Map<String, Boolean> mFlagMap = new HashMap<>(
|
|
Map.ofEntries(
|
|
{{-for item in flag_elements}}
|
|
Map.entry(Flags.FLAG_{item.flag_name_constant_suffix}, false)
|
|
{{ -if not @last }},{{ endif }}
|
|
{{ -endfor }}
|
|
)
|
|
);
|
|
}
|