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