blob: ee97b26159dea635087c255c2e25d93409530fba [file] [log] [blame]
Jared Duke2d1a8322024-08-23 22:17:09 +00001// This file is auto-generated. DO NOT MODIFY.
2// Args: com.android.systemfeatures.RoFeatures \
3// --readonly=true \
4// --feature=WATCH:1 \
5// --feature=WIFI:0 \
Jared Duke90e43632024-09-20 17:05:02 +00006// --feature=VULKAN:UNAVAILABLE \
Jared Duke2d1a8322024-08-23 22:17:09 +00007// --feature=AUTO: \
8// --feature-apis=WATCH,PC
9package com.android.systemfeatures;
10
Jared Duke568adec2024-09-20 21:11:17 +000011import android.annotation.NonNull;
Jared Duke2d1a8322024-08-23 22:17:09 +000012import android.annotation.Nullable;
13import android.content.Context;
Jared Duke568adec2024-09-20 21:11:17 +000014import android.content.pm.FeatureInfo;
Jared Duke2d1a8322024-08-23 22:17:09 +000015import android.content.pm.PackageManager;
Jared Duke2a90b8f2024-09-19 23:25:21 +000016import android.util.ArrayMap;
Jared Duke2d1a8322024-08-23 22:17:09 +000017import com.android.aconfig.annotations.AssumeFalseForR8;
18import com.android.aconfig.annotations.AssumeTrueForR8;
19
20/**
21 * @hide
22 */
23public final class RoFeatures {
24 /**
25 * Check for FEATURE_WATCH.
26 *
27 * @hide
28 */
29 @AssumeTrueForR8
30 public static boolean hasFeatureWatch(Context context) {
31 return true;
32 }
33
34 /**
35 * Check for FEATURE_PC.
36 *
37 * @hide
38 */
39 public static boolean hasFeaturePc(Context context) {
40 return hasFeatureFallback(context, PackageManager.FEATURE_PC);
41 }
42
43 /**
44 * Check for FEATURE_WIFI.
45 *
46 * @hide
47 */
48 @AssumeTrueForR8
49 public static boolean hasFeatureWifi(Context context) {
50 return true;
51 }
52
53 /**
54 * Check for FEATURE_VULKAN.
55 *
56 * @hide
57 */
58 @AssumeFalseForR8
59 public static boolean hasFeatureVulkan(Context context) {
60 return false;
61 }
62
63 /**
64 * Check for FEATURE_AUTO.
65 *
66 * @hide
67 */
Jared Duke2d1a8322024-08-23 22:17:09 +000068 public static boolean hasFeatureAuto(Context context) {
Jared Duke90e43632024-09-20 17:05:02 +000069 return hasFeatureFallback(context, PackageManager.FEATURE_AUTO);
Jared Duke2d1a8322024-08-23 22:17:09 +000070 }
71
72 private static boolean hasFeatureFallback(Context context, String featureName) {
73 return context.getPackageManager().hasSystemFeature(featureName, 0);
74 }
75
76 /**
77 * @hide
78 */
79 @Nullable
80 public static Boolean maybeHasFeature(String featureName, int version) {
81 switch (featureName) {
82 case PackageManager.FEATURE_WATCH: return 1 >= version;
83 case PackageManager.FEATURE_WIFI: return 0 >= version;
Jared Duke90e43632024-09-20 17:05:02 +000084 case PackageManager.FEATURE_VULKAN: return false;
Jared Duke2d1a8322024-08-23 22:17:09 +000085 default: break;
86 }
87 return null;
88 }
Jared Duke568adec2024-09-20 21:11:17 +000089
90 /**
91 * Gets features marked as available at compile-time, keyed by name.
92 *
93 * @hide
94 */
95 @NonNull
Jared Duke2a90b8f2024-09-19 23:25:21 +000096 public static ArrayMap<String, FeatureInfo> getReadOnlySystemEnabledFeatures() {
97 ArrayMap<String, FeatureInfo> features = new ArrayMap<>(2);
Jared Duke568adec2024-09-20 21:11:17 +000098 FeatureInfo fi = new FeatureInfo();
99 fi.name = PackageManager.FEATURE_WATCH;
100 fi.version = 1;
101 features.put(fi.name, new FeatureInfo(fi));
102 fi.name = PackageManager.FEATURE_WIFI;
103 fi.version = 0;
104 features.put(fi.name, new FeatureInfo(fi));
105 return features;
106 }
Jared Duke2d1a8322024-08-23 22:17:09 +0000107}