1 /* 2 * Copyright (C) 2022 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.server.pm.pkg.parsing; 18 19 import android.annotation.CallSuper; 20 import android.annotation.NonNull; 21 import android.annotation.Nullable; 22 import android.content.Intent; 23 import android.content.pm.ApplicationInfo; 24 import android.content.pm.ConfigurationInfo; 25 import android.content.pm.FeatureGroupInfo; 26 import android.content.pm.FeatureInfo; 27 import android.content.pm.PackageManager.Property; 28 import android.content.pm.SigningDetails; 29 import android.os.Bundle; 30 import android.util.SparseArray; 31 import android.util.SparseIntArray; 32 33 import com.android.server.pm.pkg.component.ParsedActivity; 34 import com.android.server.pm.pkg.component.ParsedApexSystemService; 35 import com.android.server.pm.pkg.component.ParsedAttribution; 36 import com.android.server.pm.pkg.component.ParsedInstrumentation; 37 import com.android.server.pm.pkg.component.ParsedIntentInfo; 38 import com.android.server.pm.pkg.component.ParsedPermission; 39 import com.android.server.pm.pkg.component.ParsedPermissionGroup; 40 import com.android.server.pm.pkg.component.ParsedProcess; 41 import com.android.server.pm.pkg.component.ParsedProvider; 42 import com.android.server.pm.pkg.component.ParsedService; 43 import com.android.server.pm.pkg.component.ParsedUsesPermission; 44 45 import java.security.PublicKey; 46 import java.util.Map; 47 import java.util.Set; 48 49 /** 50 * Methods used for mutation during direct package parsing. 51 * 52 * @hide 53 */ 54 @SuppressWarnings("UnusedReturnValue") 55 public interface ParsingPackage extends ParsingPackageRead { 56 addActivity(ParsedActivity parsedActivity)57 ParsingPackage addActivity(ParsedActivity parsedActivity); 58 addAdoptPermission(String adoptPermission)59 ParsingPackage addAdoptPermission(String adoptPermission); 60 addApexSystemService(ParsedApexSystemService parsedApexSystemService)61 ParsingPackage addApexSystemService(ParsedApexSystemService parsedApexSystemService); 62 addConfigPreference(ConfigurationInfo configPreference)63 ParsingPackage addConfigPreference(ConfigurationInfo configPreference); 64 addFeatureGroup(FeatureGroupInfo featureGroup)65 ParsingPackage addFeatureGroup(FeatureGroupInfo featureGroup); 66 addImplicitPermission(String permission)67 ParsingPackage addImplicitPermission(String permission); 68 addInstrumentation(ParsedInstrumentation instrumentation)69 ParsingPackage addInstrumentation(ParsedInstrumentation instrumentation); 70 addKeySet(String keySetName, PublicKey publicKey)71 ParsingPackage addKeySet(String keySetName, PublicKey publicKey); 72 addLibraryName(String libraryName)73 ParsingPackage addLibraryName(String libraryName); 74 addOriginalPackage(String originalPackage)75 ParsingPackage addOriginalPackage(String originalPackage); 76 addOverlayable(String overlayableName, String actorName)77 ParsingPackage addOverlayable(String overlayableName, String actorName); 78 addPermission(ParsedPermission permission)79 ParsingPackage addPermission(ParsedPermission permission); 80 addPermissionGroup(ParsedPermissionGroup permissionGroup)81 ParsingPackage addPermissionGroup(ParsedPermissionGroup permissionGroup); 82 addPreferredActivityFilter(String className, ParsedIntentInfo intentInfo)83 ParsingPackage addPreferredActivityFilter(String className, ParsedIntentInfo intentInfo); 84 85 /** Add a property to the application scope */ addProperty(Property property)86 ParsingPackage addProperty(Property property); 87 addProtectedBroadcast(String protectedBroadcast)88 ParsingPackage addProtectedBroadcast(String protectedBroadcast); 89 addProvider(ParsedProvider parsedProvider)90 ParsingPackage addProvider(ParsedProvider parsedProvider); 91 addAttribution(ParsedAttribution attribution)92 ParsingPackage addAttribution(ParsedAttribution attribution); 93 addReceiver(ParsedActivity parsedReceiver)94 ParsingPackage addReceiver(ParsedActivity parsedReceiver); 95 addReqFeature(FeatureInfo reqFeature)96 ParsingPackage addReqFeature(FeatureInfo reqFeature); 97 addUsesPermission(ParsedUsesPermission parsedUsesPermission)98 ParsingPackage addUsesPermission(ParsedUsesPermission parsedUsesPermission); 99 addService(ParsedService parsedService)100 ParsingPackage addService(ParsedService parsedService); 101 addUsesLibrary(String libraryName)102 ParsingPackage addUsesLibrary(String libraryName); 103 addUsesOptionalLibrary(String libraryName)104 ParsingPackage addUsesOptionalLibrary(String libraryName); 105 addUsesNativeLibrary(String libraryName)106 ParsingPackage addUsesNativeLibrary(String libraryName); 107 addUsesOptionalNativeLibrary(String libraryName)108 ParsingPackage addUsesOptionalNativeLibrary(String libraryName); 109 addUsesSdkLibrary(String libraryName, long versionMajor, String[] certSha256Digests)110 ParsingPackage addUsesSdkLibrary(String libraryName, long versionMajor, 111 String[] certSha256Digests); 112 addUsesStaticLibrary(String libraryName, long version, String[] certSha256Digests)113 ParsingPackage addUsesStaticLibrary(String libraryName, long version, 114 String[] certSha256Digests); 115 addQueriesIntent(Intent intent)116 ParsingPackage addQueriesIntent(Intent intent); 117 addQueriesPackage(String packageName)118 ParsingPackage addQueriesPackage(String packageName); 119 addQueriesProvider(String authority)120 ParsingPackage addQueriesProvider(String authority); 121 122 /** Sets a process name -> {@link ParsedProcess} map coming from the <processes> tag. */ setProcesses(@onNull Map<String, ParsedProcess> processes)123 ParsingPackage setProcesses(@NonNull Map<String, ParsedProcess> processes); 124 asSplit( String[] splitNames, String[] splitCodePaths, int[] splitRevisionCodes, @Nullable SparseArray<int[]> splitDependencies )125 ParsingPackage asSplit( 126 String[] splitNames, 127 String[] splitCodePaths, 128 int[] splitRevisionCodes, 129 @Nullable SparseArray<int[]> splitDependencies 130 ); 131 setMetaData(Bundle metaData)132 ParsingPackage setMetaData(Bundle metaData); 133 setForceQueryable(boolean forceQueryable)134 ParsingPackage setForceQueryable(boolean forceQueryable); 135 setMaxAspectRatio(float maxAspectRatio)136 ParsingPackage setMaxAspectRatio(float maxAspectRatio); 137 setMinAspectRatio(float minAspectRatio)138 ParsingPackage setMinAspectRatio(float minAspectRatio); 139 setPermission(String permission)140 ParsingPackage setPermission(String permission); 141 setProcessName(String processName)142 ParsingPackage setProcessName(String processName); 143 setSharedUserId(String sharedUserId)144 ParsingPackage setSharedUserId(String sharedUserId); 145 setStaticSharedLibName(String staticSharedLibName)146 ParsingPackage setStaticSharedLibName(String staticSharedLibName); 147 setTaskAffinity(String taskAffinity)148 ParsingPackage setTaskAffinity(String taskAffinity); 149 setTargetSdkVersion(int targetSdkVersion)150 ParsingPackage setTargetSdkVersion(int targetSdkVersion); 151 setUiOptions(int uiOptions)152 ParsingPackage setUiOptions(int uiOptions); 153 setBaseHardwareAccelerated(boolean baseHardwareAccelerated)154 ParsingPackage setBaseHardwareAccelerated(boolean baseHardwareAccelerated); 155 setResizeableActivity(Boolean resizeable)156 ParsingPackage setResizeableActivity(Boolean resizeable); 157 setResizeableActivityViaSdkVersion(boolean resizeableViaSdkVersion)158 ParsingPackage setResizeableActivityViaSdkVersion(boolean resizeableViaSdkVersion); 159 setAllowAudioPlaybackCapture(boolean allowAudioPlaybackCapture)160 ParsingPackage setAllowAudioPlaybackCapture(boolean allowAudioPlaybackCapture); 161 setAllowBackup(boolean allowBackup)162 ParsingPackage setAllowBackup(boolean allowBackup); 163 setAllowClearUserData(boolean allowClearUserData)164 ParsingPackage setAllowClearUserData(boolean allowClearUserData); 165 setAllowClearUserDataOnFailedRestore(boolean allowClearUserDataOnFailedRestore)166 ParsingPackage setAllowClearUserDataOnFailedRestore(boolean allowClearUserDataOnFailedRestore); 167 setAllowTaskReparenting(boolean allowTaskReparenting)168 ParsingPackage setAllowTaskReparenting(boolean allowTaskReparenting); 169 setOverlay(boolean isOverlay)170 ParsingPackage setOverlay(boolean isOverlay); 171 setBackupInForeground(boolean backupInForeground)172 ParsingPackage setBackupInForeground(boolean backupInForeground); 173 setCantSaveState(boolean cantSaveState)174 ParsingPackage setCantSaveState(boolean cantSaveState); 175 setDebuggable(boolean debuggable)176 ParsingPackage setDebuggable(boolean debuggable); 177 setDefaultToDeviceProtectedStorage(boolean defaultToDeviceProtectedStorage)178 ParsingPackage setDefaultToDeviceProtectedStorage(boolean defaultToDeviceProtectedStorage); 179 setDirectBootAware(boolean directBootAware)180 ParsingPackage setDirectBootAware(boolean directBootAware); 181 setExternalStorage(boolean externalStorage)182 ParsingPackage setExternalStorage(boolean externalStorage); 183 setExtractNativeLibs(boolean extractNativeLibs)184 ParsingPackage setExtractNativeLibs(boolean extractNativeLibs); 185 setFullBackupOnly(boolean fullBackupOnly)186 ParsingPackage setFullBackupOnly(boolean fullBackupOnly); 187 setHasCode(boolean hasCode)188 ParsingPackage setHasCode(boolean hasCode); 189 setHasFragileUserData(boolean hasFragileUserData)190 ParsingPackage setHasFragileUserData(boolean hasFragileUserData); 191 setGame(boolean isGame)192 ParsingPackage setGame(boolean isGame); 193 setIsolatedSplitLoading(boolean isolatedSplitLoading)194 ParsingPackage setIsolatedSplitLoading(boolean isolatedSplitLoading); 195 setKillAfterRestore(boolean killAfterRestore)196 ParsingPackage setKillAfterRestore(boolean killAfterRestore); 197 setLargeHeap(boolean largeHeap)198 ParsingPackage setLargeHeap(boolean largeHeap); 199 setMultiArch(boolean multiArch)200 ParsingPackage setMultiArch(boolean multiArch); 201 setPartiallyDirectBootAware(boolean partiallyDirectBootAware)202 ParsingPackage setPartiallyDirectBootAware(boolean partiallyDirectBootAware); 203 setPersistent(boolean persistent)204 ParsingPackage setPersistent(boolean persistent); 205 setProfileableByShell(boolean profileableByShell)206 ParsingPackage setProfileableByShell(boolean profileableByShell); 207 setProfileable(boolean profileable)208 ParsingPackage setProfileable(boolean profileable); 209 setRequestLegacyExternalStorage(boolean requestLegacyExternalStorage)210 ParsingPackage setRequestLegacyExternalStorage(boolean requestLegacyExternalStorage); 211 setAllowNativeHeapPointerTagging(boolean allowNativeHeapPointerTagging)212 ParsingPackage setAllowNativeHeapPointerTagging(boolean allowNativeHeapPointerTagging); 213 setAutoRevokePermissions(int autoRevokePermissions)214 ParsingPackage setAutoRevokePermissions(int autoRevokePermissions); 215 setPreserveLegacyExternalStorage(boolean preserveLegacyExternalStorage)216 ParsingPackage setPreserveLegacyExternalStorage(boolean preserveLegacyExternalStorage); 217 setRestoreAnyVersion(boolean restoreAnyVersion)218 ParsingPackage setRestoreAnyVersion(boolean restoreAnyVersion); 219 setSdkLibName(String sdkLibName)220 ParsingPackage setSdkLibName(String sdkLibName); 221 setSdkLibVersionMajor(int sdkLibVersionMajor)222 ParsingPackage setSdkLibVersionMajor(int sdkLibVersionMajor); 223 setSdkLibrary(boolean sdkLibrary)224 ParsingPackage setSdkLibrary(boolean sdkLibrary); 225 setSplitHasCode(int splitIndex, boolean splitHasCode)226 ParsingPackage setSplitHasCode(int splitIndex, boolean splitHasCode); 227 setStaticSharedLibrary(boolean staticSharedLibrary)228 ParsingPackage setStaticSharedLibrary(boolean staticSharedLibrary); 229 setSupportsRtl(boolean supportsRtl)230 ParsingPackage setSupportsRtl(boolean supportsRtl); 231 setTestOnly(boolean testOnly)232 ParsingPackage setTestOnly(boolean testOnly); 233 setUseEmbeddedDex(boolean useEmbeddedDex)234 ParsingPackage setUseEmbeddedDex(boolean useEmbeddedDex); 235 setUsesCleartextTraffic(boolean usesCleartextTraffic)236 ParsingPackage setUsesCleartextTraffic(boolean usesCleartextTraffic); 237 setUsesNonSdkApi(boolean usesNonSdkApi)238 ParsingPackage setUsesNonSdkApi(boolean usesNonSdkApi); 239 setVisibleToInstantApps(boolean visibleToInstantApps)240 ParsingPackage setVisibleToInstantApps(boolean visibleToInstantApps); 241 setVmSafeMode(boolean vmSafeMode)242 ParsingPackage setVmSafeMode(boolean vmSafeMode); 243 removeUsesOptionalLibrary(String libraryName)244 ParsingPackage removeUsesOptionalLibrary(String libraryName); 245 removeUsesOptionalNativeLibrary(String libraryName)246 ParsingPackage removeUsesOptionalNativeLibrary(String libraryName); 247 setAnyDensity(int anyDensity)248 ParsingPackage setAnyDensity(int anyDensity); 249 setAppComponentFactory(String appComponentFactory)250 ParsingPackage setAppComponentFactory(String appComponentFactory); 251 setBackupAgentName(String backupAgentName)252 ParsingPackage setBackupAgentName(String backupAgentName); 253 setBanner(int banner)254 ParsingPackage setBanner(int banner); 255 setCategory(int category)256 ParsingPackage setCategory(int category); 257 setClassLoaderName(String classLoaderName)258 ParsingPackage setClassLoaderName(String classLoaderName); 259 setClassName(String className)260 ParsingPackage setClassName(String className); 261 setCompatibleWidthLimitDp(int compatibleWidthLimitDp)262 ParsingPackage setCompatibleWidthLimitDp(int compatibleWidthLimitDp); 263 setDescriptionRes(int descriptionRes)264 ParsingPackage setDescriptionRes(int descriptionRes); 265 setEnabled(boolean enabled)266 ParsingPackage setEnabled(boolean enabled); 267 setGwpAsanMode(@pplicationInfo.GwpAsanMode int gwpAsanMode)268 ParsingPackage setGwpAsanMode(@ApplicationInfo.GwpAsanMode int gwpAsanMode); 269 setMemtagMode(@pplicationInfo.MemtagMode int memtagMode)270 ParsingPackage setMemtagMode(@ApplicationInfo.MemtagMode int memtagMode); 271 setNativeHeapZeroInitialized( @pplicationInfo.NativeHeapZeroInitialized int nativeHeapZeroInitialized)272 ParsingPackage setNativeHeapZeroInitialized( 273 @ApplicationInfo.NativeHeapZeroInitialized int nativeHeapZeroInitialized); 274 setRequestRawExternalStorageAccess( @ullable Boolean requestRawExternalStorageAccess)275 ParsingPackage setRequestRawExternalStorageAccess( 276 @Nullable Boolean requestRawExternalStorageAccess); 277 setCrossProfile(boolean crossProfile)278 ParsingPackage setCrossProfile(boolean crossProfile); 279 setFullBackupContent(int fullBackupContent)280 ParsingPackage setFullBackupContent(int fullBackupContent); 281 setDataExtractionRules(int dataExtractionRules)282 ParsingPackage setDataExtractionRules(int dataExtractionRules); 283 setHasDomainUrls(boolean hasDomainUrls)284 ParsingPackage setHasDomainUrls(boolean hasDomainUrls); 285 setIconRes(int iconRes)286 ParsingPackage setIconRes(int iconRes); 287 setInstallLocation(int installLocation)288 ParsingPackage setInstallLocation(int installLocation); 289 290 /** @see R#styleable.AndroidManifest_sharedUserMaxSdkVersion */ setLeavingSharedUid(boolean leavingSharedUid)291 ParsingPackage setLeavingSharedUid(boolean leavingSharedUid); 292 setLabelRes(int labelRes)293 ParsingPackage setLabelRes(int labelRes); 294 setLargestWidthLimitDp(int largestWidthLimitDp)295 ParsingPackage setLargestWidthLimitDp(int largestWidthLimitDp); 296 setLogo(int logo)297 ParsingPackage setLogo(int logo); 298 setManageSpaceActivityName(String manageSpaceActivityName)299 ParsingPackage setManageSpaceActivityName(String manageSpaceActivityName); 300 setMinExtensionVersions(@ullable SparseIntArray minExtensionVersions)301 ParsingPackage setMinExtensionVersions(@Nullable SparseIntArray minExtensionVersions); 302 setMinSdkVersion(int minSdkVersion)303 ParsingPackage setMinSdkVersion(int minSdkVersion); 304 setMaxSdkVersion(int maxSdkVersion)305 ParsingPackage setMaxSdkVersion(int maxSdkVersion); 306 setNetworkSecurityConfigRes(int networkSecurityConfigRes)307 ParsingPackage setNetworkSecurityConfigRes(int networkSecurityConfigRes); 308 setNonLocalizedLabel(CharSequence nonLocalizedLabel)309 ParsingPackage setNonLocalizedLabel(CharSequence nonLocalizedLabel); 310 setOverlayCategory(String overlayCategory)311 ParsingPackage setOverlayCategory(String overlayCategory); 312 setOverlayIsStatic(boolean overlayIsStatic)313 ParsingPackage setOverlayIsStatic(boolean overlayIsStatic); 314 setOverlayPriority(int overlayPriority)315 ParsingPackage setOverlayPriority(int overlayPriority); 316 setOverlayTarget(String overlayTarget)317 ParsingPackage setOverlayTarget(String overlayTarget); 318 setOverlayTargetOverlayableName(String overlayTargetOverlayableName)319 ParsingPackage setOverlayTargetOverlayableName(String overlayTargetOverlayableName); 320 setRequiredAccountType(String requiredAccountType)321 ParsingPackage setRequiredAccountType(String requiredAccountType); 322 setRequiredForAllUsers(boolean requiredForAllUsers)323 ParsingPackage setRequiredForAllUsers(boolean requiredForAllUsers); 324 setRequiresSmallestWidthDp(int requiresSmallestWidthDp)325 ParsingPackage setRequiresSmallestWidthDp(int requiresSmallestWidthDp); 326 setResizeable(int resizeable)327 ParsingPackage setResizeable(int resizeable); 328 setRestrictUpdateHash(byte[] restrictUpdateHash)329 ParsingPackage setRestrictUpdateHash(byte[] restrictUpdateHash); 330 setRestrictedAccountType(String restrictedAccountType)331 ParsingPackage setRestrictedAccountType(String restrictedAccountType); 332 setRoundIconRes(int roundIconRes)333 ParsingPackage setRoundIconRes(int roundIconRes); 334 setSharedUserLabel(int sharedUserLabel)335 ParsingPackage setSharedUserLabel(int sharedUserLabel); 336 setSigningDetails(SigningDetails signingDetails)337 ParsingPackage setSigningDetails(SigningDetails signingDetails); 338 setSplitClassLoaderName(int splitIndex, String classLoaderName)339 ParsingPackage setSplitClassLoaderName(int splitIndex, String classLoaderName); 340 setStaticSharedLibVersion(long staticSharedLibVersion)341 ParsingPackage setStaticSharedLibVersion(long staticSharedLibVersion); 342 setSupportsLargeScreens(int supportsLargeScreens)343 ParsingPackage setSupportsLargeScreens(int supportsLargeScreens); 344 setSupportsNormalScreens(int supportsNormalScreens)345 ParsingPackage setSupportsNormalScreens(int supportsNormalScreens); 346 setSupportsSmallScreens(int supportsSmallScreens)347 ParsingPackage setSupportsSmallScreens(int supportsSmallScreens); 348 setSupportsExtraLargeScreens(int supportsExtraLargeScreens)349 ParsingPackage setSupportsExtraLargeScreens(int supportsExtraLargeScreens); 350 setTargetSandboxVersion(int targetSandboxVersion)351 ParsingPackage setTargetSandboxVersion(int targetSandboxVersion); 352 setTheme(int theme)353 ParsingPackage setTheme(int theme); 354 setRequestForegroundServiceExemption(boolean requestForegroundServiceExemption)355 ParsingPackage setRequestForegroundServiceExemption(boolean requestForegroundServiceExemption); 356 setUpgradeKeySets(@onNull Set<String> upgradeKeySets)357 ParsingPackage setUpgradeKeySets(@NonNull Set<String> upgradeKeySets); 358 setUse32BitAbi(boolean use32BitAbi)359 ParsingPackage setUse32BitAbi(boolean use32BitAbi); 360 setVolumeUuid(@ullable String volumeUuid)361 ParsingPackage setVolumeUuid(@Nullable String volumeUuid); 362 setZygotePreloadName(String zygotePreloadName)363 ParsingPackage setZygotePreloadName(String zygotePreloadName); 364 sortActivities()365 ParsingPackage sortActivities(); 366 sortReceivers()367 ParsingPackage sortReceivers(); 368 sortServices()369 ParsingPackage sortServices(); 370 setBaseRevisionCode(int baseRevisionCode)371 ParsingPackage setBaseRevisionCode(int baseRevisionCode); 372 setVersionName(String versionName)373 ParsingPackage setVersionName(String versionName); 374 setCompileSdkVersion(int compileSdkVersion)375 ParsingPackage setCompileSdkVersion(int compileSdkVersion); 376 setCompileSdkVersionCodeName(String compileSdkVersionCodeName)377 ParsingPackage setCompileSdkVersionCodeName(String compileSdkVersionCodeName); 378 setAttributionsAreUserVisible(boolean attributionsAreUserVisible)379 ParsingPackage setAttributionsAreUserVisible(boolean attributionsAreUserVisible); 380 setResetEnabledSettingsOnAppDataCleared( boolean resetEnabledSettingsOnAppDataCleared)381 ParsingPackage setResetEnabledSettingsOnAppDataCleared( 382 boolean resetEnabledSettingsOnAppDataCleared); 383 setLocaleConfigRes(int localeConfigRes)384 ParsingPackage setLocaleConfigRes(int localeConfigRes); 385 386 /** 387 * Sets the trusted host certificates of apps that are allowed to embed activities of this 388 * application. 389 */ setKnownActivityEmbeddingCerts(Set<String> knownActivityEmbeddingCerts)390 ParsingPackage setKnownActivityEmbeddingCerts(Set<String> knownActivityEmbeddingCerts); 391 setOnBackInvokedCallbackEnabled(boolean enableOnBackInvokedCallback)392 ParsingPackage setOnBackInvokedCallbackEnabled(boolean enableOnBackInvokedCallback); 393 394 // TODO(b/135203078): This class no longer has access to ParsedPackage, find a replacement 395 // for moving to the next step 396 @CallSuper hideAsParsed()397 Object hideAsParsed(); 398 } 399