• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1package {package_name}; {#- CODEGEN FOR INTERNAL MODE FOR NEW STORAGE #}
2// TODO(b/303773055): Remove the annotation after access issue is resolved.
3import android.compat.annotation.UnsupportedAppUsage;
4{{ -if runtime_lookup_required }}
5{{ if is_platform_container }}
6import android.os.flagging.PlatformAconfigPackageInternal;
7{{ -else }} {#- else is_platform_container #}
8import android.os.flagging.AconfigPackageInternal;
9{{ -endif }} {#- end of is_platform_container#}
10import android.util.Log;
11{{ -endif }} {#- end of runtime_lookup_required#}
12/** @hide */
13public final class FeatureFlagsImpl implements FeatureFlags \{
14{{ -if runtime_lookup_required }}
15    private static final String TAG = "FeatureFlagsImpl";
16    private static volatile boolean isCached = false;
17{{ for flag in flag_elements }}
18{{ -if flag.is_read_write }}
19    private static boolean {flag.method_name} = {flag.default_value};
20{{ -endif }} {#- end of is_read_write#}
21{{ -endfor }} {#- else flag_elements #}
22
23    private void init() \{
24        try \{
25{{ if is_platform_container }}
26            PlatformAconfigPackageInternal reader = PlatformAconfigPackageInternal.load("{package_name}", {package_fingerprint});
27{{ -else }} {#- else is_platform_container #}
28            AconfigPackageInternal reader = AconfigPackageInternal.load("{package_name}", {package_fingerprint});
29{{ -endif }} {#- end of is_platform_container#}
30        {{ -for namespace_with_flags in namespace_flags }}
31        {{ -for flag in namespace_with_flags.flags }}
32        {{ -if flag.is_read_write }}
33            {flag.method_name} = reader.getBooleanFlagValue({flag.flag_offset});
34        {{ -endif }} {#- is_read_write#}
35        {{ -endfor }} {#- else namespace_with_flags.flags #}
36        {{ -endfor }}  {#- else namespace_flags #}
37        } catch (Exception e) \{
38            Log.e(TAG, e.toString());
39        } catch (LinkageError e) \{
40            // for mainline module running on older devices.
41            // This should be replaces to version check, after the version bump.
42            Log.e(TAG, e.toString());
43        }
44        isCached = true;
45    }
46{{ -endif }}{#- end of runtime_lookup_required #}
47{{ -for flag in flag_elements }}
48    @Override
49    @com.android.aconfig.annotations.AconfigFlagAccessor
50    @UnsupportedAppUsage
51    public boolean {flag.method_name}() \{
52{{ -if flag.is_read_write }}
53        if (!isCached) \{
54            init();
55        }
56        return {flag.method_name};
57{{ -else }}{#- else is_read_write #}
58        return {flag.default_value};
59{{ -endif }}  {#- end of is_read_write#}
60    }
61{{ endfor }} {#- else flag_elements #}
62}
63