blob: 3913fa4ea384ddeec24f600c8cb90b2a06432825 [file] [log] [blame]
Zhi Dou4655c962023-06-12 15:56:03 +00001package {package_name};
Zhi Dou5aaeee32023-08-07 22:54:13 +00002{{ if not is_test_mode }}
Zhi Dou8ba6aa72023-06-26 21:03:40 +00003{{ if is_read_write- }}
Zhi Doueb744892023-05-10 04:02:33 +00004import android.provider.DeviceConfig;
5{{ endif }}
Mårten Kongstad65efa272023-09-11 12:17:25 +00006/** @hide */
Zhi Dou4655c962023-06-12 15:56:03 +00007public final class FeatureFlagsImpl implements FeatureFlags \{
Zhi Doua41cc5e2023-06-29 15:01:56 +00008{{ for item in class_elements}}
Zhi Dou4655c962023-06-12 15:56:03 +00009 @Override
10 public boolean {item.method_name}() \{
Zhi Dou5aaeee32023-08-07 22:54:13 +000011 {{ -if item.is_read_write }}
Zhi Dou73a34ce2023-09-13 19:55:50 +000012 return getValue(
Mårten Kongstad066575b2023-06-07 16:29:25 +020013 "{item.device_config_namespace}",
14 "{item.device_config_flag}",
Zhi Doueb744892023-05-10 04:02:33 +000015 {item.default_value}
Mårten Kongstad00cf0452023-05-26 16:48:01 +020016 );
Zhi Dou5aaeee32023-08-07 22:54:13 +000017 {{ else }}
Zhi Doueb744892023-05-10 04:02:33 +000018 return {item.default_value};
Zhi Dou5aaeee32023-08-07 22:54:13 +000019 {{ endif- }}
Zhi Doueb744892023-05-10 04:02:33 +000020 }
Zhi Dou06a448f2023-08-15 19:33:27 +000021{{ endfor }}
Zhi Dou73a34ce2023-09-13 19:55:50 +000022{{ if is_read_write- }}
23 private boolean getValue(String nameSpace,
24 String flagName, boolean defaultValue) \{
25 boolean value = defaultValue;
26 try \{
27 value = DeviceConfig.getBoolean(
28 nameSpace,
29 flagName,
30 defaultValue
31 );
32 } catch (NullPointerException e) \{
33 throw new RuntimeException(
34 "Cannot read value of flag " + flagName + " from DeviceConfig. " +
35 "It could be that the code using flag executed " +
36 "before SettingsProvider initialization. " +
37 "Please use fixed read-only flag by adding " +
38 "is_fixed_read_only: true in flag declaration.",
39 e
40 );
41 }
42 return value;
43 }
44{{ endif- }}
Zhi Dou8ba6aa72023-06-26 21:03:40 +000045}
Zhi Dou5aaeee32023-08-07 22:54:13 +000046{{ else }}
47{#- Generate only stub if in test mode #}
Mårten Kongstad65efa272023-09-11 12:17:25 +000048/** @hide */
Zhi Dou5aaeee32023-08-07 22:54:13 +000049public final class FeatureFlagsImpl implements FeatureFlags \{
50{{ for item in class_elements}}
51 @Override
52 public boolean {item.method_name}() \{
53 throw new UnsupportedOperationException(
54 "Method is not implemented.");
55 }
Zhi Dou06a448f2023-08-15 19:33:27 +000056{{ endfor }}
Zhi Dou5aaeee32023-08-07 22:54:13 +000057}
58{{ endif }}