aconfig: fix template bug in exported mode.
FakeFeatureFlagsImpl still generated all flags in its mFlagMap field, but it should generate only exported flags in exported mode. Test: atest aconfig.test.java Bug: 311152507 Change-Id: I61843cd87b3bb5035772791a5869a91b07d574d8
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
use anyhow::Result;
|
||||
use anyhow::{anyhow, Result};
|
||||
use serde::Serialize;
|
||||
use std::collections::{BTreeMap, BTreeSet};
|
||||
use std::path::PathBuf;
|
||||
@@ -34,17 +34,26 @@ where
|
||||
{
|
||||
let flag_elements: Vec<FlagElement> =
|
||||
parsed_flags_iter.map(|pf| create_flag_element(package, pf)).collect();
|
||||
let exported_flag_elements: Vec<FlagElement> =
|
||||
flag_elements.iter().filter(|elem| elem.exported).cloned().collect();
|
||||
let namespace_flags = gen_flags_by_namespace(&flag_elements);
|
||||
let properties_set: BTreeSet<String> =
|
||||
flag_elements.iter().map(|fe| format_property_name(&fe.device_config_namespace)).collect();
|
||||
let is_read_write = flag_elements.iter().any(|elem| elem.is_read_write);
|
||||
let is_test_mode = codegen_mode == CodegenMode::Test;
|
||||
let library_exported = codegen_mode == CodegenMode::Exported;
|
||||
let runtime_lookup_required =
|
||||
flag_elements.iter().any(|elem| elem.is_read_write) || library_exported;
|
||||
|
||||
if library_exported && exported_flag_elements.is_empty() {
|
||||
return Err(anyhow!("exported library contains no exported flags"));
|
||||
}
|
||||
|
||||
let context = Context {
|
||||
flag_elements,
|
||||
exported_flag_elements,
|
||||
namespace_flags,
|
||||
is_test_mode,
|
||||
is_read_write,
|
||||
runtime_lookup_required,
|
||||
properties_set,
|
||||
package_name: package.to_string(),
|
||||
library_exported,
|
||||
@@ -100,9 +109,10 @@ fn gen_flags_by_namespace(flags: &[FlagElement]) -> Vec<NamespaceFlags> {
|
||||
#[derive(Serialize)]
|
||||
struct Context {
|
||||
pub flag_elements: Vec<FlagElement>,
|
||||
pub exported_flag_elements: Vec<FlagElement>,
|
||||
pub namespace_flags: Vec<NamespaceFlags>,
|
||||
pub is_test_mode: bool,
|
||||
pub is_read_write: bool,
|
||||
pub runtime_lookup_required: bool,
|
||||
pub properties_set: BTreeSet<String>,
|
||||
pub package_name: String,
|
||||
pub library_exported: bool,
|
||||
@@ -655,14 +665,8 @@ mod tests {
|
||||
}
|
||||
private Map<String, Boolean> mFlagMap = new HashMap<>(
|
||||
Map.ofEntries(
|
||||
Map.entry(Flags.FLAG_DISABLED_RO, false),
|
||||
Map.entry(Flags.FLAG_DISABLED_RW, false),
|
||||
Map.entry(Flags.FLAG_DISABLED_RW_EXPORTED, false),
|
||||
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)
|
||||
Map.entry(Flags.FLAG_ENABLED_RO_EXPORTED, false)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user