Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b0a39af authored by Song Chun Fan's avatar Song Chun Fan
Browse files

[ADI][33/N] expose appMetadataVerified status as a public API

API-Coverage-Bug: 420966373

BUG: 360129657
FLAG: android.content.pm.verification_service
Test: atest android.content.pm.cts.PackageInfoTest
Test: atest CtsRootDeveloperVerificationPrivInstallerTarget36TestCases CtsRootDeveloperVerificationInstallerTarget36TestCases CtsRootDeveloperVerificationPrivInstallerTarget35TestCases CtsRootDeveloperVerificationInstallerTarget35TestCases CtsRootDeveloperVerificationVerifierTestCases

Change-Id: I1d01e1c16eedee8eea5d171e9246413ce41d07ce
parent f56e6212
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -13208,6 +13208,7 @@ package android.content.pm {
    method @FlaggedApi("android.content.pm.provide_info_of_apk_in_apex") @Nullable public String getApexPackageName();
    method @FlaggedApi("android.content.pm.archiving") public long getArchiveTimeMillis();
    method public long getLongVersionCode();
    method @FlaggedApi("android.content.pm.verification_service") public boolean isAppMetadataVerified();
    method public void setLongVersionCode(long);
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PackageInfo> CREATOR;
+20 −0
Original line number Diff line number Diff line
@@ -509,6 +509,8 @@ public class PackageInfo implements Parcelable {
    @Nullable
    private String mApexPackageName;

    private boolean mIsAppMetadataVerified;

    public PackageInfo() {
    }

@@ -565,6 +567,22 @@ public class PackageInfo implements Parcelable {
        mApexPackageName = apexPackageName;
    }

    /**
     * Returns the verification status of the App Metadata of the package. This status is set at the
     * package installation time by the developer verification service provider.
     */
    @FlaggedApi(android.content.pm.Flags.FLAG_VERIFICATION_SERVICE)
    public boolean isAppMetadataVerified() {
        return mIsAppMetadataVerified;
    }

    /**
     * @hide
     */
    public void setIsAppMetadataVerified(boolean isVerified) {
        mIsAppMetadataVerified = isVerified;
    }

    @Override
    public String toString() {
        return "PackageInfo{"
@@ -639,6 +657,7 @@ public class PackageInfo implements Parcelable {
        } else {
            dest.writeInt(0);
        }
        dest.writeBoolean(mIsAppMetadataVerified);
        dest.restoreAllowSquashing(prevAllowSquashing);
    }

@@ -709,5 +728,6 @@ public class PackageInfo implements Parcelable {
        if (hasApexPackageName != 0) {
            mApexPackageName = source.readString8();
        }
        mIsAppMetadataVerified = source.readBoolean();
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@ import com.android.server.pm.pkg.PackageUserStateInternal;
import com.android.server.pm.pkg.PackageUserStateUtils;
import com.android.server.pm.pkg.SharedUserApi;
import com.android.server.pm.resolution.ComponentResolverApi;
import com.android.server.pm.verify.developer.DeveloperVerificationStatusInternal;
import com.android.server.pm.verify.domain.DomainVerificationManagerInternal;
import com.android.server.uri.UriGrantsManagerInternal;
import com.android.server.utils.WatchedArrayMap;
@@ -1538,6 +1539,14 @@ public class ComputerEngine implements Computer {
                            mApexManager.getActivePackageNameForApexModuleName(apexModuleName));
                }
            }
            if (Flags.verificationService()) {
                final DeveloperVerificationStatusInternal developerVerificationStatusInternal =
                        ps.getDeveloperVerificationStatusInternal();
                if (developerVerificationStatusInternal != null) {
                    packageInfo.setIsAppMetadataVerified(
                            developerVerificationStatusInternal.isAppMetadataVerified());
                }
            }
            return packageInfo;
        } else if ((flags & (MATCH_UNINSTALLED_PACKAGES | MATCH_ARCHIVED_PACKAGES)) != 0
                && PackageUserStateUtils.isAvailable(state, flags)) {
+7 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.internal.pm.parsing.pkg.AndroidPackageInternal;
import com.android.server.pm.InstallSource;
import com.android.server.pm.PackageKeySetData;
import com.android.server.pm.permission.LegacyPermissionState;
import com.android.server.pm.verify.developer.DeveloperVerificationStatusInternal;

import java.io.File;
import java.util.Set;
@@ -121,4 +122,10 @@ public interface PackageStateInternal extends PackageState {
     * @return the source of the app metadata that is currently associated with the given package.
     */
    int getAppMetadataSource();

    /**
     * @return the developer verification status of the package which was set when the package was
     * installed or updated.
     */
    DeveloperVerificationStatusInternal getDeveloperVerificationStatusInternal();
}
+4 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.server.pm.verify.developer;

import static android.content.pm.verify.developer.DeveloperVerificationStatus.APP_METADATA_VERIFICATION_STATUS_GOOD;
import static android.content.pm.verify.developer.DeveloperVerificationStatus.APP_METADATA_VERIFICATION_STATUS_UNDEFINED;
import static android.content.pm.verify.developer.DeveloperVerificationStatus.AppMetadataVerificationStatus;

@@ -61,7 +62,9 @@ public class DeveloperVerificationStatusInternal {
     */
    private boolean mLiteVerification = false;


    public boolean isAppMetadataVerified() {
        return mAppMetadataVerificationStatus == APP_METADATA_VERIFICATION_STATUS_GOOD;
    }

    // Code below generated by codegen v1.0.23.
    //