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