Add print job logging

To assist with debugging from bug reports, log when print jobs are
created, removed, or updated.

Bug: 385340868
Test: manual printing
Flag: com.android.printspooler.flags.log_print_jobs
Change-Id: Id15a8d126b4a34f7b27fcd36d398a1c83ec85b20
diff --git a/packages/PrintSpooler/Android.bp b/packages/PrintSpooler/Android.bp
index 6af3c66..000e20f 100644
--- a/packages/PrintSpooler/Android.bp
+++ b/packages/PrintSpooler/Android.bp
@@ -59,6 +59,21 @@
         "android-support-core-ui",
         "android-support-fragment",
         "android-support-annotations",
+        "printspooler_aconfig_flags_java_lib",
     ],
     manifest: "AndroidManifest.xml",
 }
+
+aconfig_declarations {
+    name: "printspooler_aconfig_declarations",
+    package: "com.android.printspooler.flags",
+    container: "system",
+    srcs: [
+        "flags/flags.aconfig",
+    ],
+}
+
+java_aconfig_library {
+    name: "printspooler_aconfig_flags_java_lib",
+    aconfig_declarations: "printspooler_aconfig_declarations",
+}
diff --git a/packages/PrintSpooler/flags/flags.aconfig b/packages/PrintSpooler/flags/flags.aconfig
new file mode 100644
index 0000000..4a76dff
--- /dev/null
+++ b/packages/PrintSpooler/flags/flags.aconfig
@@ -0,0 +1,9 @@
+package: "com.android.printspooler.flags"
+container: "system"
+
+flag {
+  name: "log_print_jobs"
+  namespace: "printing"
+  description: "Log print job creation and state transitions."
+  bug: "385340868"
+}
diff --git a/packages/PrintSpooler/src/com/android/printspooler/model/PrintSpoolerService.java b/packages/PrintSpooler/src/com/android/printspooler/model/PrintSpoolerService.java
index bba57d5..1a9309c 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/model/PrintSpoolerService.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/model/PrintSpoolerService.java
@@ -68,6 +68,7 @@
 import com.android.internal.util.dump.DualDumpOutputStream;
 import com.android.internal.util.function.pooled.PooledLambda;
 import com.android.printspooler.R;
+import com.android.printspooler.flags.Flags;
 import com.android.printspooler.util.ApprovedPrintServices;
 
 import libcore.io.IoUtils;
@@ -493,7 +494,7 @@
             keepAwakeLocked();
         }
 
-        if (DEBUG_PRINT_JOB_LIFECYCLE) {
+        if (Flags.logPrintJobs() || DEBUG_PRINT_JOB_LIFECYCLE) {
             Slog.i(LOG_TAG, "[ADD] " + printJob);
         }
     }
@@ -506,7 +507,7 @@
                 PrintJobInfo printJob = mPrintJobs.get(i);
                 if (isObsoleteState(printJob.getState())) {
                     mPrintJobs.remove(i);
-                    if (DEBUG_PRINT_JOB_LIFECYCLE) {
+                    if (Flags.logPrintJobs() || DEBUG_PRINT_JOB_LIFECYCLE) {
                         Slog.i(LOG_TAG, "[REMOVE] " + printJob.getId().flattenToString());
                     }
                     removePrintJobFileLocked(printJob.getId());
@@ -568,7 +569,7 @@
                     checkIfStillKeepAwakeLocked();
                 }
 
-                if (DEBUG_PRINT_JOB_LIFECYCLE) {
+                if (Flags.logPrintJobs() || DEBUG_PRINT_JOB_LIFECYCLE) {
                     Slog.i(LOG_TAG, "[STATE CHANGED] " + printJob);
                 }