File: printing_features.cc

package info (click to toggle)
chromium 120.0.6099.224-1~deb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 6,112,112 kB
  • sloc: cpp: 32,907,025; ansic: 8,148,123; javascript: 3,679,536; python: 2,031,248; asm: 959,718; java: 804,675; xml: 617,256; sh: 111,417; objc: 100,835; perl: 88,443; cs: 53,032; makefile: 29,579; fortran: 24,137; php: 21,162; tcl: 21,147; sql: 20,809; ruby: 17,735; pascal: 12,864; yacc: 8,045; lisp: 3,388; lex: 1,323; ada: 727; awk: 329; jsp: 267; csh: 117; exp: 43; sed: 37
file content (114 lines) | stat: -rw-r--r-- 4,139 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// 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_CHROMEOS)
// Enable support for borderless printing and media type.
BASE_FEATURE(kEnableBorderlessPrinting,
             "EnableBorderlessPrinting",
             base::FEATURE_DISABLED_BY_DEFAULT);
#endif  // BUILDFLAG(IS_CHROMEOS)

#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() {
  // Require XPS printing to be used out-of-process.
#if BUILDFLAG(ENABLE_OOP_PRINTING)
  return features::kEnableOopPrintDriversJobPrint.Get() &&
         (base::FeatureList::IsEnabled(features::kUseXpsForPrinting) ||
          base::FeatureList::IsEnabled(features::kUseXpsForPrintingFromPdf));
#else
  return false;
#endif
}

bool ShouldPrintUsingXps(bool source_is_pdf) {
  // Require XPS to be used out-of-process.
  return features::kEnableOopPrintDriversJobPrint.Get() &&
         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<bool> kEnableOopPrintDriversJobPrint{
    &kEnableOopPrintDrivers, "JobPrint", false};

const base::FeatureParam<bool> kEnableOopPrintDriversSandbox{
    &kEnableOopPrintDrivers, "Sandbox", false};

#if BUILDFLAG(IS_WIN)
const base::FeatureParam<bool> kEnableOopPrintDriversSingleProcess{
    &kEnableOopPrintDrivers, "SingleProcess", true};
#endif
#endif  // BUILDFLAG(ENABLE_OOP_PRINTING)

#if BUILDFLAG(ENABLE_PRINT_CONTENT_ANALYSIS)
BASE_FEATURE(kEnableCloudScanAfterPreview,
             "EnableCloudScanAfterPreview",
             base::FEATURE_ENABLED_BY_DEFAULT);

// The naming mismatch below is intentional to preserve compatibility while
// making code usage clearer. This is temporary and will be removed once
// b/216105729 is officially fixed and the local workflow is supported.
BASE_FEATURE(kEnableLocalScanAfterPreview,
             "EnablePrintScanAfterPreview",
             base::FEATURE_ENABLED_BY_DEFAULT);
#endif  // BUILDFLAG(ENABLE_PRINT_CONTENT_ANALYSIS)

}  // namespace features
}  // namespace printing