• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1package {package_name}; {#- CODEGEN FOR EXPORTED MODE FOR NEW STORAGE SINGLE EXPORTED FILE#}
2
3import android.os.Build;
4import android.os.flagging.AconfigPackage;
5import android.util.Log;
6public final class ExportedFlags \{
7{{ -for item in flag_elements}}
8    public static final String FLAG_{item.flag_name_constant_suffix} = "{item.device_config_flag}";
9{{- endfor }}
10    private static final String TAG = "ExportedFlags";
11    private static volatile boolean isCached = false;
12{{ for flag in flag_elements }}
13    private static boolean {flag.method_name} = false;
14{{ -endfor }} {#- end flag_elements #}
15    private ExportedFlags() \{}
16
17    private void init() \{
18        try \{
19            AconfigPackage reader = AconfigPackage.load("{package_name}");
20            {{ -for namespace_with_flags in namespace_flags }}
21            {{ -for flag in namespace_with_flags.flags }}
22            {flag.method_name} = reader.getBooleanFlagValue("{flag.flag_name}", {flag.default_value});
23
24            {{ -endfor }} {#- end namespace_with_flags.flags #}
25            {{ -endfor }} {#- end namespace_flags #}
26        } catch (Exception e) \{
27            // pass
28            Log.e(TAG, e.toString());
29        } catch (LinkageError e) \{
30            // for mainline module running on older devices.
31            // This should be replaces to version check, after the version bump.
32            Log.w(TAG, e.toString());
33        }
34        isCached = true;
35    }
36
37{{ -for flag in flag_elements }}
38    public static boolean {flag.method_name}() \{
39        {{ -if flag.finalized_sdk_present }}
40        if (Build.VERSION.SDK_INT >= {flag.finalized_sdk_value}) \{
41          return true;
42        }
43        {{ -endif}}  {#- end finalized_sdk_present#}
44        if (!featureFlags.isCached) \{
45            featureFlags.init();
46        }
47        return featureFlags.{flag.method_name};
48    }
49{{ -endfor }}
50    private static ExportedFlags featureFlags = new ExportedFlags();
51}
52