• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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