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

Commit 9150fc34 authored by Zhi Dou's avatar Zhi Dou
Browse files

aconfig: add finalized list in fake class

This change adds finalized flag information in the testing class. Thus
in the testing tool like SetFlagsRule, it can know whether a certain
flag is finalized. If a flag is finalized, then the test should not turn
the flag off for testing.

Test: atest aconfig.test
Bug: 402588368
Change-Id: I638918e572112233d83b96305b0b7af1a9d8eebb
parent b8503dbc
Loading
Loading
Loading
Loading
+50 −0
Original line number Diff line number Diff line
@@ -893,12 +893,16 @@ mod tests {
        package com.android.aconfig.test;

        import java.util.Arrays;
        import java.util.HashMap;
        import java.util.Map;
        import java.util.HashSet;
        import java.util.List;
        import java.util.Set;
        import java.util.function.BiPredicate;
        import java.util.function.Predicate;

        import android.os.Build;

        /** @hide */
        public class CustomFeatureFlags implements FeatureFlags {

@@ -941,6 +945,19 @@ mod tests {
                    ""
                )
            );

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

            public boolean isFlagFinalized(String flagName) {
                if (!mFinalizedFlags.containsKey(flagName)) {
                    return false;
                }
                return Build.VERSION.SDK_INT >= mFinalizedFlags.get(flagName);
            }
        }
    "#;

@@ -1089,11 +1106,14 @@ mod tests {
        package com.android.aconfig.test;

        import java.util.Arrays;
        import java.util.HashMap;
        import java.util.Map;
        import java.util.HashSet;
        import java.util.List;
        import java.util.Set;
        import java.util.function.BiPredicate;
        import java.util.function.Predicate;
        import android.os.Build;

        /** @hide */
        public class CustomFeatureFlags implements FeatureFlags {
@@ -1137,6 +1157,19 @@ mod tests {
                    ""
                )
            );

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

            public boolean isFlagFinalized(String flagName) {
                if (!mFinalizedFlags.containsKey(flagName)) {
                    return false;
                }
                return Build.VERSION.SDK_INT >= mFinalizedFlags.get(flagName);
            }
        }
    "#;

@@ -1296,11 +1329,14 @@ mod tests {
        package com.android.aconfig.test;

        import java.util.Arrays;
        import java.util.HashMap;
        import java.util.Map;
        import java.util.HashSet;
        import java.util.List;
        import java.util.Set;
        import java.util.function.BiPredicate;
        import java.util.function.Predicate;
        import android.os.Build;

        /** @hide */
        public class CustomFeatureFlags implements FeatureFlags {
@@ -1344,6 +1380,20 @@ mod tests {
                    ""
                )
            );

            private Map<String, Integer> mFinalizedFlags = new HashMap<>(
                Map.ofEntries(
                    Map.entry(Flags.FLAG_DISABLED_RW_EXPORTED, 36),
                    Map.entry("", Integer.MAX_VALUE)
                )
            );

            public boolean isFlagFinalized(String flagName) {
                if (!mFinalizedFlags.containsKey(flagName)) {
                    return false;
                }
                return Build.VERSION.SDK_INT >= mFinalizedFlags.get(flagName);
            }
        }
    "#;

+27 −0
Original line number Diff line number Diff line
@@ -5,11 +5,18 @@ package {package_name};
import android.compat.annotation.UnsupportedAppUsage;
{{ -endif }}
import java.util.Arrays;
{{ -if library_exported }}
import java.util.HashMap;
import java.util.Map;
{{ -endif }}
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.BiPredicate;
import java.util.function.Predicate;
{{ -if library_exported }}
import android.os.Build;
{{ -endif }}

{{ -if single_exported_file }}
{{ -if library_exported }}
@@ -73,4 +80,24 @@ public class CustomFeatureFlags implements FeatureFlags \{
            ""{# The empty string here is to resolve the ending comma #}
        )
    );

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

    public boolean isFlagFinalized(String flagName) \{
        if (!mFinalizedFlags.containsKey(flagName)) \{
            return false;
        }
        return Build.VERSION.SDK_INT >= mFinalizedFlags.get(flagName);
    }
{{ -endif }}
}
+4 −1
Original line number Diff line number Diff line
@@ -18,6 +18,9 @@ package android.os;

public class Build {
    public static class VERSION {
        public static final int SDK_INT = 0;
        public static final int SDK_INT = placeholder();
        private static int placeholder() {
            throw new UnsupportedOperationException("Stub!");
        }
    }
}