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