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