• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.bedstead.nene.services;
18 
19 import android.accounts.AccountManager;
20 import android.app.ActivityManager;
21 //import android.app.ActivityTaskManager;
22 import android.app.AlarmManager;
23 import android.app.AppOpsManager;
24 import android.app.DownloadManager;
25 import android.app.DreamManager;
26 import android.app.GameManager;
27 import android.app.GrammaticalInflectionManager;
28 import android.app.KeyguardManager;
29 import android.app.LocaleManager;
30 import android.app.NotificationManager;
31 import android.app.SearchManager;
32 import android.app.StatusBarManager;
33 import android.app.UiModeManager;
34 //import android.app.UriGrantsManager;
35 import android.app.VrManager;
36 import android.app.WallpaperManager;
37 import android.app.admin.DevicePolicyManager;
38 import android.app.ambientcontext.AmbientContextManager;
39 import android.app.contentsuggestions.ContentSuggestionsManager;
40 import android.app.people.PeopleManager;
41 import android.app.prediction.AppPredictionManager;
42 import android.app.search.SearchUiManager;
43 //import android.app.slice.SliceManager;
44 import android.app.smartspace.SmartspaceManager;
45 import android.app.time.TimeManager;
46 //import android.app.timedetector.TimeDetector;
47 //import android.app.timezonedetector.TimeZoneDetector;
48 //import android.app.trust.TrustManager;
49 import android.app.usage.StorageStatsManager;
50 import android.app.usage.UsageStatsManager;
51 import android.app.wallpapereffectsgeneration.WallpaperEffectsGenerationManager;
52 import android.app.wearable.WearableSensingManager;
53 import android.apphibernation.AppHibernationManager;
54 import android.appwidget.AppWidgetManager;
55 import android.companion.CompanionDeviceManager;
56 import android.companion.virtual.VirtualDeviceManager;
57 import android.content.ClipboardManager;
58 import android.content.Context;
59 import android.content.RestrictionsManager;
60 import android.content.integrity.AppIntegrityManager;
61 import android.content.om.OverlayManager;
62 import android.content.pm.CrossProfileApps;
63 //import android.content.pm.DataLoaderManager;
64 import android.content.pm.LauncherApps;
65 import android.content.pm.ShortcutManager;
66 import android.content.pm.verify.domain.DomainVerificationManager;
67 import android.credentials.CredentialManager;
68 //import android.debug.AdbManager;
69 import android.graphics.fonts.FontManager;
70 import android.hardware.ConsumerIrManager;
71 import android.hardware.SensorManager;
72 //import android.hardware.SensorPrivacyManager;
73 //import android.hardware.SerialManager;
74 import android.hardware.biometrics.BiometricManager;
75 import android.hardware.camera2.CameraManager;
76 //import android.hardware.devicestate.DeviceStateManager;
77 //import android.hardware.display.ColorDisplayManager;
78 import android.hardware.display.DisplayManager;
79 //import android.hardware.face.FaceManager;
80 import android.hardware.fingerprint.FingerprintManager;
81 import android.hardware.hdmi.HdmiControlManager;
82 import android.hardware.input.InputManager;
83 //import android.hardware.iris.IrisManager;
84 //import android.hardware.lights.LightsManager;
85 import android.hardware.location.ContextHubManager;
86 //import android.hardware.radio.RadioManager;
87 import android.hardware.usb.UsbManager;
88 //import android.location.CountryDetector;
89 import android.location.LocationManager;
90 import android.media.AudioDeviceVolumeManager;
91 import android.media.AudioManager;
92 import android.media.MediaRouter;
93 import android.media.metrics.MediaMetricsManager;
94 import android.media.midi.MidiManager;
95 import android.media.musicrecognition.MusicRecognitionManager;
96 import android.media.projection.MediaProjectionManager;
97 //import android.media.soundtrigger.SoundTriggerManager;
98 import android.media.tv.TvInputManager;
99 import android.media.tv.interactive.TvInteractiveAppManager;
100 //import android.media.tv.tunerresourcemanager.TunerResourceManager;
101 //import android.net.NetworkPolicyManager;
102 import android.net.NetworkScoreManager;
103 //import android.net.NetworkWatchlistManager;
104 //import android.net.PacProxyManager;
105 import android.net.TetheringManager;
106 import android.net.VpnManager;
107 //import android.net.vcn.VcnManager;
108 import android.net.wifi.nl80211.WifiNl80211Manager;
109 import android.net.wifi.sharedconnectivity.app.SharedConnectivityManager;
110 import android.os.BatteryManager;
111 import android.os.BatteryStatsManager;
112 import android.os.BugreportManager;
113 import android.os.DropBoxManager;
114 import android.os.HardwarePropertiesManager;
115 import android.os.IBinder;
116 //import android.os.IncidentManager;
117 import android.os.PerformanceHintManager;
118 //import android.os.PermissionEnforcer;
119 import android.os.PowerManager;
120 //import android.os.RecoverySystem;
121 import android.os.SystemConfigManager;
122 import android.os.SystemUpdateManager;
123 import android.os.UserManager;
124 import android.os.Vibrator;
125 import android.os.VibratorManager;
126 import android.os.health.SystemHealthManager;
127 //import android.os.image.DynamicSystemManager;
128 //import android.os.incremental.IncrementalManager;
129 import android.os.storage.StorageManager;
130 //import android.permission.LegacyPermissionManager;
131 //import android.permission.PermissionCheckerManager;
132 import android.permission.PermissionControllerManager;
133 import android.permission.PermissionManager;
134 import android.print.PrintManager;
135 import android.security.FileIntegrityManager;
136 //import android.security.attestationverification.AttestationVerificationManager;
137 import android.service.oemlock.OemLockManager;
138 import android.service.persistentdata.PersistentDataBlockManager;
139 import android.telecom.TelecomManager;
140 //import android.telephony.MmsManager;
141 //import android.telephony.TelephonyRegistryManager;
142 //import android.transparency.BinaryTransparencyManager;
143 import android.view.LayoutInflater;
144 import android.view.WindowManager;
145 import android.view.accessibility.AccessibilityManager;
146 import android.view.accessibility.CaptioningManager;
147 //import android.view.autofill.AutofillManager;
148 import android.view.contentcapture.ContentCaptureManager;
149 import android.view.displayhash.DisplayHashManager;
150 import android.view.inputmethod.InputMethodManager;
151 //import android.view.selectiontoolbar.SelectionToolbarManager;
152 import android.view.textclassifier.TextClassificationManager;
153 import android.view.textservice.TextServicesManager;
154 import android.view.translation.TranslationManager;
155 import android.view.translation.UiTranslationManager;
156 
157 import com.android.bedstead.nene.TestApis;
158 import com.android.bedstead.nene.annotations.Experimental;
159 import com.android.bedstead.nene.exceptions.NeneException;
160 import com.android.bedstead.nene.utils.ShellCommand;
161 
162 import java.util.HashMap;
163 import java.util.Map;
164 import java.util.stream.Collectors;
165 
166 /**
167  * TestApis related to system services.
168  */
169 @Experimental
170 public final class Services {
171 
172     public static final Services sInstance = new Services();
173 
174     // Mapping from SystemServiceRegistry.java
175     private static final Map<String, Class<?>> sServiceMapping = new HashMap<>();
176     static {
sServiceMapping.put(Context.ACCESSIBILITY_SERVICE, AccessibilityManager.class)177         sServiceMapping.put(Context.ACCESSIBILITY_SERVICE, AccessibilityManager.class);
sServiceMapping.put(Context.CAPTIONING_SERVICE, CaptioningManager.class)178         sServiceMapping.put(Context.CAPTIONING_SERVICE, CaptioningManager.class);
sServiceMapping.put(Context.ACCOUNT_SERVICE, AccountManager.class)179         sServiceMapping.put(Context.ACCOUNT_SERVICE, AccountManager.class);
sServiceMapping.put(Context.ACTIVITY_SERVICE, ActivityManager.class)180         sServiceMapping.put(Context.ACTIVITY_SERVICE, ActivityManager.class);
181 //        sServiceMapping.put(Context.ACTIVITY_TASK_SERVICE, ActivityTaskManager.class);
182 //        sServiceMapping.put(Context.URI_GRANTS_SERVICE, UriGrantsManager.class);
sServiceMapping.put(Context.ALARM_SERVICE, AlarmManager.class)183         sServiceMapping.put(Context.ALARM_SERVICE, AlarmManager.class);
sServiceMapping.put(Context.AUDIO_SERVICE, AudioManager.class)184         sServiceMapping.put(Context.AUDIO_SERVICE, AudioManager.class);
sServiceMapping.put(Context.AUDIO_DEVICE_VOLUME_SERVICE, AudioDeviceVolumeManager.class)185         sServiceMapping.put(Context.AUDIO_DEVICE_VOLUME_SERVICE, AudioDeviceVolumeManager.class);
sServiceMapping.put(Context.MEDIA_ROUTER_SERVICE, MediaRouter.class)186         sServiceMapping.put(Context.MEDIA_ROUTER_SERVICE, MediaRouter.class);
sServiceMapping.put(Context.HDMI_CONTROL_SERVICE, HdmiControlManager.class)187         sServiceMapping.put(Context.HDMI_CONTROL_SERVICE, HdmiControlManager.class);
sServiceMapping.put(Context.TEXT_CLASSIFICATION_SERVICE, TextClassificationManager.class)188         sServiceMapping.put(Context.TEXT_CLASSIFICATION_SERVICE, TextClassificationManager.class);
189 //        sServiceMapping.put(Context.SELECTION_TOOLBAR_SERVICE, SelectionToolbarManager.class);
sServiceMapping.put(Context.FONT_SERVICE, FontManager.class)190         sServiceMapping.put(Context.FONT_SERVICE, FontManager.class);
sServiceMapping.put(Context.CLIPBOARD_SERVICE, ClipboardManager.class)191         sServiceMapping.put(Context.CLIPBOARD_SERVICE, ClipboardManager.class);
192 //        sServiceMapping.put(Context.PAC_PROXY_SERVICE, PacProxyManager.class);
sServiceMapping.put(Context.NETD_SERVICE, IBinder.class)193         sServiceMapping.put(Context.NETD_SERVICE, IBinder.class);
sServiceMapping.put(Context.TETHERING_SERVICE, TetheringManager.class)194         sServiceMapping.put(Context.TETHERING_SERVICE, TetheringManager.class);
sServiceMapping.put(Context.VPN_MANAGEMENT_SERVICE, VpnManager.class)195         sServiceMapping.put(Context.VPN_MANAGEMENT_SERVICE, VpnManager.class);
196 //        sServiceMapping.put(Context.VCN_MANAGEMENT_SERVICE, VcnManager.class);
197 //        sServiceMapping.put(Context.COUNTRY_DETECTOR, CountryDetector.class);
sServiceMapping.put(Context.DEVICE_POLICY_SERVICE, DevicePolicyManager.class)198         sServiceMapping.put(Context.DEVICE_POLICY_SERVICE, DevicePolicyManager.class);
sServiceMapping.put(Context.DOWNLOAD_SERVICE, DownloadManager.class)199         sServiceMapping.put(Context.DOWNLOAD_SERVICE, DownloadManager.class);
sServiceMapping.put(Context.BATTERY_SERVICE, BatteryManager.class)200         sServiceMapping.put(Context.BATTERY_SERVICE, BatteryManager.class);
sServiceMapping.put(Context.DROPBOX_SERVICE, DropBoxManager.class)201         sServiceMapping.put(Context.DROPBOX_SERVICE, DropBoxManager.class);
202 //        sServiceMapping.put(Context.BINARY_TRANSPARENCY_SERVICE, BinaryTransparencyManager.class);
sServiceMapping.put(Context.INPUT_SERVICE, InputManager.class)203         sServiceMapping.put(Context.INPUT_SERVICE, InputManager.class);
sServiceMapping.put(Context.DISPLAY_SERVICE, DisplayManager.class)204         sServiceMapping.put(Context.DISPLAY_SERVICE, DisplayManager.class);
205 //        sServiceMapping.put(Context.COLOR_DISPLAY_SERVICE, ColorDisplayManager.class);
sServiceMapping.put(Context.INPUT_METHOD_SERVICE, InputMethodManager.class)206         sServiceMapping.put(Context.INPUT_METHOD_SERVICE, InputMethodManager.class);
sServiceMapping.put(Context.TEXT_SERVICES_MANAGER_SERVICE, TextServicesManager.class)207         sServiceMapping.put(Context.TEXT_SERVICES_MANAGER_SERVICE, TextServicesManager.class);
sServiceMapping.put(Context.KEYGUARD_SERVICE, KeyguardManager.class)208         sServiceMapping.put(Context.KEYGUARD_SERVICE, KeyguardManager.class);
sServiceMapping.put(Context.LAYOUT_INFLATER_SERVICE, LayoutInflater.class)209         sServiceMapping.put(Context.LAYOUT_INFLATER_SERVICE, LayoutInflater.class);
sServiceMapping.put(Context.LOCATION_SERVICE, LocationManager.class)210         sServiceMapping.put(Context.LOCATION_SERVICE, LocationManager.class);
211 //        sServiceMapping.put(Context.NETWORK_POLICY_SERVICE, NetworkPolicyManager.class);
sServiceMapping.put(Context.NOTIFICATION_SERVICE, NotificationManager.class)212         sServiceMapping.put(Context.NOTIFICATION_SERVICE, NotificationManager.class);
sServiceMapping.put(Context.PEOPLE_SERVICE, PeopleManager.class)213         sServiceMapping.put(Context.PEOPLE_SERVICE, PeopleManager.class);
sServiceMapping.put(Context.POWER_SERVICE, PowerManager.class)214         sServiceMapping.put(Context.POWER_SERVICE, PowerManager.class);
sServiceMapping.put(Context.PERFORMANCE_HINT_SERVICE, PerformanceHintManager.class)215         sServiceMapping.put(Context.PERFORMANCE_HINT_SERVICE, PerformanceHintManager.class);
216 //        sServiceMapping.put(Context.RECOVERY_SERVICE, RecoverySystem.class);
sServiceMapping.put(Context.SEARCH_SERVICE, SearchManager.class)217         sServiceMapping.put(Context.SEARCH_SERVICE, SearchManager.class);
sServiceMapping.put(Context.SENSOR_SERVICE, SensorManager.class)218         sServiceMapping.put(Context.SENSOR_SERVICE, SensorManager.class);
219 //        sServiceMapping.put(Context.SENSOR_PRIVACY_SERVICE, SensorPrivacyManager.class);
sServiceMapping.put(Context.STATUS_BAR_SERVICE, StatusBarManager.class)220         sServiceMapping.put(Context.STATUS_BAR_SERVICE, StatusBarManager.class);
sServiceMapping.put(Context.STORAGE_SERVICE, StorageManager.class)221         sServiceMapping.put(Context.STORAGE_SERVICE, StorageManager.class);
sServiceMapping.put(Context.STORAGE_STATS_SERVICE, StorageStatsManager.class)222         sServiceMapping.put(Context.STORAGE_STATS_SERVICE, StorageStatsManager.class);
sServiceMapping.put(Context.SYSTEM_UPDATE_SERVICE, SystemUpdateManager.class)223         sServiceMapping.put(Context.SYSTEM_UPDATE_SERVICE, SystemUpdateManager.class);
sServiceMapping.put(Context.SYSTEM_CONFIG_SERVICE, SystemConfigManager.class)224         sServiceMapping.put(Context.SYSTEM_CONFIG_SERVICE, SystemConfigManager.class);
225 //        sServiceMapping.put(Context.TELEPHONY_REGISTRY_SERVICE, TelephonyRegistryManager.class);
sServiceMapping.put(Context.TELECOM_SERVICE, TelecomManager.class)226         sServiceMapping.put(Context.TELECOM_SERVICE, TelecomManager.class);
227 //        sServiceMapping.put(Context.MMS_SERVICE, MmsManager.class);
sServiceMapping.put(Context.UI_MODE_SERVICE, UiModeManager.class)228         sServiceMapping.put(Context.UI_MODE_SERVICE, UiModeManager.class);
sServiceMapping.put(Context.USB_SERVICE, UsbManager.class)229         sServiceMapping.put(Context.USB_SERVICE, UsbManager.class);
230 //        sServiceMapping.put(Context.ADB_SERVICE, AdbManager.class);
231 //        sServiceMapping.put(Context.SERIAL_SERVICE, SerialManager.class);
sServiceMapping.put(Context.VIBRATOR_MANAGER_SERVICE, VibratorManager.class)232         sServiceMapping.put(Context.VIBRATOR_MANAGER_SERVICE, VibratorManager.class);
sServiceMapping.put(Context.VIBRATOR_SERVICE, Vibrator.class)233         sServiceMapping.put(Context.VIBRATOR_SERVICE, Vibrator.class);
sServiceMapping.put(Context.WALLPAPER_SERVICE, WallpaperManager.class)234         sServiceMapping.put(Context.WALLPAPER_SERVICE, WallpaperManager.class);
sServiceMapping.put(Context.WIFI_NL80211_SERVICE, WifiNl80211Manager.class)235         sServiceMapping.put(Context.WIFI_NL80211_SERVICE, WifiNl80211Manager.class);
sServiceMapping.put(Context.WINDOW_SERVICE, WindowManager.class)236         sServiceMapping.put(Context.WINDOW_SERVICE, WindowManager.class);
sServiceMapping.put(Context.USER_SERVICE, UserManager.class)237         sServiceMapping.put(Context.USER_SERVICE, UserManager.class);
sServiceMapping.put(Context.APP_OPS_SERVICE, AppOpsManager.class)238         sServiceMapping.put(Context.APP_OPS_SERVICE, AppOpsManager.class);
sServiceMapping.put(Context.CAMERA_SERVICE, CameraManager.class)239         sServiceMapping.put(Context.CAMERA_SERVICE, CameraManager.class);
sServiceMapping.put(Context.LAUNCHER_APPS_SERVICE, LauncherApps.class)240         sServiceMapping.put(Context.LAUNCHER_APPS_SERVICE, LauncherApps.class);
sServiceMapping.put(Context.RESTRICTIONS_SERVICE, RestrictionsManager.class)241         sServiceMapping.put(Context.RESTRICTIONS_SERVICE, RestrictionsManager.class);
sServiceMapping.put(Context.PRINT_SERVICE, PrintManager.class)242         sServiceMapping.put(Context.PRINT_SERVICE, PrintManager.class);
sServiceMapping.put(Context.COMPANION_DEVICE_SERVICE, CompanionDeviceManager.class)243         sServiceMapping.put(Context.COMPANION_DEVICE_SERVICE, CompanionDeviceManager.class);
sServiceMapping.put(Context.VIRTUAL_DEVICE_SERVICE, VirtualDeviceManager.class)244         sServiceMapping.put(Context.VIRTUAL_DEVICE_SERVICE, VirtualDeviceManager.class);
sServiceMapping.put(Context.CONSUMER_IR_SERVICE, ConsumerIrManager.class)245         sServiceMapping.put(Context.CONSUMER_IR_SERVICE, ConsumerIrManager.class);
246 //        sServiceMapping.put(Context.TRUST_SERVICE, TrustManager.class);
sServiceMapping.put(Context.FINGERPRINT_SERVICE, FingerprintManager.class)247         sServiceMapping.put(Context.FINGERPRINT_SERVICE, FingerprintManager.class);
248 //        sServiceMapping.put(Context.FACE_SERVICE, FaceManager.class);
249 //        sServiceMapping.put(Context.IRIS_SERVICE, IrisManager.class);
sServiceMapping.put(Context.BIOMETRIC_SERVICE, BiometricManager.class)250         sServiceMapping.put(Context.BIOMETRIC_SERVICE, BiometricManager.class);
sServiceMapping.put(Context.TV_INTERACTIVE_APP_SERVICE, TvInteractiveAppManager.class)251         sServiceMapping.put(Context.TV_INTERACTIVE_APP_SERVICE, TvInteractiveAppManager.class);
sServiceMapping.put(Context.TV_INPUT_SERVICE, TvInputManager.class)252         sServiceMapping.put(Context.TV_INPUT_SERVICE, TvInputManager.class);
253 //        sServiceMapping.put(Context.TV_TUNER_RESOURCE_MGR_SERVICE, TunerResourceManager.class);
sServiceMapping.put(Context.NETWORK_SCORE_SERVICE, NetworkScoreManager.class)254         sServiceMapping.put(Context.NETWORK_SCORE_SERVICE, NetworkScoreManager.class);
sServiceMapping.put(Context.USAGE_STATS_SERVICE, UsageStatsManager.class)255         sServiceMapping.put(Context.USAGE_STATS_SERVICE, UsageStatsManager.class);
sServiceMapping.put(Context.PERSISTENT_DATA_BLOCK_SERVICE, PersistentDataBlockManager.class)256         sServiceMapping.put(Context.PERSISTENT_DATA_BLOCK_SERVICE, PersistentDataBlockManager.class);
sServiceMapping.put(Context.OEM_LOCK_SERVICE, OemLockManager.class)257         sServiceMapping.put(Context.OEM_LOCK_SERVICE, OemLockManager.class);
sServiceMapping.put(Context.MEDIA_PROJECTION_SERVICE, MediaProjectionManager.class)258         sServiceMapping.put(Context.MEDIA_PROJECTION_SERVICE, MediaProjectionManager.class);
sServiceMapping.put(Context.APPWIDGET_SERVICE, AppWidgetManager.class)259         sServiceMapping.put(Context.APPWIDGET_SERVICE, AppWidgetManager.class);
sServiceMapping.put(Context.MIDI_SERVICE, MidiManager.class)260         sServiceMapping.put(Context.MIDI_SERVICE, MidiManager.class);
261 //        sServiceMapping.put(Context.RADIO_SERVICE, RadioManager.class);
sServiceMapping.put(Context.HARDWARE_PROPERTIES_SERVICE, HardwarePropertiesManager.class)262         sServiceMapping.put(Context.HARDWARE_PROPERTIES_SERVICE, HardwarePropertiesManager.class);
263 //        sServiceMapping.put(Context.SOUND_TRIGGER_SERVICE, SoundTriggerManager.class);
sServiceMapping.put(Context.SHORTCUT_SERVICE, ShortcutManager.class)264         sServiceMapping.put(Context.SHORTCUT_SERVICE, ShortcutManager.class);
sServiceMapping.put(Context.OVERLAY_SERVICE, OverlayManager.class)265         sServiceMapping.put(Context.OVERLAY_SERVICE, OverlayManager.class);
266 //        sServiceMapping.put(Context.NETWORK_WATCHLIST_SERVICE, NetworkWatchlistManager.class);
sServiceMapping.put(Context.SYSTEM_HEALTH_SERVICE, SystemHealthManager.class)267         sServiceMapping.put(Context.SYSTEM_HEALTH_SERVICE, SystemHealthManager.class);
sServiceMapping.put(Context.CONTEXTHUB_SERVICE, ContextHubManager.class)268         sServiceMapping.put(Context.CONTEXTHUB_SERVICE, ContextHubManager.class);
269 //        sServiceMapping.put(Context.INCIDENT_SERVICE, IncidentManager.class);
sServiceMapping.put(Context.BUGREPORT_SERVICE, BugreportManager.class)270         sServiceMapping.put(Context.BUGREPORT_SERVICE, BugreportManager.class);
271 //        sServiceMapping.put(Context.AUTOFILL_MANAGER_SERVICE, AutofillManager.class);
sServiceMapping.put(Context.CREDENTIAL_SERVICE, CredentialManager.class)272         sServiceMapping.put(Context.CREDENTIAL_SERVICE, CredentialManager.class);
sServiceMapping.put(Context.MUSIC_RECOGNITION_SERVICE, MusicRecognitionManager.class)273         sServiceMapping.put(Context.MUSIC_RECOGNITION_SERVICE, MusicRecognitionManager.class);
sServiceMapping.put(Context.CONTENT_CAPTURE_MANAGER_SERVICE, ContentCaptureManager.class)274         sServiceMapping.put(Context.CONTENT_CAPTURE_MANAGER_SERVICE, ContentCaptureManager.class);
sServiceMapping.put(Context.TRANSLATION_MANAGER_SERVICE, TranslationManager.class)275         sServiceMapping.put(Context.TRANSLATION_MANAGER_SERVICE, TranslationManager.class);
sServiceMapping.put(Context.UI_TRANSLATION_SERVICE, UiTranslationManager.class)276         sServiceMapping.put(Context.UI_TRANSLATION_SERVICE, UiTranslationManager.class);
sServiceMapping.put(Context.SEARCH_UI_SERVICE, SearchUiManager.class)277         sServiceMapping.put(Context.SEARCH_UI_SERVICE, SearchUiManager.class);
sServiceMapping.put(Context.SMARTSPACE_SERVICE, SmartspaceManager.class)278         sServiceMapping.put(Context.SMARTSPACE_SERVICE, SmartspaceManager.class);
sServiceMapping.put(Context.APP_PREDICTION_SERVICE, AppPredictionManager.class)279         sServiceMapping.put(Context.APP_PREDICTION_SERVICE, AppPredictionManager.class);
sServiceMapping.put(Context.VR_SERVICE, VrManager.class)280         sServiceMapping.put(Context.VR_SERVICE, VrManager.class);
sServiceMapping.put(Context.CROSS_PROFILE_APPS_SERVICE, CrossProfileApps.class)281         sServiceMapping.put(Context.CROSS_PROFILE_APPS_SERVICE, CrossProfileApps.class);
282 //        sServiceMapping.put(Context.SLICE_SERVICE, SliceManager.class);
283 //        sServiceMapping.put(Context.TIME_DETECTOR_SERVICE, TimeDetector.class);
284 //        sServiceMapping.put(Context.TIME_ZONE_DETECTOR_SERVICE, TimeZoneDetector.class);
sServiceMapping.put(Context.TIME_MANAGER_SERVICE, TimeManager.class)285         sServiceMapping.put(Context.TIME_MANAGER_SERVICE, TimeManager.class);
sServiceMapping.put(Context.PERMISSION_SERVICE, PermissionManager.class)286         sServiceMapping.put(Context.PERMISSION_SERVICE, PermissionManager.class);
287 //        sServiceMapping.put(Context.LEGACY_PERMISSION_SERVICE, LegacyPermissionManager.class);
sServiceMapping.put(Context.PERMISSION_CONTROLLER_SERVICE, PermissionControllerManager.class)288         sServiceMapping.put(Context.PERMISSION_CONTROLLER_SERVICE, PermissionControllerManager.class);
289 //        sServiceMapping.put(Context.PERMISSION_CHECKER_SERVICE, PermissionCheckerManager.class);
290 //        sServiceMapping.put(Context.PERMISSION_ENFORCER_SERVICE, PermissionEnforcer.class);
291 //        sServiceMapping.put(Context.DYNAMIC_SYSTEM_SERVICE, DynamicSystemManager.class);
sServiceMapping.put(Context.BATTERY_STATS_SERVICE, BatteryStatsManager.class)292         sServiceMapping.put(Context.BATTERY_STATS_SERVICE, BatteryStatsManager.class);
293 //        sServiceMapping.put(Context.DATA_LOADER_MANAGER_SERVICE, DataLoaderManager.class);
294 //        sServiceMapping.put(Context.LIGHTS_SERVICE, LightsManager.class);
sServiceMapping.put(Context.LOCALE_SERVICE, LocaleManager.class)295         sServiceMapping.put(Context.LOCALE_SERVICE, LocaleManager.class);
296 //        sServiceMapping.put(Context.INCREMENTAL_SERVICE, IncrementalManager.class);
sServiceMapping.put(Context.FILE_INTEGRITY_SERVICE, FileIntegrityManager.class)297         sServiceMapping.put(Context.FILE_INTEGRITY_SERVICE, FileIntegrityManager.class);
sServiceMapping.put(Context.APP_INTEGRITY_SERVICE, AppIntegrityManager.class)298         sServiceMapping.put(Context.APP_INTEGRITY_SERVICE, AppIntegrityManager.class);
sServiceMapping.put(Context.APP_HIBERNATION_SERVICE, AppHibernationManager.class)299         sServiceMapping.put(Context.APP_HIBERNATION_SERVICE, AppHibernationManager.class);
sServiceMapping.put(Context.DREAM_SERVICE, DreamManager.class)300         sServiceMapping.put(Context.DREAM_SERVICE, DreamManager.class);
301 //        sServiceMapping.put(Context.DEVICE_STATE_SERVICE, DeviceStateManager.class);
sServiceMapping.put(Context.MEDIA_METRICS_SERVICE, MediaMetricsManager.class)302         sServiceMapping.put(Context.MEDIA_METRICS_SERVICE, MediaMetricsManager.class);
sServiceMapping.put(Context.GAME_SERVICE, GameManager.class)303         sServiceMapping.put(Context.GAME_SERVICE, GameManager.class);
sServiceMapping.put(Context.DOMAIN_VERIFICATION_SERVICE, DomainVerificationManager.class)304         sServiceMapping.put(Context.DOMAIN_VERIFICATION_SERVICE, DomainVerificationManager.class);
sServiceMapping.put(Context.DISPLAY_HASH_SERVICE, DisplayHashManager.class)305         sServiceMapping.put(Context.DISPLAY_HASH_SERVICE, DisplayHashManager.class);
sServiceMapping.put(Context.AMBIENT_CONTEXT_SERVICE, AmbientContextManager.class)306         sServiceMapping.put(Context.AMBIENT_CONTEXT_SERVICE, AmbientContextManager.class);
sServiceMapping.put(Context.WEARABLE_SENSING_SERVICE, WearableSensingManager.class)307         sServiceMapping.put(Context.WEARABLE_SENSING_SERVICE, WearableSensingManager.class);
sServiceMapping.put(Context.GRAMMATICAL_INFLECTION_SERVICE, GrammaticalInflectionManager.class)308         sServiceMapping.put(Context.GRAMMATICAL_INFLECTION_SERVICE, GrammaticalInflectionManager.class);
sServiceMapping.put(Context.SHARED_CONNECTIVITY_SERVICE, SharedConnectivityManager.class)309         sServiceMapping.put(Context.SHARED_CONNECTIVITY_SERVICE, SharedConnectivityManager.class);
sServiceMapping.put(Context.CONTENT_SUGGESTIONS_SERVICE, ContentSuggestionsManager.class)310         sServiceMapping.put(Context.CONTENT_SUGGESTIONS_SERVICE, ContentSuggestionsManager.class);
sServiceMapping.put(Context.WALLPAPER_EFFECTS_GENERATION_SERVICE, WallpaperEffectsGenerationManager.class)311         sServiceMapping.put(Context.WALLPAPER_EFFECTS_GENERATION_SERVICE,
312                 WallpaperEffectsGenerationManager.class);
313 //        sServiceMapping.put(Context.ATTESTATION_VERIFICATION_SERVICE,
314 //                AttestationVerificationManager.class);
315     }
316     private static final Map<Class<?>, String> sServiceNameMapping =
317             sServiceMapping.entrySet().stream().collect(
318                     Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));
319 
320 
Services()321     private Services() {
322 
323     }
324 
serviceIsAvailable(String service)325     public boolean serviceIsAvailable(String service) {
326         if (!sServiceMapping.containsKey(service)) {
327             throw new NeneException("Unknown service " + service + ". Check Nene Services map");
328         }
329         return serviceIsAvailable(service, sServiceMapping.get(service));
330     }
331 
serviceIsAvailable(Class<?> serviceClass)332     public boolean serviceIsAvailable(Class<?> serviceClass) {
333         if (!sServiceNameMapping.containsKey(serviceClass)) {
334             throw new NeneException("Unknown service " + serviceClass + ". Check Nene Services map");
335         }
336         return serviceIsAvailable(sServiceNameMapping.get(serviceClass), serviceClass);
337     }
338 
serviceIsAvailable(String service, Class<?> serviceClass)339     private boolean serviceIsAvailable(String service, Class<?> serviceClass) {
340         if (TestApis.context().instrumentedContext().getSystemService(serviceClass) == null) {
341             return false;
342         }
343 
344         return ShellCommand.builder("cmd -l")
345                 .executeOrThrowNeneException("Error getting service list")
346                 .contains(service);
347 
348     }
349 
350 }
351