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