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

Commit c3eedd82 authored by Marybeth Fair's avatar Marybeth Fair Committed by Android (Google) Code Review
Browse files

Merge "aconfig: add full sdk check" into main

parents a3e7af7f 7a48926e
Loading
Loading
Loading
Loading
+19 −19
Original line number Original line Diff line number Diff line
@@ -24,7 +24,7 @@ use crate::codegen;
use crate::codegen::CodegenMode;
use crate::codegen::CodegenMode;
use crate::commands::{should_include_flag, OutputFile};
use crate::commands::{should_include_flag, OutputFile};
use aconfig_protos::{ProtoFlagPermission, ProtoFlagState, ProtoParsedFlag};
use aconfig_protos::{ProtoFlagPermission, ProtoFlagState, ProtoParsedFlag};
use convert_finalized_flags::{FinalizedFlag, FinalizedFlagMap};
use convert_finalized_flags::{ApiLevel, FinalizedFlag, FinalizedFlagMap};
use std::collections::HashMap;
use std::collections::HashMap;


// Arguments to configure codegen for generate_java_code.
// Arguments to configure codegen for generate_java_code.
@@ -169,7 +169,7 @@ struct FlagElement {
    pub method_name: String,
    pub method_name: String,
    pub properties: String,
    pub properties: String,
    pub finalized_sdk_present: bool,
    pub finalized_sdk_present: bool,
    pub finalized_sdk_value: i32,
    pub finalized_sdk_check: String,
}
}


fn create_flag_element(
fn create_flag_element(
@@ -199,16 +199,16 @@ fn create_flag_element(
    };
    };


    // An empty map is provided if check_api_level is disabled.
    // An empty map is provided if check_api_level is disabled.
    let mut finalized_sdk_present: bool = false;
    let (finalized_sdk_present, finalized_sdk_value) = if !finalized_flags.is_empty() {
    let mut finalized_sdk_value: i32 = 0;
    if !finalized_flags.is_empty() {
        let finalized_sdk = finalized_flags.get_finalized_level(&FinalizedFlag {
        let finalized_sdk = finalized_flags.get_finalized_level(&FinalizedFlag {
            flag_name: pf.name().to_string(),
            flag_name: pf.name().to_string(),
            package_name: package.to_string(),
            package_name: package.to_string(),
        });
        });
        finalized_sdk_present = finalized_sdk.is_some();
        (finalized_sdk.is_some(), finalized_sdk.unwrap_or(ApiLevel(0)))
        finalized_sdk_value = finalized_sdk.map(|f| f.0).unwrap_or_default();
    } else {
    }
        (false, ApiLevel(0))
    };
    let finalized_sdk_check = finalized_sdk_value.conditional();


    FlagElement {
    FlagElement {
        container: pf.container().to_string(),
        container: pf.container().to_string(),
@@ -222,7 +222,7 @@ fn create_flag_element(
        method_name: format_java_method_name(pf.name()),
        method_name: format_java_method_name(pf.name()),
        properties: format_property_name(pf.namespace()),
        properties: format_property_name(pf.namespace()),
        finalized_sdk_present,
        finalized_sdk_present,
        finalized_sdk_value,
        finalized_sdk_check,
    }
    }
}
}


@@ -903,9 +903,9 @@ mod tests {
                )
                )
            );
            );


            private Map<String, Integer> mFinalizedFlags = new HashMap<>(
            private Map<String, Boolean> mFinalizedFlags = new HashMap<>(
                Map.ofEntries(
                Map.ofEntries(
                    Map.entry("", Integer.MAX_VALUE)
                    Map.entry("", false)
                )
                )
            );
            );


@@ -913,7 +913,7 @@ mod tests {
                if (!mFinalizedFlags.containsKey(flagName)) {
                if (!mFinalizedFlags.containsKey(flagName)) {
                    return false;
                    return false;
                }
                }
                return Build.VERSION.SDK_INT >= mFinalizedFlags.get(flagName);
                return mFinalizedFlags.get(flagName);
            }
            }
        }
        }
    "#;
    "#;
@@ -960,7 +960,7 @@ mod tests {
            assign_flag_ids(crate::test::TEST_PACKAGE, modified_parsed_flags.iter()).unwrap();
            assign_flag_ids(crate::test::TEST_PACKAGE, modified_parsed_flags.iter()).unwrap();
        let mut finalized_flags = FinalizedFlagMap::new();
        let mut finalized_flags = FinalizedFlagMap::new();
        finalized_flags.insert_if_new(
        finalized_flags.insert_if_new(
            ApiLevel(36),
            ApiLevel::from_sdk_int(36),
            FinalizedFlag {
            FinalizedFlag {
                flag_name: "disabled_rw_exported".to_string(),
                flag_name: "disabled_rw_exported".to_string(),
                package_name: "com.android.aconfig.test".to_string(),
                package_name: "com.android.aconfig.test".to_string(),
@@ -1124,10 +1124,10 @@ mod tests {
                )
                )
            );
            );


            private Map<String, Integer> mFinalizedFlags = new HashMap<>(
            private Map<String, Boolean> mFinalizedFlags = new HashMap<>(
                Map.ofEntries(
                Map.ofEntries(
                    Map.entry(Flags.FLAG_DISABLED_RW_EXPORTED, 36),
                    Map.entry(Flags.FLAG_DISABLED_RW_EXPORTED, Build.VERSION.SDK_INT >= 36 ? true : false),
                    Map.entry("", Integer.MAX_VALUE)
                    Map.entry("", false)
                )
                )
            );
            );


@@ -1135,7 +1135,7 @@ mod tests {
                if (!mFinalizedFlags.containsKey(flagName)) {
                if (!mFinalizedFlags.containsKey(flagName)) {
                    return false;
                    return false;
                }
                }
                return Build.VERSION.SDK_INT >= mFinalizedFlags.get(flagName);
                return mFinalizedFlags.get(flagName);
            }
            }
        }
        }
    "#;
    "#;
@@ -1184,7 +1184,7 @@ mod tests {
            assign_flag_ids(crate::test::TEST_PACKAGE, modified_parsed_flags.iter()).unwrap();
            assign_flag_ids(crate::test::TEST_PACKAGE, modified_parsed_flags.iter()).unwrap();
        let mut finalized_flags = FinalizedFlagMap::new();
        let mut finalized_flags = FinalizedFlagMap::new();
        finalized_flags.insert_if_new(
        finalized_flags.insert_if_new(
            ApiLevel(36),
            ApiLevel::from_sdk_int(36),
            FinalizedFlag {
            FinalizedFlag {
                flag_name: "disabled_rw".to_string(),
                flag_name: "disabled_rw".to_string(),
                package_name: "com.android.aconfig.test".to_string(),
                package_name: "com.android.aconfig.test".to_string(),
@@ -1640,7 +1640,7 @@ mod tests {
            assign_flag_ids(crate::test::TEST_PACKAGE, modified_parsed_flags.iter()).unwrap();
            assign_flag_ids(crate::test::TEST_PACKAGE, modified_parsed_flags.iter()).unwrap();
        let mut finalized_flags = FinalizedFlagMap::new();
        let mut finalized_flags = FinalizedFlagMap::new();
        finalized_flags.insert_if_new(
        finalized_flags.insert_if_new(
            ApiLevel(36),
            ApiLevel::from_sdk_int(36),
            FinalizedFlag {
            FinalizedFlag {
                flag_name: "disabled_rw_exported".to_string(),
                flag_name: "disabled_rw_exported".to_string(),
                package_name: "com.android.aconfig.test".to_string(),
                package_name: "com.android.aconfig.test".to_string(),
+4 −4
Original line number Original line Diff line number Diff line
@@ -82,14 +82,14 @@ public class CustomFeatureFlags implements FeatureFlags \{
    );
    );


{{ -if library_exported }}
{{ -if library_exported }}
    private Map<String, Integer> mFinalizedFlags = new HashMap<>(
    private Map<String, Boolean> mFinalizedFlags = new HashMap<>(
        Map.ofEntries(
        Map.ofEntries(
            {{ -for item in flag_elements }}
            {{ -for item in flag_elements }}
            {{ -if item.finalized_sdk_present }}
            {{ -if item.finalized_sdk_present }}
            Map.entry(Flags.FLAG_{item.flag_name_constant_suffix}, {item.finalized_sdk_value}),
            Map.entry(Flags.FLAG_{item.flag_name_constant_suffix}, {item.finalized_sdk_check|unescaped} ? true : false),
            {{ -endif }}
            {{ -endif }}
            {{ -endfor }}
            {{ -endfor }}
            Map.entry("", Integer.MAX_VALUE){# The empty entry to avoid empty entries #}
            Map.entry("", false){# The empty entry to avoid empty entries #}
        )
        )
    );
    );


@@ -97,7 +97,7 @@ public class CustomFeatureFlags implements FeatureFlags \{
        if (!mFinalizedFlags.containsKey(flagName)) \{
        if (!mFinalizedFlags.containsKey(flagName)) \{
            return false;
            return false;
        }
        }
        return Build.VERSION.SDK_INT >= mFinalizedFlags.get(flagName);
        return mFinalizedFlags.get(flagName);
    }
    }
{{ -endif }}
{{ -endif }}
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -37,7 +37,7 @@ public final class ExportedFlags \{
{{ -for flag in flag_elements }}
{{ -for flag in flag_elements }}
    public static boolean {flag.method_name}() \{
    public static boolean {flag.method_name}() \{
        {{ -if flag.finalized_sdk_present }}
        {{ -if flag.finalized_sdk_present }}
        if (Build.VERSION.SDK_INT >= {flag.finalized_sdk_value}) \{
        if ({flag.finalized_sdk_check|unescaped}) \{
          return true;
          return true;
        }
        }
        {{ -endif}}  {#- end finalized_sdk_present#}
        {{ -endif}}  {#- end finalized_sdk_present#}
+1 −1
Original line number Original line Diff line number Diff line
@@ -25,7 +25,7 @@ public final class FeatureFlagsImpl implements FeatureFlags \{
            {{ -for namespace_with_flags in namespace_flags }}
            {{ -for namespace_with_flags in namespace_flags }}
            {{ -for flag in namespace_with_flags.flags }}
            {{ -for flag in namespace_with_flags.flags }}
            {{ -if flag.finalized_sdk_present }}
            {{ -if flag.finalized_sdk_present }}
            {flag.method_name} = Build.VERSION.SDK_INT >= {flag.finalized_sdk_value} ? true : reader.getBooleanFlagValue("{flag.flag_name}", {flag.default_value});
            {flag.method_name} = {flag.finalized_sdk_check|unescaped} ? true : reader.getBooleanFlagValue("{flag.flag_name}", {flag.default_value});
            {{ - else }} {#- else finalized_sdk_present #}
            {{ - else }} {#- else finalized_sdk_present #}
            {flag.method_name} = reader.getBooleanFlagValue("{flag.flag_name}", {flag.default_value});
            {flag.method_name} = reader.getBooleanFlagValue("{flag.flag_name}", {flag.default_value});
            {{ -endif}}  {#- end finalized_sdk_present#}
            {{ -endif}}  {#- end finalized_sdk_present#}
+1 −1
Original line number Original line Diff line number Diff line
@@ -35,7 +35,7 @@ public final class Flags \{
    public static boolean {item.method_name}() \{
    public static boolean {item.method_name}() \{
        {{ if library_exported- }}
        {{ if library_exported- }}
        {{ -if item.finalized_sdk_present }}
        {{ -if item.finalized_sdk_present }}
        if (Build.VERSION.SDK_INT >= {item.finalized_sdk_value}) \{
        if ({item.finalized_sdk_check|unescaped}) \{
          return true;
          return true;
        }
        }
        {{ -endif}}  {#- end finalized_sdk_present#}
        {{ -endif}}  {#- end finalized_sdk_present#}
Loading