Add job printing feature to out-of-process print drivers

Interactions with print drivers via operating system APIs is being
moved from out of the highly privileged browser process into a
sandboxed utility service process.  This feature is being rolled out
in two phases, where the second phase is for submitting a document to
the destination for printing.  This will be guarded behind the existing
feature flag "EnableOopPrintDrivers" by using a "JobPrint" parameter.
This feature is currently only applicable for desktop operating systems.

Bug: 809738
Change-Id: Iaca8d77b0280af0a4d1ffb04c506f90d1372c509
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3131384
Commit-Queue: Alan Screen <[email protected]>
Reviewed-by: Lei Zhang <[email protected]>
Cr-Commit-Position: refs/heads/main@{#917014}
diff --git a/printing/printing_features.cc b/printing/printing_features.cc
index 6844687..d62c93f 100644
--- a/printing/printing_features.cc
+++ b/printing/printing_features.cc
@@ -6,6 +6,11 @@
 
 #include "build/chromeos_buildflags.h"
 
+#if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
+    defined(OS_CHROMEOS)
+#include "base/metrics/field_trial_params.h"
+#endif
+
 namespace printing {
 namespace features {
 
@@ -49,6 +54,9 @@
 // out-of-process.
 const base::Feature kEnableOopPrintDrivers{"EnableOopPrintDrivers",
                                            base::FEATURE_DISABLED_BY_DEFAULT};
+
+const base::FeatureParam<bool> kEnableOopPrintDriversJobPrint{
+    &kEnableOopPrintDrivers, "JobPrint", false};
 #endif  // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) ||
         // defined(OS_CHROMEOS)