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 com.android.server.pm.parsing.pkg;
18 
19 import android.content.pm.SigningDetails;
20 
21 import com.android.server.pm.pkg.AndroidPackage;
22 
23 /**
24  * Methods used for mutation after direct package parsing, mostly done inside
25  * {@link com.android.server.pm.PackageManagerService}.
26  *
27  * Java disallows defining this as an inner interface, so this must be a separate file.
28  *
29  * TODO: Remove extending AndroidPackage, should be an isolated interface with only the methods
30  *  necessary to parse and install
31  *
32  * @hide
33  */
34 public interface ParsedPackage extends AndroidPackage {
35 
hideAsFinal()36     AndroidPackageInternal hideAsFinal();
37 
addUsesLibrary(int index, String libraryName)38     ParsedPackage addUsesLibrary(int index, String libraryName);
39 
addUsesOptionalLibrary(int index, String libraryName)40     ParsedPackage addUsesOptionalLibrary(int index, String libraryName);
41 
capPermissionPriorities()42     ParsedPackage capPermissionPriorities();
43 
clearAdoptPermissions()44     ParsedPackage clearAdoptPermissions();
45 
clearOriginalPackages()46     ParsedPackage clearOriginalPackages();
47 
clearProtectedBroadcasts()48     ParsedPackage clearProtectedBroadcasts();
49 
setBaseApkPath(String baseApkPath)50     ParsedPackage setBaseApkPath(String baseApkPath);
51 
setPath(String path)52     ParsedPackage setPath(String path);
53 
setNativeLibraryDir(String nativeLibraryDir)54     ParsedPackage setNativeLibraryDir(String nativeLibraryDir);
55 
setNativeLibraryRootDir(String nativeLibraryRootDir)56     ParsedPackage setNativeLibraryRootDir(String nativeLibraryRootDir);
57 
setPackageName(String packageName)58     ParsedPackage setPackageName(String packageName);
59 
setPrimaryCpuAbi(String primaryCpuAbi)60     ParsedPackage setPrimaryCpuAbi(String primaryCpuAbi);
61 
setSecondaryCpuAbi(String secondaryCpuAbi)62     ParsedPackage setSecondaryCpuAbi(String secondaryCpuAbi);
63 
setSigningDetails(SigningDetails signingDetails)64     ParsedPackage setSigningDetails(SigningDetails signingDetails);
65 
setSplitCodePaths(String[] splitCodePaths)66     ParsedPackage setSplitCodePaths(String[] splitCodePaths);
67 
setNativeLibraryRootRequiresIsa(boolean nativeLibraryRootRequiresIsa)68     ParsedPackage setNativeLibraryRootRequiresIsa(boolean nativeLibraryRootRequiresIsa);
69 
setAllComponentsDirectBootAware(boolean allComponentsDirectBootAware)70     ParsedPackage setAllComponentsDirectBootAware(boolean allComponentsDirectBootAware);
71 
setFactoryTest(boolean factoryTest)72     ParsedPackage setFactoryTest(boolean factoryTest);
73 
setApex(boolean isApex)74     ParsedPackage setApex(boolean isApex);
75 
markNotActivitiesAsNotExportedIfSingleUser()76     ParsedPackage markNotActivitiesAsNotExportedIfSingleUser();
77 
setOdm(boolean odm)78     ParsedPackage setOdm(boolean odm);
79 
setOem(boolean oem)80     ParsedPackage setOem(boolean oem);
81 
setPrivileged(boolean privileged)82     ParsedPackage setPrivileged(boolean privileged);
83 
setProduct(boolean product)84     ParsedPackage setProduct(boolean product);
85 
setSignedWithPlatformKey(boolean signedWithPlatformKey)86     ParsedPackage setSignedWithPlatformKey(boolean signedWithPlatformKey);
87 
setSystem(boolean system)88     ParsedPackage setSystem(boolean system);
89 
setSystemExt(boolean systemExt)90     ParsedPackage setSystemExt(boolean systemExt);
91 
setVendor(boolean vendor)92     ParsedPackage setVendor(boolean vendor);
93 
removePermission(int index)94     ParsedPackage removePermission(int index);
95 
removeUsesLibrary(String libraryName)96     ParsedPackage removeUsesLibrary(String libraryName);
97 
removeUsesOptionalLibrary(String libraryName)98     ParsedPackage removeUsesOptionalLibrary(String libraryName);
99 
setCoreApp(boolean coreApp)100     ParsedPackage setCoreApp(boolean coreApp);
101 
setStub(boolean isStub)102     ParsedPackage setStub(boolean isStub);
103 
setRestrictUpdateHash(byte[] restrictUpdateHash)104     ParsedPackage setRestrictUpdateHash(byte[] restrictUpdateHash);
105 
setSecondaryNativeLibraryDir(String secondaryNativeLibraryDir)106     ParsedPackage setSecondaryNativeLibraryDir(String secondaryNativeLibraryDir);
107 
108     /**
109      * This is an appId, the uid if the userId is == USER_SYSTEM
110      */
setUid(int uid)111     ParsedPackage setUid(int uid);
112 
setVersionCode(int versionCode)113     ParsedPackage setVersionCode(int versionCode);
114 
setVersionCodeMajor(int versionCodeMajor)115     ParsedPackage setVersionCodeMajor(int versionCodeMajor);
116 
117     // TODO(b/135203078): Move logic earlier in parse chain so nothing needs to be reverted
setDefaultToDeviceProtectedStorage(boolean defaultToDeviceProtectedStorage)118     ParsedPackage setDefaultToDeviceProtectedStorage(boolean defaultToDeviceProtectedStorage);
119 
setDirectBootAware(boolean directBootAware)120     ParsedPackage setDirectBootAware(boolean directBootAware);
121 
setPersistent(boolean persistent)122     ParsedPackage setPersistent(boolean persistent);
123 }
124