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

Commit d6a2d21f authored by Song Chun Fan's avatar Song Chun Fan
Browse files

[ADI][8/N] per-user global verification policy

+ global verification policy can be different per user
+ log initial verification policy per session for debugging

FLAG: android.content.pm.verification_service

BUG: 360129657
Test: atest CtsPackageManagerTestCases:VerifierServiceTest

Reverted changes: /q/submissionid:30469933-revert_verification_service_main

Merged-In: I1ca0d08ddcc05569e887ef0ccb86d9b3f0bf0a1b
Change-Id: I1ca0d08ddcc05569e887ef0ccb86d9b3f0bf0a1b
parent e894177d
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -95,8 +95,8 @@ interface IPackageInstaller {
    void reportUnarchivalStatus(int unarchiveId, int status, long requiredStorageBytes, in PendingIntent userActionIntent, in UserHandle userHandle);
    void reportUnarchivalStatus(int unarchiveId, int status, long requiredStorageBytes, in PendingIntent userActionIntent, in UserHandle userHandle);


    @EnforcePermission("VERIFICATION_AGENT")
    @EnforcePermission("VERIFICATION_AGENT")
    int getVerificationPolicy();
    int getVerificationPolicy(int userId);


    @EnforcePermission("VERIFICATION_AGENT")
    @EnforcePermission("VERIFICATION_AGENT")
    boolean setVerificationPolicy(int policy);
    boolean setVerificationPolicy(int policy, int userId);
}
}
+2 −2
Original line number Original line Diff line number Diff line
@@ -1625,7 +1625,7 @@ public class PackageInstaller {
    @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)
    @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)
    public final @VerificationPolicy int getVerificationPolicy() {
    public final @VerificationPolicy int getVerificationPolicy() {
        try {
        try {
            return mInstaller.getVerificationPolicy();
            return mInstaller.getVerificationPolicy(mUserId);
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
            throw e.rethrowFromSystemServer();
        }
        }
@@ -1643,7 +1643,7 @@ public class PackageInstaller {
    @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)
    @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)
    public final boolean setVerificationPolicy(@VerificationPolicy int policy) {
    public final boolean setVerificationPolicy(@VerificationPolicy int policy) {
        try {
        try {
            return mInstaller.setVerificationPolicy(policy);
            return mInstaller.setVerificationPolicy(policy, mUserId);
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
            throw e.rethrowFromSystemServer();
        }
        }
+8 −1
Original line number Original line Diff line number Diff line
@@ -79,6 +79,8 @@ public final class PackageInstallerHistoricalSession {
    private final String mSessionErrorMessage;
    private final String mSessionErrorMessage;
    private final String mPreVerifiedDomains;
    private final String mPreVerifiedDomains;
    private final String mPackageName;
    private final String mPackageName;
    private final int mInitialVerificationPolicy;
    private final int mCurrentVerificationPolicy;


    PackageInstallerHistoricalSession(int sessionId, int userId, int originalInstallerUid,
    PackageInstallerHistoricalSession(int sessionId, int userId, int originalInstallerUid,
            String originalInstallerPackageName, InstallSource installSource, int installerUid,
            String originalInstallerPackageName, InstallSource installSource, int installerUid,
@@ -90,7 +92,8 @@ public final class PackageInstallerHistoricalSession {
            int[] childSessionIds, boolean sessionApplied, boolean sessionFailed,
            int[] childSessionIds, boolean sessionApplied, boolean sessionFailed,
            boolean sessionReady, int sessionErrorCode, String sessionErrorMessage,
            boolean sessionReady, int sessionErrorCode, String sessionErrorMessage,
            PreapprovalDetails preapprovalDetails, DomainSet preVerifiedDomains,
            PreapprovalDetails preapprovalDetails, DomainSet preVerifiedDomains,
            String packageNameFromApk) {
            String packageNameFromApk, int initialVerificationPolicy,
            int currentVerificationPolicy) {
        this.sessionId = sessionId;
        this.sessionId = sessionId;
        this.userId = userId;
        this.userId = userId;
        this.mOriginalInstallerUid = originalInstallerUid;
        this.mOriginalInstallerUid = originalInstallerUid;
@@ -140,6 +143,8 @@ public final class PackageInstallerHistoricalSession {


        this.mPackageName = preapprovalDetails != null ? preapprovalDetails.getPackageName()
        this.mPackageName = preapprovalDetails != null ? preapprovalDetails.getPackageName()
                : packageNameFromApk != null ? packageNameFromApk : params.appPackageName;
                : packageNameFromApk != null ? packageNameFromApk : params.appPackageName;
        this.mInitialVerificationPolicy = initialVerificationPolicy;
        this.mCurrentVerificationPolicy = currentVerificationPolicy;
    }
    }


    void dump(IndentingPrintWriter pw) {
    void dump(IndentingPrintWriter pw) {
@@ -184,6 +189,8 @@ public final class PackageInstallerHistoricalSession {
        pw.printPair("mPreapprovalDetails", mPreapprovalDetails);
        pw.printPair("mPreapprovalDetails", mPreapprovalDetails);
        pw.printPair("mPreVerifiedDomains", mPreVerifiedDomains);
        pw.printPair("mPreVerifiedDomains", mPreVerifiedDomains);
        pw.printPair("mAppPackageName", mPackageName);
        pw.printPair("mAppPackageName", mPackageName);
        pw.printPair("mInitialVerificationPolicy", mInitialVerificationPolicy);
        pw.printPair("mCurrentVerificationPolicy", mCurrentVerificationPolicy);
        pw.println();
        pw.println();


        pw.decreaseIndent();
        pw.decreaseIndent();
+49 −11
Original line number Original line Diff line number Diff line
@@ -32,6 +32,7 @@ import static android.content.pm.PackageManager.DELETE_ARCHIVE;
import static android.content.pm.PackageManager.INSTALL_UNARCHIVE_DRAFT;
import static android.content.pm.PackageManager.INSTALL_UNARCHIVE_DRAFT;
import static android.os.Process.INVALID_UID;
import static android.os.Process.INVALID_UID;
import static android.os.Process.SYSTEM_UID;
import static android.os.Process.SYSTEM_UID;
import static android.os.UserHandle.USER_SYSTEM;


import static com.android.server.pm.PackageArchiver.isArchivingEnabled;
import static com.android.server.pm.PackageArchiver.isArchivingEnabled;
import static com.android.server.pm.PackageInstallerSession.isValidVerificationPolicy;
import static com.android.server.pm.PackageInstallerSession.isValidVerificationPolicy;
@@ -156,7 +157,6 @@ import java.util.Set;
import java.util.TreeMap;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.TreeSet;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.IntPredicate;
import java.util.function.IntPredicate;
import java.util.function.Supplier;
import java.util.function.Supplier;


@@ -284,11 +284,12 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
    };
    };


    /**
    /**
     * Default verification policy for incoming installation sessions.
     * Default verification policy for incoming installation sessions, mapped from userId to policy.
     * TODO(b/360129657): update the default policy.
     */
     */
    private final AtomicInteger mVerificationPolicy = new AtomicInteger(
    @GuardedBy("mVerificationPolicyPerUser")
            VERIFICATION_POLICY_BLOCK_FAIL_WARN);
    private final SparseIntArray mVerificationPolicyPerUser = new SparseIntArray(1);
    // TODO(b/360129657): update the default policy.
    private static final int DEFAULT_VERIFICATION_POLICY = VERIFICATION_POLICY_BLOCK_FAIL_WARN;


    private static final class Lifecycle extends SystemService {
    private static final class Lifecycle extends SystemService {
        private final PackageInstallerService mPackageInstallerService;
        private final PackageInstallerService mPackageInstallerService;
@@ -345,6 +346,9 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
                context, mInstallThread.getLooper(), new AppStateHelper(context));
                context, mInstallThread.getLooper(), new AppStateHelper(context));
        mPackageArchiver = new PackageArchiver(mContext, mPm);
        mPackageArchiver = new PackageArchiver(mContext, mPm);
        mVerifierController = new VerifierController(mContext, mInstallHandler);
        mVerifierController = new VerifierController(mContext, mInstallHandler);
        synchronized (mVerificationPolicyPerUser) {
            mVerificationPolicyPerUser.put(USER_SYSTEM, DEFAULT_VERIFICATION_POLICY);
        }
        mInstallDependencyHelper = new InstallDependencyHelper(mContext,
        mInstallDependencyHelper = new InstallDependencyHelper(mContext,
                mPm.mInjector.getSharedLibrariesImpl(), this);
                mPm.mInjector.getSharedLibrariesImpl(), this);


@@ -1086,13 +1090,17 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
        InstallSource installSource = InstallSource.create(installerPackageName,
        InstallSource installSource = InstallSource.create(installerPackageName,
                originatingPackageName, requestedInstallerPackageName, requestedInstallerPackageUid,
                originatingPackageName, requestedInstallerPackageName, requestedInstallerPackageUid,
                requestedInstallerPackageName, installerAttributionTag, params.packageSource);
                requestedInstallerPackageName, installerAttributionTag, params.packageSource);
        final int verificationPolicy;
        synchronized (mVerificationPolicyPerUser) {
            verificationPolicy = mVerificationPolicyPerUser.get(
                    userId, DEFAULT_VERIFICATION_POLICY);
        }
        session = new PackageInstallerSession(mInternalCallback, mContext, mPm, this,
        session = new PackageInstallerSession(mInternalCallback, mContext, mPm, this,
                mSilentUpdatePolicy, mInstallThread.getLooper(), mStagingManager, sessionId,
                mSilentUpdatePolicy, mInstallThread.getLooper(), mStagingManager, sessionId,
                userId, callingUid, installSource, params, createdMillis, 0L, stageDir, stageCid,
                userId, callingUid, installSource, params, createdMillis, 0L, stageDir, stageCid,
                null, null, false, false, false, false, null, SessionInfo.INVALID_ID,
                null, null, false, false, false, false, null, SessionInfo.INVALID_ID,
                false, false, false, PackageManager.INSTALL_UNKNOWN, "", null,
                false, false, false, PackageManager.INSTALL_UNKNOWN, "", null,
                mVerifierController, verificationPolicy, verificationPolicy,
                mVerifierController, verificationPolicy, verificationPolicy,
                mVerifierController, mVerificationPolicy.get(),
                mInstallDependencyHelper);
                mInstallDependencyHelper);


        synchronized (mSessions) {
        synchronized (mSessions) {
@@ -1924,14 +1932,22 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements


    @Override
    @Override
    @EnforcePermission(android.Manifest.permission.VERIFICATION_AGENT)
    @EnforcePermission(android.Manifest.permission.VERIFICATION_AGENT)
    public @PackageInstaller.VerificationPolicy int getVerificationPolicy() {
    public @PackageInstaller.VerificationPolicy int getVerificationPolicy(int userId) {
        getVerificationPolicy_enforcePermission();
        getVerificationPolicy_enforcePermission();
        return mVerificationPolicy.get();
        synchronized (mVerificationPolicyPerUser) {
            if (mVerificationPolicyPerUser.indexOfKey(userId) < 0) {
                throw new IllegalStateException(
                        "Verification policy for user " + userId + " does not exist."
                                + " Does the user exist?");
            }
            return mVerificationPolicyPerUser.get(userId);
        }
    }
    }


    @Override
    @Override
    @EnforcePermission(android.Manifest.permission.VERIFICATION_AGENT)
    @EnforcePermission(android.Manifest.permission.VERIFICATION_AGENT)
    public boolean setVerificationPolicy(@PackageInstaller.VerificationPolicy int policy) {
    public boolean setVerificationPolicy(@PackageInstaller.VerificationPolicy int policy,
            int userId) {
        setVerificationPolicy_enforcePermission();
        setVerificationPolicy_enforcePermission();
        final int callingUid = getCallingUid();
        final int callingUid = getCallingUid();
        // Only the verifier currently bound by the system can change the policy, except for Shell
        // Only the verifier currently bound by the system can change the policy, except for Shell
@@ -1941,12 +1957,31 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
        if (!isValidVerificationPolicy(policy)) {
        if (!isValidVerificationPolicy(policy)) {
            return false;
            return false;
        }
        }
        if (policy != mVerificationPolicy.get()) {
        synchronized (mVerificationPolicyPerUser) {
            mVerificationPolicy.set(policy);
            if (mVerificationPolicyPerUser.indexOfKey(userId) < 0) {
                throw new IllegalStateException(
                        "Verification policy for user " + userId + " does not exist."
                                + " Does the user exist?");
            }
            if (policy != mVerificationPolicyPerUser.get(userId)) {
                mVerificationPolicyPerUser.put(userId, policy);
            }
        }
        }
        return true;
        return true;
    }
    }


    void onUserAdded(int userId) {
        synchronized (mVerificationPolicyPerUser) {
            mVerificationPolicyPerUser.put(userId, DEFAULT_VERIFICATION_POLICY);
        }
    }

    void onUserRemoved(int userId) {
        synchronized (mVerificationPolicyPerUser) {
            mVerificationPolicyPerUser.delete(userId);
        }
    }

    private static int getSessionCount(SparseArray<PackageInstallerSession> sessions,
    private static int getSessionCount(SparseArray<PackageInstallerSession> sessions,
            int installerUid) {
            int installerUid) {
        int count = 0;
        int count = 0;
@@ -2343,6 +2378,9 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
        }
        }
        mSilentUpdatePolicy.dump(pw);
        mSilentUpdatePolicy.dump(pw);
        mGentleUpdateHelper.dump(pw);
        mGentleUpdateHelper.dump(pw);
        synchronized (mVerificationPolicyPerUser) {
            pw.printPair("VerificationPolicyPerUser", mVerificationPolicyPerUser.toString());
        }
    }
    }


    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
+44 −20
Original line number Original line Diff line number Diff line
@@ -327,7 +327,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
    private static final String ATTR_APPLICATION_ENABLED_SETTING_PERSISTENT =
    private static final String ATTR_APPLICATION_ENABLED_SETTING_PERSISTENT =
            "applicationEnabledSettingPersistent";
            "applicationEnabledSettingPersistent";
    private static final String ATTR_DOMAIN = "domain";
    private static final String ATTR_DOMAIN = "domain";
    private static final String ATTR_VERIFICATION_POLICY = "verificationPolicy";
    private static final String ATTR_INITIAL_VERIFICATION_POLICY = "initialVerificationPolicy";
    private static final String ATTR_CURRENT_VERIFICATION_POLICY = "currentVerificationPolicy";


    private static final String PROPERTY_NAME_INHERIT_NATIVE = "pi.inherit_native_on_dont_kill";
    private static final String PROPERTY_NAME_INHERIT_NATIVE = "pi.inherit_native_on_dont_kill";
    private static final int[] EMPTY_CHILD_SESSION_ARRAY = EmptyArray.INT;
    private static final int[] EMPTY_CHILD_SESSION_ARRAY = EmptyArray.INT;
@@ -425,10 +426,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
    private final PackageSessionProvider mSessionProvider;
    private final PackageSessionProvider mSessionProvider;
    private final SilentUpdatePolicy mSilentUpdatePolicy;
    private final SilentUpdatePolicy mSilentUpdatePolicy;
    /**
    /**
     * The verification policy applied to this session, which might be different from the default
     * The initial verification policy assigned to this session when it was first created.
     * verification policy used by the system.
     */
     */
    private final AtomicInteger mVerificationPolicy;
    private final int mInitialVerificationPolicy;
    /**
     * The active verification policy, which might be different from the initial verification policy
     * assigned to this session or the default policy currently used by the system.
     */
    private final AtomicInteger mCurrentVerificationPolicy;
    /**
    /**
     * Note all calls must be done outside {@link #mLock} to prevent lock inversion.
     * Note all calls must be done outside {@link #mLock} to prevent lock inversion.
     */
     */
@@ -1222,7 +1227,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            boolean isFailed, boolean isApplied, int sessionErrorCode,
            boolean isFailed, boolean isApplied, int sessionErrorCode,
            String sessionErrorMessage, DomainSet preVerifiedDomains,
            String sessionErrorMessage, DomainSet preVerifiedDomains,
            @NonNull VerifierController verifierController,
            @NonNull VerifierController verifierController,
            @PackageInstaller.VerificationPolicy int verificationPolicy,
            @PackageInstaller.VerificationPolicy int initialVerificationPolicy,
            @PackageInstaller.VerificationPolicy int currentVerificationPolicy,
            InstallDependencyHelper installDependencyHelper) {
            InstallDependencyHelper installDependencyHelper) {
        mCallback = callback;
        mCallback = callback;
        mContext = context;
        mContext = context;
@@ -1233,7 +1239,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
        mHandler = new Handler(looper, mHandlerCallback);
        mHandler = new Handler(looper, mHandlerCallback);
        mStagingManager = stagingManager;
        mStagingManager = stagingManager;
        mVerifierController = verifierController;
        mVerifierController = verifierController;
        mVerificationPolicy = new AtomicInteger(verificationPolicy);
        mInitialVerificationPolicy = initialVerificationPolicy;
        mCurrentVerificationPolicy = new AtomicInteger(currentVerificationPolicy);
        mInstallDependencyHelper = installDependencyHelper;
        mInstallDependencyHelper = installDependencyHelper;


        this.sessionId = sessionId;
        this.sessionId = sessionId;
@@ -1348,7 +1355,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
                    mStageDirInUse, mDestroyed, mFds.size(), mBridges.size(), mFinalStatus,
                    mStageDirInUse, mDestroyed, mFds.size(), mBridges.size(), mFinalStatus,
                    mFinalMessage, params, mParentSessionId, getChildSessionIdsLocked(),
                    mFinalMessage, params, mParentSessionId, getChildSessionIdsLocked(),
                    mSessionApplied, mSessionFailed, mSessionReady, mSessionErrorCode,
                    mSessionApplied, mSessionFailed, mSessionReady, mSessionErrorCode,
                    mSessionErrorMessage, mPreapprovalDetails, mPreVerifiedDomains, mPackageName);
                    mSessionErrorMessage, mPreapprovalDetails, mPreVerifiedDomains, mPackageName,
                    mInitialVerificationPolicy, mCurrentVerificationPolicy.get());
        }
        }
    }
    }


@@ -2960,8 +2968,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            final VerifierCallback verifierCallback = new VerifierCallback();
            final VerifierCallback verifierCallback = new VerifierCallback();
            if (!mVerifierController.startVerificationSession(mPm::snapshotComputer, userId,
            if (!mVerifierController.startVerificationSession(mPm::snapshotComputer, userId,
                    sessionId, getPackageName(), Uri.fromFile(stageDir), signingInfo,
                    sessionId, getPackageName(), Uri.fromFile(stageDir), signingInfo,
                    declaredLibraries, mVerificationPolicy.get(), /* extensionParams= */ null,
                    declaredLibraries, mCurrentVerificationPolicy.get(),
                    verifierCallback, /* retry= */ false)) {
                    /* extensionParams= */ null, verifierCallback, /* retry= */ false)) {
                // A verifier is installed but cannot be connected.
                // A verifier is installed but cannot be connected.
                verifierCallback.onConnectionFailed();
                verifierCallback.onConnectionFailed();
            }
            }
@@ -3072,7 +3080,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
         * verification policy for this session.
         * verification policy for this session.
         */
         */
        public @PackageInstaller.VerificationPolicy int getVerificationPolicy() {
        public @PackageInstaller.VerificationPolicy int getVerificationPolicy() {
            return mVerificationPolicy.get();
            return mCurrentVerificationPolicy.get();
        }
        }
        /**
        /**
         * Called by the VerifierController when the verifier requests to change the verification
         * Called by the VerifierController when the verifier requests to change the verification
@@ -3082,7 +3090,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            if (!isValidVerificationPolicy(policy)) {
            if (!isValidVerificationPolicy(policy)) {
                return false;
                return false;
            }
            }
            mVerificationPolicy.set(policy);
            mCurrentVerificationPolicy.set(policy);
            return true;
            return true;
        }
        }
        /**
        /**
@@ -3128,7 +3136,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            // TODO: handle extension response
            // TODO: handle extension response
            mHandler.post(() -> {
            mHandler.post(() -> {
                if (statusReceived.isVerified()
                if (statusReceived.isVerified()
                        || mVerificationPolicy.get() == VERIFICATION_POLICY_NONE) {
                        || mCurrentVerificationPolicy.get() == VERIFICATION_POLICY_NONE) {
                    // Continue with the rest of the verification and installation.
                    // Continue with the rest of the verification and installation.
                    resumeVerify();
                    resumeVerify();
                    return;
                    return;
@@ -3172,13 +3180,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
        }
        }


        private void handleNonPackageBlockedFailure(Runnable onFailWarning, Runnable onFailClosed) {
        private void handleNonPackageBlockedFailure(Runnable onFailWarning, Runnable onFailClosed) {
            final Runnable r = switch (mVerificationPolicy.get()) {
            final Runnable r = switch (mCurrentVerificationPolicy.get()) {
                case VERIFICATION_POLICY_NONE, VERIFICATION_POLICY_BLOCK_FAIL_OPEN ->
                case VERIFICATION_POLICY_NONE, VERIFICATION_POLICY_BLOCK_FAIL_OPEN ->
                        PackageInstallerSession.this::resumeVerify;
                        PackageInstallerSession.this::resumeVerify;
                case VERIFICATION_POLICY_BLOCK_FAIL_WARN -> onFailWarning;
                case VERIFICATION_POLICY_BLOCK_FAIL_WARN -> onFailWarning;
                case VERIFICATION_POLICY_BLOCK_FAIL_CLOSED -> onFailClosed;
                case VERIFICATION_POLICY_BLOCK_FAIL_CLOSED -> onFailClosed;
                default -> {
                default -> {
                    Log.wtf(TAG, "Unknown verification policy: " + mVerificationPolicy.get());
                    Log.wtf(TAG, "Unknown verification policy: "
                            + mCurrentVerificationPolicy.get());
                    yield onFailClosed;
                    yield onFailClosed;
                }
                }
            };
            };
@@ -5607,13 +5616,22 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
        }
        }
    }
    }


    /**
     * @return the initial policy for the verification request assigned to the session when created.
     */
    @VisibleForTesting
    public @PackageInstaller.VerificationPolicy int getInitialVerificationPolicy() {
        assertCallerIsOwnerOrRoot();
        return mInitialVerificationPolicy;
    }

    /**
    /**
     * @return the current policy for the verification request associated with this session.
     * @return the current policy for the verification request associated with this session.
     */
     */
    @VisibleForTesting
    @VisibleForTesting
    public @PackageInstaller.VerificationPolicy int getVerificationPolicy() {
    public @PackageInstaller.VerificationPolicy int getCurrentVerificationPolicy() {
        assertCallerIsOwnerOrRoot();
        assertCallerIsOwnerOrRoot();
        return mVerificationPolicy.get();
        return mCurrentVerificationPolicy.get();
    }
    }


    void setSessionReady() {
    void setSessionReady() {
@@ -5853,6 +5871,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
        if (mPreVerifiedDomains != null) {
        if (mPreVerifiedDomains != null) {
            pw.printPair("mPreVerifiedDomains", mPreVerifiedDomains);
            pw.printPair("mPreVerifiedDomains", mPreVerifiedDomains);
        }
        }
        pw.printPair("mInitialVerificationPolicy", mInitialVerificationPolicy);
        pw.printPair("mCurrentVerificationPolicy", mCurrentVerificationPolicy.get());
        pw.println();
        pw.println();


        pw.decreaseIndent();
        pw.decreaseIndent();
@@ -6081,7 +6101,9 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            out.attributeInt(null, ATTR_INSTALL_REASON, params.installReason);
            out.attributeInt(null, ATTR_INSTALL_REASON, params.installReason);
            writeBooleanAttribute(out, ATTR_APPLICATION_ENABLED_SETTING_PERSISTENT,
            writeBooleanAttribute(out, ATTR_APPLICATION_ENABLED_SETTING_PERSISTENT,
                    params.applicationEnabledSettingPersistent);
                    params.applicationEnabledSettingPersistent);
            out.attributeInt(null, ATTR_VERIFICATION_POLICY, mVerificationPolicy.get());
            out.attributeInt(null, ATTR_INITIAL_VERIFICATION_POLICY, mInitialVerificationPolicy);
            out.attributeInt(null, ATTR_CURRENT_VERIFICATION_POLICY,
                    mCurrentVerificationPolicy.get());


            final boolean isDataLoader = params.dataLoaderParams != null;
            final boolean isDataLoader = params.dataLoaderParams != null;
            writeBooleanAttribute(out, ATTR_IS_DATALOADER, isDataLoader);
            writeBooleanAttribute(out, ATTR_IS_DATALOADER, isDataLoader);
@@ -6242,8 +6264,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
        final boolean sealed = in.getAttributeBoolean(null, ATTR_SEALED, false);
        final boolean sealed = in.getAttributeBoolean(null, ATTR_SEALED, false);
        final int parentSessionId = in.getAttributeInt(null, ATTR_PARENT_SESSION_ID,
        final int parentSessionId = in.getAttributeInt(null, ATTR_PARENT_SESSION_ID,
                SessionInfo.INVALID_ID);
                SessionInfo.INVALID_ID);
        final int verificationPolicy = in.getAttributeInt(null, ATTR_VERIFICATION_POLICY,
        final int initialVerificationPolicy = in.getAttributeInt(null,
                VERIFICATION_POLICY_NONE);
                ATTR_INITIAL_VERIFICATION_POLICY, VERIFICATION_POLICY_NONE);
        final int currentVerificationPolicy = in.getAttributeInt(null,
                ATTR_CURRENT_VERIFICATION_POLICY, VERIFICATION_POLICY_NONE);


        final SessionParams params = new SessionParams(
        final SessionParams params = new SessionParams(
                SessionParams.MODE_INVALID);
                SessionParams.MODE_INVALID);
@@ -6419,6 +6443,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
                stageCid, fileArray, checksumsMap, prepared, committed, destroyed, sealed,
                stageCid, fileArray, checksumsMap, prepared, committed, destroyed, sealed,
                childSessionIdsArray, parentSessionId, isReady, isFailed, isApplied,
                childSessionIdsArray, parentSessionId, isReady, isFailed, isApplied,
                sessionErrorCode, sessionErrorMessage, preVerifiedDomains, verifierController,
                sessionErrorCode, sessionErrorMessage, preVerifiedDomains, verifierController,
                verificationPolicy, installDependencyHelper);
                initialVerificationPolicy, currentVerificationPolicy, installDependencyHelper);
    }
    }
}
}
Loading