Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cab7e07d authored by Ted Bauer's avatar Ted Bauer Committed by Automerger Merge Worker
Browse files

Merge "aconfig: fix template bug in exported mode." into main am: a27d46c5

parents 4ea87c4b a27d46c5
Loading
Loading
Loading
Loading
+13 −0
Original line number Original line Diff line number Diff line
@@ -91,6 +91,12 @@ aconfig_declarations {
    srcs: ["tests/test.aconfig"],
    srcs: ["tests/test.aconfig"],
}
}


aconfig_declarations {
    name: "aconfig.test.exported.flags",
    package: "com.android.aconfig.test.exported",
    srcs: ["tests/test_exported.aconfig"],
}

aconfig_values {
aconfig_values {
    name: "aconfig.test.flag.values",
    name: "aconfig.test.flag.values",
    package: "com.android.aconfig.test",
    package: "com.android.aconfig.test",
@@ -114,6 +120,12 @@ java_aconfig_library {
    aconfig_declarations: "aconfig.test.flags",
    aconfig_declarations: "aconfig.test.flags",
}
}


java_aconfig_library {
    name: "aconfig_test_java_library_exported",
    aconfig_declarations: "aconfig.test.exported.flags",
    mode: "exported",
}

android_test {
android_test {
    name: "aconfig.test.java",
    name: "aconfig.test.java",
    srcs: [
    srcs: [
@@ -123,6 +135,7 @@ android_test {
    certificate: "platform",
    certificate: "platform",
    static_libs: [
    static_libs: [
        "aconfig_test_java_library",
        "aconfig_test_java_library",
        "aconfig_test_java_library_exported",
        "androidx.test.rules",
        "androidx.test.rules",
        "testng",
        "testng",
    ],
    ],
+15 −11
Original line number Original line Diff line number Diff line
@@ -14,7 +14,7 @@
 * limitations under the License.
 * limitations under the License.
 */
 */


use anyhow::Result;
use anyhow::{anyhow, Result};
use serde::Serialize;
use serde::Serialize;
use std::collections::{BTreeMap, BTreeSet};
use std::collections::{BTreeMap, BTreeSet};
use std::path::PathBuf;
use std::path::PathBuf;
@@ -34,17 +34,26 @@ where
{
{
    let flag_elements: Vec<FlagElement> =
    let flag_elements: Vec<FlagElement> =
        parsed_flags_iter.map(|pf| create_flag_element(package, pf)).collect();
        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 namespace_flags = gen_flags_by_namespace(&flag_elements);
    let properties_set: BTreeSet<String> =
    let properties_set: BTreeSet<String> =
        flag_elements.iter().map(|fe| format_property_name(&fe.device_config_namespace)).collect();
        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 is_test_mode = codegen_mode == CodegenMode::Test;
    let library_exported = codegen_mode == CodegenMode::Exported;
    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 {
    let context = Context {
        flag_elements,
        flag_elements,
        exported_flag_elements,
        namespace_flags,
        namespace_flags,
        is_test_mode,
        is_test_mode,
        is_read_write,
        runtime_lookup_required,
        properties_set,
        properties_set,
        package_name: package.to_string(),
        package_name: package.to_string(),
        library_exported,
        library_exported,
@@ -100,9 +109,10 @@ fn gen_flags_by_namespace(flags: &[FlagElement]) -> Vec<NamespaceFlags> {
#[derive(Serialize)]
#[derive(Serialize)]
struct Context {
struct Context {
    pub flag_elements: Vec<FlagElement>,
    pub flag_elements: Vec<FlagElement>,
    pub exported_flag_elements: Vec<FlagElement>,
    pub namespace_flags: Vec<NamespaceFlags>,
    pub namespace_flags: Vec<NamespaceFlags>,
    pub is_test_mode: bool,
    pub is_test_mode: bool,
    pub is_read_write: bool,
    pub runtime_lookup_required: bool,
    pub properties_set: BTreeSet<String>,
    pub properties_set: BTreeSet<String>,
    pub package_name: String,
    pub package_name: String,
    pub library_exported: bool,
    pub library_exported: bool,
@@ -655,14 +665,8 @@ mod tests {
            }
            }
            private Map<String, Boolean> mFlagMap = new HashMap<>(
            private Map<String, Boolean> mFlagMap = new HashMap<>(
                Map.ofEntries(
                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_EXPORTED, false),
                    Map.entry(Flags.FLAG_DISABLED_RW_IN_OTHER_NAMESPACE, false),
                    Map.entry(Flags.FLAG_ENABLED_RO_EXPORTED, 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)
                )
                )
            );
            );
        }
        }
+9 −0
Original line number Original line Diff line number Diff line
@@ -52,11 +52,20 @@ public class FakeFeatureFlagsImpl implements FeatureFlags \{
    }
    }


    private Map<String, Boolean> mFlagMap = new HashMap<>(
    private Map<String, Boolean> mFlagMap = new HashMap<>(
        {{ if library_exported }}
        Map.ofEntries(
            {{-for item in exported_flag_elements}}
            Map.entry(Flags.FLAG_{item.flag_name_constant_suffix}, false)
            {{ -if not @last }},{{ endif }}
            {{ -endfor }}
        )
        {{ else }}
        Map.ofEntries(
        Map.ofEntries(
            {{-for item in flag_elements}}
            {{-for item in flag_elements}}
            Map.entry(Flags.FLAG_{item.flag_name_constant_suffix}, false)
            Map.entry(Flags.FLAG_{item.flag_name_constant_suffix}, false)
            {{ -if not @last }},{{ endif }}
            {{ -if not @last }},{{ endif }}
            {{ -endfor }}
            {{ -endfor }}
        )
        )
        {{ endif }}
    );
    );
}
}
+2 −2
Original line number Original line Diff line number Diff line
@@ -2,13 +2,13 @@ package {package_name};
// TODO(b/303773055): Remove the annotation after access issue is resolved.
// TODO(b/303773055): Remove the annotation after access issue is resolved.
import android.compat.annotation.UnsupportedAppUsage;
import android.compat.annotation.UnsupportedAppUsage;
{{ if not is_test_mode }}
{{ if not is_test_mode }}
{{ if is_read_write- }}
{{ if runtime_lookup_required- }}
import android.provider.DeviceConfig;
import android.provider.DeviceConfig;
import android.provider.DeviceConfig.Properties;
import android.provider.DeviceConfig.Properties;
{{ endif }}
{{ endif }}
/** @hide */
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags \{
public final class FeatureFlagsImpl implements FeatureFlags \{
{{- if is_read_write }}
{{- if runtime_lookup_required }}
{{- for namespace_with_flags in namespace_flags }}
{{- for namespace_with_flags in namespace_flags }}
    private static boolean {namespace_with_flags.namespace}_is_cached = false;
    private static boolean {namespace_with_flags.namespace}_is_cached = false;
{{- endfor- }}
{{- endfor- }}
+8 −0
Original line number Original line Diff line number Diff line
@@ -8,6 +8,8 @@ import static com.android.aconfig.test.Flags.disabledRw;
import static com.android.aconfig.test.Flags.enabledFixedRo;
import static com.android.aconfig.test.Flags.enabledFixedRo;
import static com.android.aconfig.test.Flags.enabledRo;
import static com.android.aconfig.test.Flags.enabledRo;
import static com.android.aconfig.test.Flags.enabledRw;
import static com.android.aconfig.test.Flags.enabledRw;
import static com.android.aconfig.test.exported.Flags.exportedFlag;
import static com.android.aconfig.test.exported.Flags.FLAG_EXPORTED_FLAG;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertThrows;
@@ -64,4 +66,10 @@ public final class AconfigTest {
        fakeFeatureFlags.setFlag(FLAG_ENABLED_RW, false);
        fakeFeatureFlags.setFlag(FLAG_ENABLED_RW, false);
        assertFalse(fakeFeatureFlags.enabledRw());
        assertFalse(fakeFeatureFlags.enabledRw());
    }
    }

    @Test
    public void testExportedFlag() {
        assertEquals("com.android.aconfig.test.exported.exported_flag", FLAG_EXPORTED_FLAG);
        assertFalse(exportedFlag());
    }
}
}
Loading