xref: /aosp_15_r20/frameworks/base/tools/systemfeatures/tests/golden/RoFeatures.java.gen (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1// 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 \
6//            --feature=VULKAN:UNAVAILABLE \
7//            --feature=AUTO: \
8//            --feature-apis=WATCH,PC
9package com.android.systemfeatures;
10
11import android.annotation.NonNull;
12import android.annotation.Nullable;
13import android.content.Context;
14import android.content.pm.FeatureInfo;
15import android.content.pm.PackageManager;
16import android.util.ArrayMap;
17import 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     */
68    public static boolean hasFeatureAuto(Context context) {
69        return hasFeatureFallback(context, PackageManager.FEATURE_AUTO);
70    }
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;
84            case PackageManager.FEATURE_VULKAN: return false;
85            default: break;
86        }
87        return null;
88    }
89
90    /**
91     * Gets features marked as available at compile-time, keyed by name.
92     *
93     * @hide
94     */
95    @NonNull
96    public static ArrayMap<String, FeatureInfo> getReadOnlySystemEnabledFeatures() {
97        ArrayMap<String, FeatureInfo> features = new ArrayMap<>(2);
98        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    }
107}
108