Add new bugreport mode for debugging onboarding.

Bug: 294990844

Test: atest
android.bugreport.cts.BugreportManagerTest#testOnboardingBugreport

Change-Id: I89e6445a83972075aeef7136cf45c1b8b4d49299
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 0185080..93d09ca 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -10386,6 +10386,7 @@
     field public static final int BUGREPORT_FLAG_USE_PREDUMPED_UI_DATA = 1; // 0x1
     field public static final int BUGREPORT_MODE_FULL = 0; // 0x0
     field public static final int BUGREPORT_MODE_INTERACTIVE = 1; // 0x1
+    field public static final int BUGREPORT_MODE_ONBOARDING = 7; // 0x7
     field public static final int BUGREPORT_MODE_REMOTE = 2; // 0x2
     field public static final int BUGREPORT_MODE_TELEPHONY = 4; // 0x4
     field public static final int BUGREPORT_MODE_WEAR = 3; // 0x3
diff --git a/core/java/android/os/BugreportParams.java b/core/java/android/os/BugreportParams.java
index d9d14b0..0456a33 100644
--- a/core/java/android/os/BugreportParams.java
+++ b/core/java/android/os/BugreportParams.java
@@ -81,7 +81,8 @@
             BUGREPORT_MODE_REMOTE,
             BUGREPORT_MODE_WEAR,
             BUGREPORT_MODE_TELEPHONY,
-            BUGREPORT_MODE_WIFI
+            BUGREPORT_MODE_WIFI,
+            BUGREPORT_MODE_ONBOARDING
     })
     public @interface BugreportMode {}
 
@@ -121,6 +122,11 @@
     public static final int BUGREPORT_MODE_WIFI = IDumpstate.BUGREPORT_MODE_WIFI;
 
     /**
+     * Options for a lightweight bugreport intended to be taken for onboarding-related flows.
+     */
+    public static final int BUGREPORT_MODE_ONBOARDING = IDumpstate.BUGREPORT_MODE_ONBOARDING;
+
+    /**
      * Defines acceptable flags for customizing bugreport requests.
      * @hide
      */
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index c1f2f67..27935c8 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -7393,6 +7393,9 @@
             case BugreportParams.BUGREPORT_MODE_WIFI:
                 type = "bugreportwifi";
                 break;
+            case BugreportParams.BUGREPORT_MODE_ONBOARDING:
+                type = "bugreportonboarding";
+                break;
             default:
                 throw new IllegalArgumentException(
                     "Provided bugreport type is not correct, value: "
diff --git a/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java b/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java
index 3ba307b..1134714 100644
--- a/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java
+++ b/services/core/java/com/android/server/os/BugreportManagerServiceImpl.java
@@ -307,7 +307,8 @@
                 && mode != BugreportParams.BUGREPORT_MODE_REMOTE
                 && mode != BugreportParams.BUGREPORT_MODE_WEAR
                 && mode != BugreportParams.BUGREPORT_MODE_TELEPHONY
-                && mode != BugreportParams.BUGREPORT_MODE_WIFI) {
+                && mode != BugreportParams.BUGREPORT_MODE_WIFI
+                && mode != BugreportParams.BUGREPORT_MODE_ONBOARDING) {
             Slog.w(TAG, "Unknown bugreport mode: " + mode);
             throw new IllegalArgumentException("Unknown bugreport mode: " + mode);
         }