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.pkg;
18 
19 import android.annotation.IntDef;
20 import android.annotation.NonNull;
21 import android.annotation.Nullable;
22 import android.content.pm.ApplicationInfo;
23 import android.content.pm.PackageManager;
24 import android.content.pm.PackageManagerInternal;
25 import android.content.pm.SigningInfo;
26 import android.content.pm.overlay.OverlayPaths;
27 import android.os.UserHandle;
28 import android.util.ArraySet;
29 import android.util.SparseArray;
30 
31 import com.android.internal.util.DataClass;
32 import com.android.server.pm.PackageManagerService;
33 import com.android.server.pm.PackageSetting;
34 import com.android.server.pm.Settings;
35 
36 import java.io.File;
37 import java.util.Collections;
38 import java.util.List;
39 import java.util.Map;
40 import java.util.Set;
41 import java.util.function.Consumer;
42 
43 /**
44  * Because a {@link PackageSetting} cannot be returned from {@link Settings} without holding the
45  * {@link PackageManagerService#mLock}, this class serves as a memory snapshot of the state of a
46  * single package, for use with {@link PackageManagerInternal#getPackageState(String)} and {@link
47  * PackageManagerInternal#forEachPackageState(boolean, Consumer)}.
48  *
49  * @hide
50  */
51 @DataClass(genConstructor = false)
52 @DataClass.Suppress({"mUserStates"})
53 public class PackageStateImpl implements PackageState {
54 
copy(@onNull PackageStateInternal pkgSetting)55     public static PackageState copy(@NonNull PackageStateInternal pkgSetting) {
56         return new PackageStateImpl(pkgSetting, pkgSetting.getPkg());
57     }
58 
59     private static class Booleans {
60         @IntDef({
61                 SYSTEM,
62                 EXTERNAL_STORAGE,
63                 PRIVILEGED,
64                 OEM,
65                 VENDOR,
66                 PRODUCT,
67                 SYSTEM_EXT,
68                 REQUIRED_FOR_SYSTEM_USER,
69                 ODM,
70                 FORCE_QUERYABLE_OVERRIDE,
71                 HIDDEN_UNTIL_INSTALLED,
72                 INSTALL_PERMISSIONS_FIXED,
73                 UPDATE_AVAILABLE,
74                 UPDATED_SYSTEM_APP,
75                 APK_IN_UPDATED_APEX,
76         })
77         public @interface Flags {
78         }
79 
80         private static final int SYSTEM = 1;
81         private static final int EXTERNAL_STORAGE = 1 << 1;
82         private static final int PRIVILEGED = 1 << 2;
83         private static final int OEM = 1 << 3;
84         private static final int VENDOR = 1 << 4;
85         private static final int PRODUCT = 1 << 5;
86         private static final int SYSTEM_EXT = 1 << 6;
87         private static final int REQUIRED_FOR_SYSTEM_USER = 1 << 7;
88         private static final int ODM = 1 << 8;
89         private static final int FORCE_QUERYABLE_OVERRIDE = 1 << 9;
90         private static final int HIDDEN_UNTIL_INSTALLED = 1 << 10;
91         private static final int INSTALL_PERMISSIONS_FIXED = 1 << 11;
92         private static final int UPDATE_AVAILABLE = 1 << 12;
93         private static final int UPDATED_SYSTEM_APP = 1 << 13;
94         private static final int APK_IN_UPDATED_APEX = 1 << 14;
95     }
96 
97     private int mBooleans;
98 
setBoolean(@ooleans.Flags int flag, boolean value)99     private void setBoolean(@Booleans.Flags int flag, boolean value) {
100         if (value) {
101             mBooleans |= flag;
102         } else {
103             mBooleans &= ~flag;
104         }
105     }
106 
getBoolean(@ooleans.Flags int flag)107     private boolean getBoolean(@Booleans.Flags int flag) {
108         return (mBooleans & flag) != 0;
109     }
110 
111     @Nullable
112     private final AndroidPackage mAndroidPackage;
113 
114     @NonNull
115     private final String mPackageName;
116     @Nullable
117     private final String mVolumeUuid;
118     private final int mAppId;
119     private final int mCategoryOverride;
120     @Nullable
121     private final String mCpuAbiOverride;
122     @ApplicationInfo.HiddenApiEnforcementPolicy
123     private final int mHiddenApiEnforcementPolicy;
124     private final long mLastModifiedTime;
125     private final long mLastUpdateTime;
126     private final long mLongVersionCode;
127     @NonNull
128     private final Map<String, Set<String>> mMimeGroups;
129     @NonNull
130     private final File mPath;
131     @Nullable
132     private final String mPrimaryCpuAbi;
133     @Nullable
134     private final String mSecondaryCpuAbi;
135     @Nullable
136     private final String mSeInfo;
137     private final boolean mHasSharedUser;
138     private final int mSharedUserAppId;
139     @NonNull
140     private final String[] mUsesSdkLibraries;
141     @NonNull
142     private final long[] mUsesSdkLibrariesVersionsMajor;
143     @NonNull
144     private final String[] mUsesStaticLibraries;
145     @NonNull
146     private final long[] mUsesStaticLibrariesVersions;
147     @NonNull
148     private final List<SharedLibrary> mUsesLibraries;
149     @NonNull
150     private final List<String> mUsesLibraryFiles;
151     @NonNull
152     private final long[] mLastPackageUsageTime;
153     @NonNull
154     private final SigningInfo mSigningInfo;
155     @NonNull
156     private final SparseArray<PackageUserState> mUserStates;
157     @Nullable
158     private final String mApexModuleName;
159 
PackageStateImpl(@onNull PackageState pkgState, @Nullable AndroidPackage pkg)160     private PackageStateImpl(@NonNull PackageState pkgState, @Nullable AndroidPackage pkg) {
161         mAndroidPackage = pkg;
162 
163         setBoolean(Booleans.SYSTEM, pkgState.isSystem());
164         setBoolean(Booleans.EXTERNAL_STORAGE, pkgState.isExternalStorage());
165         setBoolean(Booleans.PRIVILEGED, pkgState.isPrivileged());
166         setBoolean(Booleans.OEM, pkgState.isOem());
167         setBoolean(Booleans.VENDOR, pkgState.isVendor());
168         setBoolean(Booleans.PRODUCT, pkgState.isProduct());
169         setBoolean(Booleans.SYSTEM_EXT, pkgState.isSystemExt());
170         setBoolean(Booleans.REQUIRED_FOR_SYSTEM_USER, pkgState.isRequiredForSystemUser());
171         setBoolean(Booleans.ODM, pkgState.isOdm());
172 
173         mPackageName = pkgState.getPackageName();
174         mVolumeUuid = pkgState.getVolumeUuid();
175         mAppId = pkgState.getAppId();
176         mCategoryOverride = pkgState.getCategoryOverride();
177         mCpuAbiOverride = pkgState.getCpuAbiOverride();
178         mHiddenApiEnforcementPolicy = pkgState.getHiddenApiEnforcementPolicy();
179         mLastModifiedTime = pkgState.getLastModifiedTime();
180         mLastUpdateTime = pkgState.getLastUpdateTime();
181         mLongVersionCode = pkgState.getVersionCode();
182         mMimeGroups = Collections.unmodifiableMap(pkgState.getMimeGroups());
183         mPath = pkgState.getPath();
184         mPrimaryCpuAbi = pkgState.getPrimaryCpuAbi();
185         mSecondaryCpuAbi = pkgState.getSecondaryCpuAbi();
186         mSeInfo = pkgState.getSeInfo();
187         mHasSharedUser = pkgState.hasSharedUser();
188         mSharedUserAppId = pkgState.getSharedUserAppId();
189         mUsesSdkLibraries = pkgState.getUsesSdkLibraries();
190         mUsesSdkLibrariesVersionsMajor = pkgState.getUsesSdkLibrariesVersionsMajor();
191         mUsesStaticLibraries = pkgState.getUsesStaticLibraries();
192         mUsesStaticLibrariesVersions = pkgState.getUsesStaticLibrariesVersions();
193         mUsesLibraries = Collections.unmodifiableList(pkgState.getSharedLibraryDependencies());
194         mUsesLibraryFiles = Collections.unmodifiableList(pkgState.getUsesLibraryFiles());
195         setBoolean(Booleans.FORCE_QUERYABLE_OVERRIDE, pkgState.isForceQueryableOverride());
196         setBoolean(Booleans.HIDDEN_UNTIL_INSTALLED, pkgState.isHiddenUntilInstalled());
197         setBoolean(Booleans.INSTALL_PERMISSIONS_FIXED, pkgState.isInstallPermissionsFixed());
198         setBoolean(Booleans.UPDATE_AVAILABLE, pkgState.isUpdateAvailable());
199         mLastPackageUsageTime = pkgState.getLastPackageUsageTime();
200         setBoolean(Booleans.UPDATED_SYSTEM_APP, pkgState.isUpdatedSystemApp());
201         setBoolean(Booleans.APK_IN_UPDATED_APEX, pkgState.isApkInUpdatedApex());
202         mSigningInfo = pkgState.getSigningInfo();
203 
204         SparseArray<? extends PackageUserState> userStates = pkgState.getUserStates();
205         int userStatesSize = userStates.size();
206         mUserStates = new SparseArray<>(userStatesSize);
207         for (int index = 0; index < userStatesSize; index++) {
208             mUserStates.put(userStates.keyAt(index),
209                     UserStateImpl.copy(userStates.valueAt(index)));
210         }
211 
212         mApexModuleName = pkgState.getApexModuleName();
213     }
214 
215     @NonNull
216     @Override
getStateForUser(@onNull UserHandle user)217     public PackageUserState getStateForUser(@NonNull UserHandle user) {
218         PackageUserState userState = getUserStates().get(user.getIdentifier());
219         return userState == null ? PackageUserState.DEFAULT : userState;
220     }
221 
222     @Override
isExternalStorage()223     public boolean isExternalStorage() {
224         return getBoolean(Booleans.EXTERNAL_STORAGE);
225     }
226 
227     @Override
isForceQueryableOverride()228     public boolean isForceQueryableOverride() {
229         return getBoolean(Booleans.FORCE_QUERYABLE_OVERRIDE);
230     }
231 
232     @Override
isHiddenUntilInstalled()233     public boolean isHiddenUntilInstalled() {
234         return getBoolean(Booleans.HIDDEN_UNTIL_INSTALLED);
235     }
236 
237     @Override
isInstallPermissionsFixed()238     public boolean isInstallPermissionsFixed() {
239         return getBoolean(Booleans.INSTALL_PERMISSIONS_FIXED);
240     }
241 
242     @Override
isOdm()243     public boolean isOdm() {
244         return getBoolean(Booleans.ODM);
245     }
246 
247     @Override
isOem()248     public boolean isOem() {
249         return getBoolean(Booleans.OEM);
250     }
251 
252     @Override
isPrivileged()253     public boolean isPrivileged() {
254         return getBoolean(Booleans.PRIVILEGED);
255     }
256 
257     @Override
isProduct()258     public boolean isProduct() {
259         return getBoolean(Booleans.PRODUCT);
260     }
261 
262     @Override
isRequiredForSystemUser()263     public boolean isRequiredForSystemUser() {
264         return getBoolean(Booleans.REQUIRED_FOR_SYSTEM_USER);
265     }
266 
267     @Override
isSystem()268     public boolean isSystem() {
269         return getBoolean(Booleans.SYSTEM);
270     }
271 
272     @Override
isSystemExt()273     public boolean isSystemExt() {
274         return getBoolean(Booleans.SYSTEM_EXT);
275     }
276 
277     @Override
isUpdateAvailable()278     public boolean isUpdateAvailable() {
279         return getBoolean(Booleans.UPDATE_AVAILABLE);
280     }
281 
282     @Override
isUpdatedSystemApp()283     public boolean isUpdatedSystemApp() {
284         return getBoolean(Booleans.UPDATED_SYSTEM_APP);
285     }
286 
287     @Override
isApkInUpdatedApex()288     public boolean isApkInUpdatedApex() {
289         return getBoolean(Booleans.APK_IN_UPDATED_APEX);
290     }
291 
292     @Override
isVendor()293     public boolean isVendor() {
294         return getBoolean(Booleans.VENDOR);
295     }
296 
297     @Override
getVersionCode()298     public long getVersionCode() {
299         return mLongVersionCode;
300     }
301 
302     @Override
hasSharedUser()303     public boolean hasSharedUser() {
304         return mHasSharedUser;
305     }
306 
307     @Override
isApex()308     public boolean isApex() {
309         return getAndroidPackage() != null && getAndroidPackage().isApex();
310     }
311 
312     /**
313      * @hide
314      */
315     @DataClass(genConstructor = false)
316     public static class UserStateImpl implements PackageUserState {
317 
copy(@onNull PackageUserState state)318         public static PackageUserState copy(@NonNull PackageUserState state) {
319             return new UserStateImpl(state);
320         }
321 
322         private static class Booleans {
323             @IntDef({
324                     HIDDEN,
325                     INSTALLED,
326                     INSTANT_APP,
327                     NOT_LAUNCHED,
328                     STOPPED,
329                     SUSPENDED,
330                     VIRTUAL_PRELOAD,
331             })
332             public @interface Flags {
333             }
334 
335             private static final int HIDDEN = 1;
336             private static final int INSTALLED = 1 << 1;
337             private static final int INSTANT_APP = 1 << 2;
338             private static final int NOT_LAUNCHED = 1 << 3;
339             private static final int STOPPED = 1 << 4;
340             private static final int SUSPENDED = 1 << 5;
341             private static final int VIRTUAL_PRELOAD = 1 << 6;
342         }
343 
344         private int mBooleans;
345 
setBoolean(@ooleans.Flags int flag, boolean value)346         private void setBoolean(@Booleans.Flags int flag, boolean value) {
347             if (value) {
348                 mBooleans |= flag;
349             } else {
350                 mBooleans &= ~flag;
351             }
352         }
353 
getBoolean(@ooleans.Flags int flag)354         private boolean getBoolean(@Booleans.Flags int flag) {
355             return (mBooleans & flag) != 0;
356         }
357 
358         private final long mCeDataInode;
359         @NonNull
360         private final ArraySet<String> mDisabledComponents;
361         @PackageManager.DistractionRestriction
362         private final int mDistractionFlags;
363         @NonNull
364         private final ArraySet<String> mEnabledComponents;
365         private final int mEnabledState;
366         @Nullable
367         private final String mHarmfulAppWarning;
368         @PackageManager.InstallReason
369         private final int mInstallReason;
370         @Nullable
371         private final String mLastDisableAppCaller;
372         @NonNull
373         private final OverlayPaths mOverlayPaths;
374         @NonNull
375         private final Map<String, OverlayPaths> mSharedLibraryOverlayPaths;
376         @PackageManager.UninstallReason
377         private final int mUninstallReason;
378         @Nullable
379         private final String mSplashScreenTheme;
380         @PackageManager.UserMinAspectRatio
381         private final int mMinAspectRatio;
382         private final long mFirstInstallTimeMillis;
383 
UserStateImpl(@onNull PackageUserState userState)384         private UserStateImpl(@NonNull PackageUserState userState) {
385             mCeDataInode = userState.getCeDataInode();
386             mDisabledComponents = userState.getDisabledComponents();
387             mDistractionFlags = userState.getDistractionFlags();
388             mEnabledComponents = userState.getEnabledComponents();
389             mEnabledState = userState.getEnabledState();
390             mHarmfulAppWarning = userState.getHarmfulAppWarning();
391             mInstallReason = userState.getInstallReason();
392             mLastDisableAppCaller = userState.getLastDisableAppCaller();
393             mOverlayPaths = userState.getOverlayPaths();
394             mSharedLibraryOverlayPaths = userState.getSharedLibraryOverlayPaths();
395             mUninstallReason = userState.getUninstallReason();
396             mSplashScreenTheme = userState.getSplashScreenTheme();
397             mMinAspectRatio = userState.getMinAspectRatio();
398             setBoolean(Booleans.HIDDEN, userState.isHidden());
399             setBoolean(Booleans.INSTALLED, userState.isInstalled());
400             setBoolean(Booleans.INSTANT_APP, userState.isInstantApp());
401             setBoolean(Booleans.NOT_LAUNCHED, userState.isNotLaunched());
402             setBoolean(Booleans.STOPPED, userState.isStopped());
403             setBoolean(Booleans.SUSPENDED, userState.isSuspended());
404             setBoolean(Booleans.VIRTUAL_PRELOAD, userState.isVirtualPreload());
405             mFirstInstallTimeMillis = userState.getFirstInstallTimeMillis();
406         }
407 
408         @Override
isHidden()409         public boolean isHidden() {
410             return getBoolean(Booleans.HIDDEN);
411         }
412 
413         @Override
isInstalled()414         public boolean isInstalled() {
415             return getBoolean(Booleans.INSTALLED);
416         }
417 
418         @Override
isInstantApp()419         public boolean isInstantApp() {
420             return getBoolean(Booleans.INSTANT_APP);
421         }
422 
423         @Override
isNotLaunched()424         public boolean isNotLaunched() {
425             return getBoolean(Booleans.NOT_LAUNCHED);
426         }
427 
428         @Override
isStopped()429         public boolean isStopped() {
430             return getBoolean(Booleans.STOPPED);
431         }
432 
433         @Override
isSuspended()434         public boolean isSuspended() {
435             return getBoolean(Booleans.SUSPENDED);
436         }
437 
438         @Override
isVirtualPreload()439         public boolean isVirtualPreload() {
440             return getBoolean(Booleans.VIRTUAL_PRELOAD);
441         }
442 
443         @Override
isComponentEnabled(String componentName)444         public boolean isComponentEnabled(String componentName) {
445             return mEnabledComponents.contains(componentName);
446         }
447 
448         @Override
isComponentDisabled(String componentName)449         public boolean isComponentDisabled(String componentName) {
450             return mDisabledComponents.contains(componentName);
451         }
452 
453         @Override
getAllOverlayPaths()454         public OverlayPaths getAllOverlayPaths() {
455             if (mOverlayPaths == null && mSharedLibraryOverlayPaths == null) {
456                 return null;
457             }
458             final OverlayPaths.Builder newPaths = new OverlayPaths.Builder();
459             newPaths.addAll(mOverlayPaths);
460             if (mSharedLibraryOverlayPaths != null) {
461                 for (final OverlayPaths libOverlayPaths : mSharedLibraryOverlayPaths.values()) {
462                     newPaths.addAll(libOverlayPaths);
463                 }
464             }
465             return newPaths.build();
466         }
467 
468 
469 
470         // Code below generated by codegen v1.0.23.
471         //
472         // DO NOT MODIFY!
473         // CHECKSTYLE:OFF Generated code
474         //
475         // To regenerate run:
476         // $ codegen $ANDROID_BUILD_TOP/frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java
477         //
478         // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
479         //   Settings > Editor > Code Style > Formatter Control
480         //@formatter:off
481 
482 
483         @DataClass.Generated.Member
getBooleans()484         public int getBooleans() {
485             return mBooleans;
486         }
487 
488         @DataClass.Generated.Member
getCeDataInode()489         public long getCeDataInode() {
490             return mCeDataInode;
491         }
492 
493         @DataClass.Generated.Member
getDisabledComponents()494         public @NonNull ArraySet<String> getDisabledComponents() {
495             return mDisabledComponents;
496         }
497 
498         @DataClass.Generated.Member
getDistractionFlags()499         public @PackageManager.DistractionRestriction int getDistractionFlags() {
500             return mDistractionFlags;
501         }
502 
503         @DataClass.Generated.Member
getEnabledComponents()504         public @NonNull ArraySet<String> getEnabledComponents() {
505             return mEnabledComponents;
506         }
507 
508         @DataClass.Generated.Member
getEnabledState()509         public int getEnabledState() {
510             return mEnabledState;
511         }
512 
513         @DataClass.Generated.Member
getHarmfulAppWarning()514         public @Nullable String getHarmfulAppWarning() {
515             return mHarmfulAppWarning;
516         }
517 
518         @DataClass.Generated.Member
getInstallReason()519         public @PackageManager.InstallReason int getInstallReason() {
520             return mInstallReason;
521         }
522 
523         @DataClass.Generated.Member
getLastDisableAppCaller()524         public @Nullable String getLastDisableAppCaller() {
525             return mLastDisableAppCaller;
526         }
527 
528         @DataClass.Generated.Member
getOverlayPaths()529         public @NonNull OverlayPaths getOverlayPaths() {
530             return mOverlayPaths;
531         }
532 
533         @DataClass.Generated.Member
getSharedLibraryOverlayPaths()534         public @NonNull Map<String,OverlayPaths> getSharedLibraryOverlayPaths() {
535             return mSharedLibraryOverlayPaths;
536         }
537 
538         @DataClass.Generated.Member
getUninstallReason()539         public @PackageManager.UninstallReason int getUninstallReason() {
540             return mUninstallReason;
541         }
542 
543         @DataClass.Generated.Member
getSplashScreenTheme()544         public @Nullable String getSplashScreenTheme() {
545             return mSplashScreenTheme;
546         }
547 
548         @DataClass.Generated.Member
getMinAspectRatio()549         public @PackageManager.UserMinAspectRatio int getMinAspectRatio() {
550             return mMinAspectRatio;
551         }
552 
553         @DataClass.Generated.Member
getFirstInstallTimeMillis()554         public long getFirstInstallTimeMillis() {
555             return mFirstInstallTimeMillis;
556         }
557 
558         @DataClass.Generated.Member
setBooleans( int value)559         public @NonNull UserStateImpl setBooleans( int value) {
560             mBooleans = value;
561             return this;
562         }
563 
564         @DataClass.Generated(
565                 time = 1687938966108L,
566                 codegenVersion = "1.0.23",
567                 sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java",
568                 inputSignatures = "private  int mBooleans\nprivate final  long mCeDataInode\nprivate final @android.annotation.NonNull android.util.ArraySet<java.lang.String> mDisabledComponents\nprivate final @android.content.pm.PackageManager.DistractionRestriction int mDistractionFlags\nprivate final @android.annotation.NonNull android.util.ArraySet<java.lang.String> mEnabledComponents\nprivate final  int mEnabledState\nprivate final @android.annotation.Nullable java.lang.String mHarmfulAppWarning\nprivate final @android.content.pm.PackageManager.InstallReason int mInstallReason\nprivate final @android.annotation.Nullable java.lang.String mLastDisableAppCaller\nprivate final @android.annotation.NonNull android.content.pm.overlay.OverlayPaths mOverlayPaths\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,android.content.pm.overlay.OverlayPaths> mSharedLibraryOverlayPaths\nprivate final @android.content.pm.PackageManager.UninstallReason int mUninstallReason\nprivate final @android.annotation.Nullable java.lang.String mSplashScreenTheme\nprivate final @android.content.pm.PackageManager.UserMinAspectRatio int mMinAspectRatio\nprivate final  long mFirstInstallTimeMillis\npublic static  com.android.server.pm.pkg.PackageUserState copy(com.android.server.pm.pkg.PackageUserState)\nprivate  void setBoolean(int,boolean)\nprivate  boolean getBoolean(int)\npublic @java.lang.Override boolean isHidden()\npublic @java.lang.Override boolean isInstalled()\npublic @java.lang.Override boolean isInstantApp()\npublic @java.lang.Override boolean isNotLaunched()\npublic @java.lang.Override boolean isStopped()\npublic @java.lang.Override boolean isSuspended()\npublic @java.lang.Override boolean isVirtualPreload()\npublic @java.lang.Override boolean isComponentEnabled(java.lang.String)\npublic @java.lang.Override boolean isComponentDisabled(java.lang.String)\npublic @java.lang.Override android.content.pm.overlay.OverlayPaths getAllOverlayPaths()\nclass UserStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageUserState]\nprivate static final  int HIDDEN\nprivate static final  int INSTALLED\nprivate static final  int INSTANT_APP\nprivate static final  int NOT_LAUNCHED\nprivate static final  int STOPPED\nprivate static final  int SUSPENDED\nprivate static final  int VIRTUAL_PRELOAD\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)")
569         @Deprecated
__metadata()570         private void __metadata() {}
571 
572 
573         //@formatter:on
574         // End of generated code
575 
576     }
577 
578 
579 
580     // Code below generated by codegen v1.0.23.
581     //
582     // DO NOT MODIFY!
583     // CHECKSTYLE:OFF Generated code
584     //
585     // To regenerate run:
586     // $ codegen $ANDROID_BUILD_TOP/frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java
587     //
588     // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
589     //   Settings > Editor > Code Style > Formatter Control
590     //@formatter:off
591 
592 
593     @DataClass.Generated.Member
getBooleans()594     public int getBooleans() {
595         return mBooleans;
596     }
597 
598     @DataClass.Generated.Member
getAndroidPackage()599     public @Nullable AndroidPackage getAndroidPackage() {
600         return mAndroidPackage;
601     }
602 
603     @DataClass.Generated.Member
getPackageName()604     public @NonNull String getPackageName() {
605         return mPackageName;
606     }
607 
608     @DataClass.Generated.Member
getVolumeUuid()609     public @Nullable String getVolumeUuid() {
610         return mVolumeUuid;
611     }
612 
613     @DataClass.Generated.Member
getAppId()614     public int getAppId() {
615         return mAppId;
616     }
617 
618     @DataClass.Generated.Member
getCategoryOverride()619     public int getCategoryOverride() {
620         return mCategoryOverride;
621     }
622 
623     @DataClass.Generated.Member
getCpuAbiOverride()624     public @Nullable String getCpuAbiOverride() {
625         return mCpuAbiOverride;
626     }
627 
628     @DataClass.Generated.Member
getHiddenApiEnforcementPolicy()629     public @ApplicationInfo.HiddenApiEnforcementPolicy int getHiddenApiEnforcementPolicy() {
630         return mHiddenApiEnforcementPolicy;
631     }
632 
633     @DataClass.Generated.Member
getLastModifiedTime()634     public long getLastModifiedTime() {
635         return mLastModifiedTime;
636     }
637 
638     @DataClass.Generated.Member
getLastUpdateTime()639     public long getLastUpdateTime() {
640         return mLastUpdateTime;
641     }
642 
643     @DataClass.Generated.Member
getLongVersionCode()644     public long getLongVersionCode() {
645         return mLongVersionCode;
646     }
647 
648     @DataClass.Generated.Member
getMimeGroups()649     public @NonNull Map<String,Set<String>> getMimeGroups() {
650         return mMimeGroups;
651     }
652 
653     @DataClass.Generated.Member
getPath()654     public @NonNull File getPath() {
655         return mPath;
656     }
657 
658     @DataClass.Generated.Member
getPrimaryCpuAbi()659     public @Nullable String getPrimaryCpuAbi() {
660         return mPrimaryCpuAbi;
661     }
662 
663     @DataClass.Generated.Member
getSecondaryCpuAbi()664     public @Nullable String getSecondaryCpuAbi() {
665         return mSecondaryCpuAbi;
666     }
667 
668     @DataClass.Generated.Member
getSeInfo()669     public @Nullable String getSeInfo() {
670         return mSeInfo;
671     }
672 
673     @DataClass.Generated.Member
isHasSharedUser()674     public boolean isHasSharedUser() {
675         return mHasSharedUser;
676     }
677 
678     @DataClass.Generated.Member
getSharedUserAppId()679     public int getSharedUserAppId() {
680         return mSharedUserAppId;
681     }
682 
683     @DataClass.Generated.Member
getUsesSdkLibraries()684     public @NonNull String[] getUsesSdkLibraries() {
685         return mUsesSdkLibraries;
686     }
687 
688     @DataClass.Generated.Member
getUsesSdkLibrariesVersionsMajor()689     public @NonNull long[] getUsesSdkLibrariesVersionsMajor() {
690         return mUsesSdkLibrariesVersionsMajor;
691     }
692 
693     @DataClass.Generated.Member
getUsesStaticLibraries()694     public @NonNull String[] getUsesStaticLibraries() {
695         return mUsesStaticLibraries;
696     }
697 
698     @DataClass.Generated.Member
getUsesStaticLibrariesVersions()699     public @NonNull long[] getUsesStaticLibrariesVersions() {
700         return mUsesStaticLibrariesVersions;
701     }
702 
703     @DataClass.Generated.Member
getSharedLibraryDependencies()704     public @NonNull List<SharedLibrary> getSharedLibraryDependencies() {
705         return mUsesLibraries;
706     }
707 
708     @DataClass.Generated.Member
getUsesLibraryFiles()709     public @NonNull List<String> getUsesLibraryFiles() {
710         return mUsesLibraryFiles;
711     }
712 
713     @DataClass.Generated.Member
getLastPackageUsageTime()714     public @NonNull long[] getLastPackageUsageTime() {
715         return mLastPackageUsageTime;
716     }
717 
718     @DataClass.Generated.Member
getSigningInfo()719     public @NonNull SigningInfo getSigningInfo() {
720         return mSigningInfo;
721     }
722 
723     @DataClass.Generated.Member
getUserStates()724     public @NonNull SparseArray<PackageUserState> getUserStates() {
725         return mUserStates;
726     }
727 
728     @DataClass.Generated.Member
getApexModuleName()729     public @Nullable String getApexModuleName() {
730         return mApexModuleName;
731     }
732 
733     @DataClass.Generated.Member
setBooleans( int value)734     public @NonNull PackageStateImpl setBooleans( int value) {
735         mBooleans = value;
736         return this;
737     }
738 
739     @DataClass.Generated(
740             time = 1671671043929L,
741             codegenVersion = "1.0.23",
742             sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java",
743             inputSignatures = "private  int mBooleans\nprivate final @android.annotation.Nullable com.android.server.pm.pkg.AndroidPackage mAndroidPackage\nprivate final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.Nullable java.lang.String mVolumeUuid\nprivate final  int mAppId\nprivate final  int mCategoryOverride\nprivate final @android.annotation.Nullable java.lang.String mCpuAbiOverride\nprivate final @android.content.pm.ApplicationInfo.HiddenApiEnforcementPolicy int mHiddenApiEnforcementPolicy\nprivate final  long mLastModifiedTime\nprivate final  long mLastUpdateTime\nprivate final  long mLongVersionCode\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,java.util.Set<java.lang.String>> mMimeGroups\nprivate final @android.annotation.NonNull java.io.File mPath\nprivate final @android.annotation.Nullable java.lang.String mPrimaryCpuAbi\nprivate final @android.annotation.Nullable java.lang.String mSecondaryCpuAbi\nprivate final @android.annotation.Nullable java.lang.String mSeInfo\nprivate final  boolean mHasSharedUser\nprivate final  int mSharedUserAppId\nprivate final @android.annotation.NonNull java.lang.String[] mUsesSdkLibraries\nprivate final @android.annotation.NonNull long[] mUsesSdkLibrariesVersionsMajor\nprivate final @android.annotation.NonNull java.lang.String[] mUsesStaticLibraries\nprivate final @android.annotation.NonNull long[] mUsesStaticLibrariesVersions\nprivate final @android.annotation.NonNull java.util.List<com.android.server.pm.pkg.SharedLibrary> mUsesLibraries\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesLibraryFiles\nprivate final @android.annotation.NonNull long[] mLastPackageUsageTime\nprivate final @android.annotation.NonNull android.content.pm.SigningInfo mSigningInfo\nprivate final @android.annotation.NonNull android.util.SparseArray<com.android.server.pm.pkg.PackageUserState> mUserStates\nprivate final @android.annotation.Nullable java.lang.String mApexModuleName\npublic static  com.android.server.pm.pkg.PackageState copy(com.android.server.pm.pkg.PackageStateInternal)\nprivate  void setBoolean(int,boolean)\nprivate  boolean getBoolean(int)\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageUserState getStateForUser(android.os.UserHandle)\npublic @java.lang.Override boolean isExternalStorage()\npublic @java.lang.Override boolean isForceQueryableOverride()\npublic @java.lang.Override boolean isHiddenUntilInstalled()\npublic @java.lang.Override boolean isInstallPermissionsFixed()\npublic @java.lang.Override boolean isOdm()\npublic @java.lang.Override boolean isOem()\npublic @java.lang.Override boolean isPrivileged()\npublic @java.lang.Override boolean isProduct()\npublic @java.lang.Override boolean isRequiredForSystemUser()\npublic @java.lang.Override boolean isSystem()\npublic @java.lang.Override boolean isSystemExt()\npublic @java.lang.Override boolean isUpdateAvailable()\npublic @java.lang.Override boolean isUpdatedSystemApp()\npublic @java.lang.Override boolean isApkInUpdatedApex()\npublic @java.lang.Override boolean isVendor()\npublic @java.lang.Override long getVersionCode()\npublic @java.lang.Override boolean hasSharedUser()\npublic @java.lang.Override boolean isApex()\nclass PackageStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageState]\nprivate static final  int SYSTEM\nprivate static final  int EXTERNAL_STORAGE\nprivate static final  int PRIVILEGED\nprivate static final  int OEM\nprivate static final  int VENDOR\nprivate static final  int PRODUCT\nprivate static final  int SYSTEM_EXT\nprivate static final  int REQUIRED_FOR_SYSTEM_USER\nprivate static final  int ODM\nprivate static final  int FORCE_QUERYABLE_OVERRIDE\nprivate static final  int HIDDEN_UNTIL_INSTALLED\nprivate static final  int INSTALL_PERMISSIONS_FIXED\nprivate static final  int UPDATE_AVAILABLE\nprivate static final  int UPDATED_SYSTEM_APP\nprivate static final  int APK_IN_UPDATED_APEX\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)")
744     @Deprecated
__metadata()745     private void __metadata() {}
746 
747 
748     //@formatter:on
749     // End of generated code
750 
751 }
752