diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index caedd70..b389fd6 100644
--- a/core/java/android/content/pm/PackageInstaller.java
+++ b/core/java/android/content/pm/PackageInstaller.java
@@ -1566,7 +1566,7 @@
         /** {@hide} */
         public boolean forceQueryableOverride;
         /** {@hide} */
-        public Boolean requireUserAction;
+        public int requireUserAction = SessionInfo.USER_ACTION_UNSPECIFIED;
 
         /**
          * Construct parameters for a new package install session.
@@ -1609,12 +1609,7 @@
                 dataLoaderParams = new DataLoaderParams(dataLoaderParamsParcel);
             }
             rollbackDataPolicy = source.readInt();
-            int requireUserActionInt = source.readInt();
-            requireUserAction = requireUserActionInt == 0
-                    ? Boolean.FALSE
-                    : requireUserActionInt == 1
-                            ? Boolean.TRUE : null;
-
+            requireUserAction = source.readInt();
         }
 
         /** {@hide} */
@@ -2045,31 +2040,34 @@
          * {@link android.Manifest.permission#REQUEST_INSTALL_PACKAGES android.permission
          * #REQUEST_INSTALL_PACKAGES} permission, and {@code false} otherwise. When {@code true},
          * installers will receive a {@link #STATUS_PENDING_USER_ACTION} callback once the
-         * session is committed, indicating that the user is required for the install to proceed.
+         * session is committed, indicating that user action is required for the install to proceed.
          * <p>
-         * For installers using the {@link android.Manifest.permission#REQUEST_INSTALL_PACKAGES
-         * android.permission.REQUEST_INSTALL_PACKAGES} permission, user action will not be
-         * required when the following conditions are met:
+         * For installers that have been granted the
+         * {@link android.Manifest.permission#REQUEST_INSTALL_PACKAGES android.permission
+         * .REQUEST_INSTALL_PACKAGES} permission, user action will not be required when all of
+         * the following conditions are met:
          *
          * <ul>
          *     <li>{@code requireUserAction} is set to {@code false}.</li>
-         *     <li>The being installed targets {@link android.os.Build.VERSION_CODES#Q API 29} or
-         *     higher.</li>
+         *     <li>The app being installed targets {@link android.os.Build.VERSION_CODES#Q API 29}
+         *     or higher.</li>
          *     <li>The installer is the {@link InstallSourceInfo#getInstallingPackageName()
          *     installer of record} of an existing version of the app (i.e.: this install session
-         *     is an app update or the installer is updating itself).</li>
+         *     is an app update) or the installer is updating itself.</li>
          *     <li>The installer declares the
          *     {@link android.Manifest.permission#UPDATE_PACKAGES_WITHOUT_USER_ACTION android
          *     .permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION} permission.</li>
          * </ul>
          * <p>
          * Note: The target API level requirement will advance in future Android versions.
-         * Session owners should always be prepared to handle {@link #STATUS_PENDING_USER_ACTION}
+         * Session owners should always be prepared to handle {@link #STATUS_PENDING_USER_ACTION}.
          *
          * @param requireUserAction whether user action should be required.
          */
         public void setRequireUserAction(boolean requireUserAction) {
-            this.requireUserAction = requireUserAction;
+            this.requireUserAction = requireUserAction
+                    ? SessionInfo.USER_ACTION_REQUIRED
+                    : SessionInfo.USER_ACTION_NOT_REQUIRED;
         }
 
         /**
@@ -2102,7 +2100,7 @@
             pw.printPair("isMultiPackage", isMultiPackage);
             pw.printPair("isStaged", isStaged);
             pw.printPair("forceQueryable", forceQueryableOverride);
-            pw.printPair("requireUserAction", requireUserAction);
+            pw.printPair("requireUserAction", SessionInfo.userActionToString(requireUserAction));
             pw.printPair("requiredInstalledVersionCode", requiredInstalledVersionCode);
             pw.printPair("dataLoaderParams", dataLoaderParams);
             pw.printPair("rollbackDataPolicy", rollbackDataPolicy);
@@ -2144,10 +2142,7 @@
                 dest.writeParcelable(null, flags);
             }
             dest.writeInt(rollbackDataPolicy);
-            dest.writeInt(requireUserAction == Boolean.TRUE
-                    ? 1
-                    : requireUserAction == Boolean.FALSE
-                            ? 0 : 2);
+            dest.writeInt(requireUserAction);
         }
 
         public static final Parcelable.Creator<SessionParams>
@@ -2224,7 +2219,7 @@
         public @interface UserActionRequirement {}
 
         /**
-         * The installer did not calling {@link SessionParams#setRequireUserAction(boolean)} to
+         * The installer did not call {@link SessionParams#setRequireUserAction(boolean)} to
          * specify whether user action should be required for the install.
          */
         public static final int USER_ACTION_UNSPECIFIED = 0;
@@ -2239,6 +2234,17 @@
          */
         public static final int USER_ACTION_NOT_REQUIRED = 2;
 
+        private static String userActionToString(int requireUserAction) {
+            switch(requireUserAction) {
+                case SessionInfo.USER_ACTION_REQUIRED:
+                    return "REQUIRED";
+                case SessionInfo.USER_ACTION_NOT_REQUIRED:
+                    return "NOT_REQUIRED";
+                default:
+                    return "UNSPECIFIED";
+            }
+        }
+
         /** {@hide} */
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
         public int sessionId;
@@ -2331,7 +2337,7 @@
         public int rollbackDataPolicy;
 
         /** {@hide} */
-        public Boolean requireUserAction;
+        public int requireUserAction;
 
         /** {@hide} */
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
@@ -2382,11 +2388,7 @@
             isCommitted = source.readBoolean();
             rollbackDataPolicy = source.readInt();
             createdMillis = source.readLong();
-            int requireUserActionInt = source.readInt();
-            requireUserAction = requireUserActionInt == 0
-                    ? Boolean.FALSE
-                    : requireUserActionInt == 1
-                            ? Boolean.TRUE : null;
+            requireUserAction = source.readInt();
         }
 
         /**
@@ -2898,11 +2900,7 @@
          */
         @UserActionRequirement
         public int getRequireUserAction() {
-            return requireUserAction == null
-                    ? USER_ACTION_UNSPECIFIED
-                    : requireUserAction == Boolean.TRUE
-                            ? USER_ACTION_REQUIRED
-                            : USER_ACTION_NOT_REQUIRED;
+            return requireUserAction;
         }
 
         @Override
@@ -2950,10 +2948,7 @@
             dest.writeBoolean(isCommitted);
             dest.writeInt(rollbackDataPolicy);
             dest.writeLong(createdMillis);
-            dest.writeInt(requireUserAction == Boolean.TRUE
-                    ? 1
-                    : requireUserAction == Boolean.FALSE
-                            ? 0 : 2);
+            dest.writeInt(requireUserAction);
         }
 
         public static final Parcelable.Creator<SessionInfo>
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index be306e0..c0a3e81 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -5688,13 +5688,9 @@
     <permission android:name="android.permission.SET_CLIP_SOURCE"
                 android:protectionLevel="signature|recents" />
 
-    <!-- Allows an application to request installs that update existing packages do so without
-         user action via
-         {@link android.content.pm.PackageInstaller.SessionParams#setRequireUserAction(boolean)}.
-         This permission only grants the ability to make the request and is not a guarantee that the
-         request will be honored. In order to execute the install, the caller must also have the
-         "android.permission.REQUEST_INSTALL_PACKAGES" or "android.permission.INSTALL_PACKAGES"
-         permissions.
+    <!-- Allows an application to indicate via
+         {@link android.content.pm.PackageInstaller.SessionParams#setRequireUserAction(boolean)}
+         that user action should not be required for an app update.
          <p>Protection level: normal
     -->
     <permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION"
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index 2e6c57c..671fccf 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -927,7 +927,7 @@
 
         final boolean forcePermissionPrompt =
                 (params.installFlags & PackageManager.INSTALL_FORCE_PERMISSION_PROMPT) != 0
-                        || params.requireUserAction == Boolean.TRUE;
+                        || params.requireUserAction == SessionInfo.USER_ACTION_REQUIRED;
         if (forcePermissionPrompt) {
             return USER_ACTION_REQUIRED;
         }
@@ -976,7 +976,7 @@
             return USER_ACTION_REQUIRED;
         }
 
-        if (params.requireUserAction == Boolean.FALSE
+        if (params.requireUserAction == SessionInfo.USER_ACTION_NOT_REQUIRED
                 && isUpdateWithoutUserActionPermissionGranted
                 && (isInstallerOfRecord || isSelfUpdate)) {
             return USER_ACTION_PENDING_APK_PARSING;
