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