Add a feature flag to use the CUPS IPP printing backend on macOS
Add |printing::features::kCupsIppPrintingBackend| and the corresponding UI in chrome://flags for switching printing backends on macOS. The existing CUPS backend calls the deprecated PPD API. In a future CL, the switch will allow use of the CUPS IPP backend, which uses an up-to-date API for fetching printer attributes and managing printers. The flag does not do anything yet. Bug: 226176 Change-Id: Ifbacfbd1872eb7c47b3130694de920a94f42fc15 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2063220 Commit-Queue: Daniel Hosseinian <dhoss@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org> Reviewed-by: Sean Kau <skau@chromium.org> Cr-Commit-Position: refs/heads/master@{#750018}
This commit is contained in:

committed by
Commit Bot

parent
a6a3bfc8fc
commit
159cb3d62a
chrome/browser
printing
tools/metrics/histograms
@ -3372,6 +3372,13 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
#endif // BUILDFLAG(ENABLE_PDF)
|
||||
|
||||
#if BUILDFLAG(ENABLE_PRINTING)
|
||||
#if defined(OS_MACOSX)
|
||||
{"cups-ipp-printing-backend",
|
||||
flag_descriptions::kCupsIppPrintingBackendName,
|
||||
flag_descriptions::kCupsIppPrintingBackendDescription, kOsMac,
|
||||
FEATURE_VALUE_TYPE(printing::features::kCupsIppPrintingBackend)},
|
||||
#endif // defined(OS_MACOSX)
|
||||
|
||||
#if defined(OS_WIN)
|
||||
{"use-xps-for-printing", flag_descriptions::kUseXpsForPrintingName,
|
||||
flag_descriptions::kUseXpsForPrintingDescription, kOsWin,
|
||||
|
@ -660,6 +660,11 @@
|
||||
"owners": [ "khorimoto", "nohle" ],
|
||||
"expiry_milestone": 86
|
||||
},
|
||||
{
|
||||
"name": "cups-ipp-printing-backend",
|
||||
"owners": [ "dhoss", "chrome-print@google.com" ],
|
||||
"expiry_milestone": 89
|
||||
},
|
||||
{
|
||||
"name": "d3d11-video-decoder",
|
||||
"owners": [ "liberato", "tmathmeyer", "videostack-eng" ],
|
||||
|
@ -2845,6 +2845,7 @@ const char kUseWinrtMidiApiDescription[] =
|
||||
"Use Windows Runtime MIDI API for WebMIDI (effective only on Windows 10 or "
|
||||
"later).";
|
||||
|
||||
#if BUILDFLAG(ENABLE_PRINTING)
|
||||
const char kUseXpsForPrintingName[] = "Use XPS for printing";
|
||||
const char kUseXpsForPrintingDescription[] =
|
||||
"When enabled, use XPS printing API instead of the GDI print API.";
|
||||
@ -2853,6 +2854,7 @@ const char kUseXpsForPrintingFromPdfName[] = "Use XPS for printing from PDF";
|
||||
const char kUseXpsForPrintingFromPdfDescription[] =
|
||||
"When enabled, use XPS printing API instead of the GDI print API when "
|
||||
"printing PDF documents.";
|
||||
#endif // BUILDFLAG(ENABLE_PRINTING)
|
||||
|
||||
#if BUILDFLAG(ENABLE_SPELLCHECK)
|
||||
const char kWinUseBrowserSpellCheckerName[] =
|
||||
@ -2880,6 +2882,13 @@ const char kWinUseHybridSpellCheckerDescription[] =
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
|
||||
#if BUILDFLAG(ENABLE_PRINTING)
|
||||
const char kCupsIppPrintingBackendName[] = "CUPS IPP Printing Backend";
|
||||
const char kCupsIppPrintingBackendDescription[] =
|
||||
"Use the CUPS IPP printing backend instead of the original CUPS backend "
|
||||
"that calls the PPD API.";
|
||||
#endif // BUILDFLAG(ENABLE_PRINTING)
|
||||
|
||||
const char kImmersiveFullscreenName[] = "Immersive Fullscreen Toolbar";
|
||||
const char kImmersiveFullscreenDescription[] =
|
||||
"Automatically hide and show the toolbar in fullscreen.";
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "device/vr/buildflags/buildflags.h"
|
||||
#include "media/media_buildflags.h"
|
||||
#include "ppapi/buildflags/buildflags.h"
|
||||
#include "printing/buildflags/buildflags.h"
|
||||
|
||||
#if defined(OS_LINUX)
|
||||
#include "base/allocator/buildflags.h"
|
||||
@ -1629,11 +1630,13 @@ extern const char kUseAngleD3D11on12[];
|
||||
extern const char kUseWinrtMidiApiName[];
|
||||
extern const char kUseWinrtMidiApiDescription[];
|
||||
|
||||
#if BUILDFLAG(ENABLE_PRINTING)
|
||||
extern const char kUseXpsForPrintingName[];
|
||||
extern const char kUseXpsForPrintingDescription[];
|
||||
|
||||
extern const char kUseXpsForPrintingFromPdfName[];
|
||||
extern const char kUseXpsForPrintingFromPdfDescription[];
|
||||
#endif // BUILDFLAG(ENABLE_PRINTING)
|
||||
|
||||
#if BUILDFLAG(ENABLE_SPELLCHECK)
|
||||
extern const char kWinUseBrowserSpellCheckerName[];
|
||||
@ -1652,6 +1655,11 @@ extern const char kWinUseHybridSpellCheckerDescription[];
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
|
||||
#if BUILDFLAG(ENABLE_PRINTING)
|
||||
extern const char kCupsIppPrintingBackendName[];
|
||||
extern const char kCupsIppPrintingBackendDescription[];
|
||||
#endif // BUILDFLAG(ENABLE_PRINTING)
|
||||
|
||||
extern const char kImmersiveFullscreenName[];
|
||||
extern const char kImmersiveFullscreenDescription[];
|
||||
|
||||
|
@ -13,12 +13,19 @@ const base::Feature kAdvancedPpdAttributes{"AdvancedPpdAttributes",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
#endif // defined(OS_CHROMEOS)
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
// Use the CUPS IPP printing backend instead of the original CUPS backend that
|
||||
// calls the deprecated PPD API.
|
||||
const base::Feature kCupsIppPrintingBackend{"CupsIppPrintingBackend",
|
||||
base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
#endif // defined(OS_MACOSX)
|
||||
|
||||
#if defined(OS_WIN)
|
||||
// Use XPS for printing instead of GDI.
|
||||
const base::Feature kUseXpsForPrinting{"UseXpsForPrinting",
|
||||
base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
// Use XPS for printing instead of GDI for printing PDF documents. This is
|
||||
// Use XPS for printing instead of GDI for printing PDF documents. This is
|
||||
// independent of |kUseXpsForPrinting|; can use XPS for PDFs even if still using
|
||||
// GDI for modifiable content.
|
||||
const base::Feature kUseXpsForPrintingFromPdf{
|
||||
|
@ -12,11 +12,16 @@
|
||||
namespace printing {
|
||||
namespace features {
|
||||
|
||||
// The following features are declared alphabetically. The features should be
|
||||
// documented with descriptions of their behaviors in the .cc file.
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
// All features in alphabetical order. The features should be documented
|
||||
// alongside the definition of their values in the .cc file.
|
||||
PRINTING_EXPORT extern const base::Feature kAdvancedPpdAttributes;
|
||||
#endif
|
||||
#endif // defined(OS_CHROMEOS)
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
PRINTING_EXPORT extern const base::Feature kCupsIppPrintingBackend;
|
||||
#endif // defined(OS_MACOSX)
|
||||
|
||||
#if defined(OS_WIN)
|
||||
PRINTING_EXPORT extern const base::Feature kUseXpsForPrinting;
|
||||
@ -29,7 +34,7 @@ PRINTING_EXPORT bool IsXpsPrintCapabilityRequired();
|
||||
// Helper function to determine if printing of a document from a particular
|
||||
// source should be done using XPS printing API instead of with GDI.
|
||||
PRINTING_EXPORT bool ShouldPrintUsingXps(bool source_is_pdf);
|
||||
#endif
|
||||
#endif // defined(OS_WIN)
|
||||
|
||||
PRINTING_EXPORT extern const base::Feature kUseFrameAssociatedLoaderFactory;
|
||||
|
||||
|
@ -38330,6 +38330,7 @@ from previous Chrome versions.
|
||||
<int value="-920204598" label="ScrollAnchorSerialization:enabled"/>
|
||||
<int value="-918900957" label="AutofillCreditCardAssist:disabled"/>
|
||||
<int value="-918618075" label="enable-service-worker"/>
|
||||
<int value="-915328316" label="CupsIppPrintingBackend:disabled"/>
|
||||
<int value="-915035507" label="ArcPrintSpoolerExperiment:enabled"/>
|
||||
<int value="-914210146" label="enable-web-based-signin"/>
|
||||
<int value="-914097698" label="EnableDbusAndX11StatusIcons:disabled"/>
|
||||
@ -40404,6 +40405,7 @@ from previous Chrome versions.
|
||||
<int value="1603578716" label="CaptionSettings:disabled"/>
|
||||
<int value="1605398303" label="MacSystemMediaPermissionsInfoUI:enabled"/>
|
||||
<int value="1605611615" label="enable-webrtc-srtp-aes-gcm"/>
|
||||
<int value="1609059016" label="CupsIppPrintingBackend:enabled"/>
|
||||
<int value="1611522475" label="AutofillPrimaryInfoStyleExperiment:disabled"/>
|
||||
<int value="1612206633" label="CCTModuleCustomHeader:enabled"/>
|
||||
<int value="1612446645" label="enable-weak-memorycache"/>
|
||||
|
Reference in New Issue
Block a user