// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "printing/printing_features.h" #include "build/build_config.h" #include "printing/buildflags/buildflags.h" #if BUILDFLAG(ENABLE_OOP_PRINTING) #include "base/metrics/field_trial_params.h" #endif namespace printing { namespace features { #if BUILDFLAG(IS_MAC) // Use the CUPS IPP printing backend instead of the original CUPS backend that // calls the deprecated PPD API. BASE_FEATURE(kCupsIppPrintingBackend, "CupsIppPrintingBackend", base::FEATURE_ENABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_MAC) #if BUILDFLAG(IS_WIN) // When using PostScript level 3 printing, render text with Type 42 fonts if // possible. BASE_FEATURE(kPrintWithPostScriptType42Fonts, "PrintWithPostScriptType42Fonts", base::FEATURE_DISABLED_BY_DEFAULT); // When using GDI printing, avoid rasterization if possible. BASE_FEATURE(kPrintWithReducedRasterization, "PrintWithReducedRasterization", base::FEATURE_DISABLED_BY_DEFAULT); // Read printer capabilities with XPS when use XPS for printing. BASE_FEATURE(kReadPrinterCapabilitiesWithXps, "ReadPrinterCapabilitiesWithXps", base::FEATURE_DISABLED_BY_DEFAULT); // Use XPS for printing instead of GDI. BASE_FEATURE(kUseXpsForPrinting, "UseXpsForPrinting", base::FEATURE_DISABLED_BY_DEFAULT); // 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. BASE_FEATURE(kUseXpsForPrintingFromPdf, "UseXpsForPrintingFromPdf", base::FEATURE_DISABLED_BY_DEFAULT); bool IsXpsPrintCapabilityRequired() { return base::FeatureList::IsEnabled(features::kUseXpsForPrinting) || base::FeatureList::IsEnabled(features::kUseXpsForPrintingFromPdf); } bool ShouldPrintUsingXps(bool source_is_pdf) { return base::FeatureList::IsEnabled(source_is_pdf ? features::kUseXpsForPrintingFromPdf : features::kUseXpsForPrinting); } #endif // BUILDFLAG(IS_WIN) #if BUILDFLAG(ENABLE_OOP_PRINTING) // Enables printing interactions with the operating system to be performed // out-of-process. BASE_FEATURE(kEnableOopPrintDrivers, "EnableOopPrintDrivers", base::FEATURE_DISABLED_BY_DEFAULT); const base::FeatureParam kEnableOopPrintDriversJobPrint{ &kEnableOopPrintDrivers, "JobPrint", false}; const base::FeatureParam kEnableOopPrintDriversSandbox{ &kEnableOopPrintDrivers, "Sandbox", false}; #endif // BUILDFLAG(ENABLE_OOP_PRINTING) #if BUILDFLAG(ENABLE_PRINT_CONTENT_ANALYSIS) // Enables scanning of to-be-printed pages and documents for sensitive data if // the OnPrintEnterpriseConnector policy is enabled. BASE_FEATURE(kEnablePrintContentAnalysis, "EnablePrintContentAnalysis", base::FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(ENABLE_PRINT_CONTENT_ANALYSIS) } // namespace features } // namespace printing