blob: 1620dfe85d50ca657265a154ad6d6a8fea772093 [file] [log] [blame]
Zhi Dou4655c962023-06-12 15:56:03 +00001package {package_name};
Zhi Dou22a90f42023-10-06 07:28:44 +00002// TODO(b/303773055): Remove the annotation after access issue is resolved.
3import android.compat.annotation.UnsupportedAppUsage;
Zhi Dou5aaeee32023-08-07 22:54:13 +00004{{ if not is_test_mode }}
Zhi Dou8ba6aa72023-06-26 21:03:40 +00005{{ if is_read_write- }}
Zhi Doueb744892023-05-10 04:02:33 +00006import android.provider.DeviceConfig;
7{{ endif }}
Mårten Kongstad65efa272023-09-11 12:17:25 +00008/** @hide */
Zhi Dou4655c962023-06-12 15:56:03 +00009public final class FeatureFlagsImpl implements FeatureFlags \{
Zhi Doua41cc5e2023-06-29 15:01:56 +000010{{ for item in class_elements}}
Zhi Dou4655c962023-06-12 15:56:03 +000011 @Override
Zhi Dou22a90f42023-10-06 07:28:44 +000012 @UnsupportedAppUsage
Zhi Dou4655c962023-06-12 15:56:03 +000013 public boolean {item.method_name}() \{
Zhi Dou5aaeee32023-08-07 22:54:13 +000014 {{ -if item.is_read_write }}
Zhi Dou73a34ce2023-09-13 19:55:50 +000015 return getValue(
Mårten Kongstad066575b2023-06-07 16:29:25 +020016 "{item.device_config_namespace}",
17 "{item.device_config_flag}",
Zhi Doueb744892023-05-10 04:02:33 +000018 {item.default_value}
Mårten Kongstad00cf0452023-05-26 16:48:01 +020019 );
Zhi Dou5aaeee32023-08-07 22:54:13 +000020 {{ else }}
Zhi Doueb744892023-05-10 04:02:33 +000021 return {item.default_value};
Zhi Dou5aaeee32023-08-07 22:54:13 +000022 {{ endif- }}
Zhi Doueb744892023-05-10 04:02:33 +000023 }
Zhi Dou06a448f2023-08-15 19:33:27 +000024{{ endfor }}
Zhi Dou73a34ce2023-09-13 19:55:50 +000025{{ if is_read_write- }}
26 private boolean getValue(String nameSpace,
27 String flagName, boolean defaultValue) \{
28 boolean value = defaultValue;
29 try \{
30 value = DeviceConfig.getBoolean(
31 nameSpace,
32 flagName,
33 defaultValue
34 );
35 } catch (NullPointerException e) \{
36 throw new RuntimeException(
37 "Cannot read value of flag " + flagName + " from DeviceConfig. " +
38 "It could be that the code using flag executed " +
39 "before SettingsProvider initialization. " +
40 "Please use fixed read-only flag by adding " +
41 "is_fixed_read_only: true in flag declaration.",
42 e
43 );
44 }
45 return value;
46 }
47{{ endif- }}
Zhi Dou8ba6aa72023-06-26 21:03:40 +000048}
Zhi Dou5aaeee32023-08-07 22:54:13 +000049{{ else }}
50{#- Generate only stub if in test mode #}
Mårten Kongstad65efa272023-09-11 12:17:25 +000051/** @hide */
Zhi Dou5aaeee32023-08-07 22:54:13 +000052public final class FeatureFlagsImpl implements FeatureFlags \{
53{{ for item in class_elements}}
54 @Override
Zhi Dou22a90f42023-10-06 07:28:44 +000055 @UnsupportedAppUsage
Zhi Dou5aaeee32023-08-07 22:54:13 +000056 public boolean {item.method_name}() \{
57 throw new UnsupportedOperationException(
58 "Method is not implemented.");
59 }
Zhi Dou06a448f2023-08-15 19:33:27 +000060{{ endfor }}
Zhi Dou5aaeee32023-08-07 22:54:13 +000061}
62{{ endif }}