0

Remove expired gdi-text-printing flag and associated code.

The feature was buggy and never successfully launched. Efforts to speed
up printing on Windows have instead focused on XPS and PostScript.

Bug: 1188795
Change-Id: If3fd7fe1c8188142a71ed071fd40df372a05d6d3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3276176
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Zentaro Kavanagh <zentaro@chromium.org>
Reviewed-by: Alan Screen <awscreen@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/main@{#942212}
This commit is contained in:
Lei Zhang
2021-11-16 17:16:49 +00:00
committed by Chromium LUCI CQ
parent 3cc1352adc
commit 4ca5f5539f
27 changed files with 10 additions and 118 deletions

@ -4464,12 +4464,6 @@ const FeatureEntry kFeatureEntries[] = {
FEATURE_VALUE_TYPE(chromeos::features::kEcheSWADebugMode)},
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
#if defined(OS_WIN)
{"gdi-text-printing", flag_descriptions::kGdiTextPrinting,
flag_descriptions::kGdiTextPrintingDescription, kOsWin,
FEATURE_VALUE_TYPE(features::kGdiTextPrinting)},
#endif // defined(OS_WIN)
#if defined(OS_MAC)
{"enable-universal-links", flag_descriptions::kEnableUniversalLinksName,
flag_descriptions::kEnableUniversalLinksDescription, kOsMac,

@ -3291,11 +3291,6 @@
"owners": [ "noel", "simmonsjosh@google.com" ],
"expiry_milestone": 104
},
{
"name": "gdi-text-printing",
"owners": [ "//printing/OWNERS" ],
"expiry_milestone": 89
},
{
"name": "gesture-properties-dbus-service",
"owners": [ "hcutts", "chromeos-tango@google.com" ],

@ -3882,10 +3882,6 @@ const char kUseWinrtMidiApiDescription[] =
"later).";
#if BUILDFLAG(ENABLE_PRINTING)
const char kGdiTextPrinting[] = "GDI Text Printing";
const char kGdiTextPrintingDescription[] =
"Use GDI to print text as simply text";
const char kPrintWithPostScriptType42FontsName[] =
"Print with PostScript Type 42 fonts";
const char kPrintWithPostScriptType42FontsDescription[] =

@ -2226,9 +2226,6 @@ extern const char kUseWinrtMidiApiName[];
extern const char kUseWinrtMidiApiDescription[];
#if BUILDFLAG(ENABLE_PRINTING)
extern const char kGdiTextPrinting[];
extern const char kGdiTextPrintingDescription[];
extern const char kPrintWithPostScriptType42FontsName[];
extern const char kPrintWithPostScriptType42FontsDescription[];

@ -405,10 +405,6 @@ void PdfConverterImpl::RecordConversionMetrics() {
case PdfRenderSettings::Mode::TEXTONLY:
// Intentionally not logged.
return;
case PdfRenderSettings::Mode::GDI_TEXT:
UMA_HISTOGRAM_MEMORY_KB("Printing.ConversionSize.EmfWithGdiText",
average_page_size_in_kb);
return;
case PdfRenderSettings::Mode::POSTSCRIPT_LEVEL2:
UMA_HISTOGRAM_MEMORY_KB("Printing.ConversionSize.PostScript2",
average_page_size_in_kb);
@ -422,11 +418,6 @@ void PdfConverterImpl::RecordConversionMetrics() {
"Printing.ConversionSize.EmfWithReducedRasterization",
average_page_size_in_kb);
return;
case PdfRenderSettings::Mode::EMF_WITH_REDUCED_RASTERIZATION_AND_GDI_TEXT:
UMA_HISTOGRAM_MEMORY_KB(
"Printing.ConversionSize.EmfWithReducedRasterizationAndGdiText",
average_page_size_in_kb);
return;
case PdfRenderSettings::Mode::POSTSCRIPT_LEVEL3_WITH_TYPE42_FONTS:
UMA_HISTOGRAM_MEMORY_KB(
"Printing.ConversionSize.PostScript3WithType42Fonts",

@ -373,28 +373,15 @@ void PrintJob::StartPdfToEmfConversion(
pdf_conversion_state_ =
std::make_unique<PdfConversionState>(page_size, content_area);
// TODO(thestig): Figure out why rendering text with GDI results in random
// missing characters for some users. https://crbug.com/658606
// Update : The missing letters seem to have been caused by the same
// problem as https://crbug.com/659604 which was resolved. GDI printing
// seems to work with the fix for this bug applied.
const PrintSettings& settings = document()->settings();
bool print_text_with_gdi =
settings.print_text_with_gdi() && !settings.printer_language_is_xps() &&
base::FeatureList::IsEnabled(::features::kGdiTextPrinting);
PrefService* prefs = GetPrefsForWebContents(worker_->GetWebContents());
bool print_with_reduced_rasterization = PrintWithReducedRasterization(prefs);
using RenderMode = PdfRenderSettings::Mode;
RenderMode mode;
if (print_with_reduced_rasterization) {
mode = print_text_with_gdi
? RenderMode::EMF_WITH_REDUCED_RASTERIZATION_AND_GDI_TEXT
: RenderMode::EMF_WITH_REDUCED_RASTERIZATION;
} else {
mode = print_text_with_gdi ? RenderMode::GDI_TEXT : RenderMode::NORMAL;
}
RenderMode mode = print_with_reduced_rasterization
? RenderMode::EMF_WITH_REDUCED_RASTERIZATION
: RenderMode::NORMAL;
PdfRenderSettings render_settings(
content_area, gfx::Point(0, 0), settings.dpi_size(),

@ -462,12 +462,6 @@ const base::Feature kFlashDeprecationWarning{"FlashDeprecationWarning",
base::FEATURE_ENABLED_BY_DEFAULT};
#endif
#if defined(OS_WIN)
// Enables using GDI to print text as simply text.
const base::Feature kGdiTextPrinting{"GdiTextPrinting",
base::FEATURE_DISABLED_BY_DEFAULT};
#endif
// Controls whether the GeoLanguage system is enabled. GeoLanguage uses IP-based
// coarse geolocation to provide an estimate (for use by other Chrome features
// such as Translate) of the local/regional language(s) corresponding to the

@ -303,10 +303,6 @@ extern const base::Feature kFlashDeprecationWarning;
COMPONENT_EXPORT(CHROME_FEATURES)
extern const base::Feature kFocusMode;
#if defined(OS_WIN)
COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kGdiTextPrinting;
#endif
COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kGeoLanguage;
#if defined(OS_ANDROID)

@ -82,12 +82,6 @@ PdfToEmfConverter::PdfToEmfConverter(
PdfToEmfConverter::~PdfToEmfConverter() = default;
void PdfToEmfConverter::SetPrintMode() {
bool use_gdi_printing =
pdf_render_settings_.mode == PdfRenderSettings::Mode::GDI_TEXT ||
pdf_render_settings_.mode ==
PdfRenderSettings::Mode::EMF_WITH_REDUCED_RASTERIZATION_AND_GDI_TEXT;
chrome_pdf::SetPDFUseGDIPrinting(use_gdi_printing);
int printing_mode;
switch (pdf_render_settings_.mode) {
case PdfRenderSettings::Mode::TEXTONLY:
@ -103,7 +97,6 @@ void PdfToEmfConverter::SetPrintMode() {
printing_mode = chrome_pdf::PrintingMode::kPostScript3WithType42Fonts;
break;
case PdfRenderSettings::Mode::EMF_WITH_REDUCED_RASTERIZATION:
case PdfRenderSettings::Mode::EMF_WITH_REDUCED_RASTERIZATION_AND_GDI_TEXT:
printing_mode = chrome_pdf::PrintingMode::kEmfWithReducedRasterization;
break;
default:

@ -15,16 +15,12 @@ struct PdfRenderSettings {
[EnableIf=is_win]
TEXTONLY,
[EnableIf=is_win]
GDI_TEXT,
[EnableIf=is_win]
POSTSCRIPT_LEVEL2,
[EnableIf=is_win]
POSTSCRIPT_LEVEL3,
[EnableIf=is_win]
EMF_WITH_REDUCED_RASTERIZATION,
[EnableIf=is_win]
EMF_WITH_REDUCED_RASTERIZATION_AND_GDI_TEXT,
[EnableIf=is_win]
POSTSCRIPT_LEVEL3_WITH_TYPE42_FONTS,
};

@ -24,16 +24,12 @@ struct EnumTraits<printing::mojom::PdfRenderSettings_Mode,
#if defined(OS_WIN)
case PrintMode::TEXTONLY:
return MojomMode::TEXTONLY;
case PrintMode::GDI_TEXT:
return MojomMode::GDI_TEXT;
case PrintMode::POSTSCRIPT_LEVEL2:
return MojomMode::POSTSCRIPT_LEVEL2;
case PrintMode::POSTSCRIPT_LEVEL3:
return MojomMode::POSTSCRIPT_LEVEL3;
case PrintMode::EMF_WITH_REDUCED_RASTERIZATION:
return MojomMode::EMF_WITH_REDUCED_RASTERIZATION;
case PrintMode::EMF_WITH_REDUCED_RASTERIZATION_AND_GDI_TEXT:
return MojomMode::EMF_WITH_REDUCED_RASTERIZATION_AND_GDI_TEXT;
case PrintMode::POSTSCRIPT_LEVEL3_WITH_TYPE42_FONTS:
return MojomMode::POSTSCRIPT_LEVEL3_WITH_TYPE42_FONTS;
#endif
@ -54,8 +50,6 @@ struct EnumTraits<printing::mojom::PdfRenderSettings_Mode,
case MojomMode::TEXTONLY:
*output = PrintMode::TEXTONLY;
return true;
case MojomMode::GDI_TEXT:
*output = PrintMode::GDI_TEXT;
return true;
case MojomMode::POSTSCRIPT_LEVEL2:
*output = PrintMode::POSTSCRIPT_LEVEL2;
@ -66,9 +60,6 @@ struct EnumTraits<printing::mojom::PdfRenderSettings_Mode,
case MojomMode::EMF_WITH_REDUCED_RASTERIZATION:
*output = PrintMode::EMF_WITH_REDUCED_RASTERIZATION;
return true;
case MojomMode::EMF_WITH_REDUCED_RASTERIZATION_AND_GDI_TEXT:
*output = PrintMode::EMF_WITH_REDUCED_RASTERIZATION_AND_GDI_TEXT;
return true;
case MojomMode::POSTSCRIPT_LEVEL3_WITH_TYPE42_FONTS:
*output = PrintMode::POSTSCRIPT_LEVEL3_WITH_TYPE42_FONTS;
return true;

@ -75,10 +75,6 @@ void SetPDFEnsureTypefaceCharactersAccessible(
PDFEngineExports::Get()->SetPDFEnsureTypefaceCharactersAccessible(func);
}
void SetPDFUseGDIPrinting(bool enable) {
PDFEngineExports::Get()->SetPDFUseGDIPrinting(enable);
}
void SetPDFUsePrintMode(int mode) {
PDFEngineExports::Get()->SetPDFUsePrintMode(mode);
}

@ -98,8 +98,6 @@ bool RenderPDFPageToDC(base::span<const uint8_t> pdf_buffer,
void SetPDFEnsureTypefaceCharactersAccessible(
PDFEnsureTypefaceCharactersAccessible func);
void SetPDFUseGDIPrinting(bool enable);
void SetPDFUsePrintMode(int mode);
#endif // defined(OS_WIN)

@ -538,7 +538,6 @@ class PDFEngineExports {
virtual void SetPDFEnsureTypefaceCharactersAccessible(
PDFEnsureTypefaceCharactersAccessible func) = 0;
virtual void SetPDFUseGDIPrinting(bool enable) = 0;
virtual void SetPDFUsePrintMode(int mode) = 0;
#endif // defined(OS_WIN)

@ -317,10 +317,6 @@ void PDFiumEngineExports::SetPDFEnsureTypefaceCharactersAccessible(
reinterpret_cast<PDFiumEnsureTypefaceCharactersAccessible>(func));
}
void PDFiumEngineExports::SetPDFUseGDIPrinting(bool enable) {
FPDF_SetPrintTextWithGDI(enable);
}
void PDFiumEngineExports::SetPDFUsePrintMode(int mode) {
FPDF_SetPrintMode(mode);
}

@ -33,7 +33,6 @@ class PDFiumEngineExports : public PDFEngineExports {
void SetPDFEnsureTypefaceCharactersAccessible(
PDFEnsureTypefaceCharactersAccessible func) override;
void SetPDFUseGDIPrinting(bool enable) override;
void SetPDFUsePrintMode(int mode) override;
#endif // defined(OS_WIN)
bool RenderPDFPageToBitmap(base::span<const uint8_t> pdf_buffer,

@ -66,8 +66,6 @@ struct PrintSettings {
bool landscape;
bool supports_alpha_blend;
[EnableIf=is_win]
bool print_text_with_gdi;
[EnableIf=is_win]
PrinterLanguageType printer_language_type;

@ -148,7 +148,6 @@ bool StructTraits<
out->SetOrientation(data.landscape());
out->set_supports_alpha_blend(data.supports_alpha_blend());
#if defined(OS_WIN)
out->set_print_text_with_gdi(data.print_text_with_gdi());
out->set_printer_language_type(data.printer_language_type());
#endif // defined(OS_WIN)
out->set_is_modifiable(data.is_modifiable());

@ -151,9 +151,6 @@ struct StructTraits<printing::mojom::PrintSettingsDataView,
}
#if defined(OS_WIN)
static bool print_text_with_gdi(const printing::PrintSettings& s) {
return s.print_text_with_gdi();
}
static printing::mojom::PrinterLanguageType printer_language_type(
const printing::PrintSettings& s) {
return s.printer_language_type();

@ -141,9 +141,6 @@ constexpr bool kPrintSettingsSupportsAlphaBlend1 = false;
constexpr bool kPrintSettingsSupportsAlphaBlend2 = true;
#if defined(OS_WIN)
constexpr bool kPrintSettingsPrintTextWithGdi1 = true;
constexpr bool kPrintSettingsPrintTextWithGdi2 = false;
constexpr mojom::PrinterLanguageType kPrintSettingsPrinterLanguageType1 =
mojom::PrinterLanguageType::kTextOnly;
constexpr mojom::PrinterLanguageType kPrintSettingsPrinterLanguageType2 =
@ -204,7 +201,6 @@ PrintSettings GenerateSamplePrintSettingsDefaultMargins() {
settings.set_supports_alpha_blend(kPrintSettingsSupportsAlphaBlend1);
#if defined(OS_WIN)
settings.set_print_text_with_gdi(kPrintSettingsPrintTextWithGdi1);
settings.set_printer_language_type(kPrintSettingsPrinterLanguageType1);
#endif
@ -237,7 +233,6 @@ PrintSettings GenerateSamplePrintSettingsCustomMargins() {
settings.SetCustomMargins(kPrintSettingsCustomMarginsInPoints);
#if defined(OS_WIN)
settings.set_print_text_with_gdi(kPrintSettingsPrintTextWithGdi2);
settings.set_printer_language_type(kPrintSettingsPrinterLanguageType2);
#endif
@ -487,7 +482,6 @@ TEST(PrintingContextMojomTraitsTest,
EXPECT_EQ(output.supports_alpha_blend(), kPrintSettingsSupportsAlphaBlend1);
#if defined(OS_WIN)
EXPECT_EQ(output.print_text_with_gdi(), kPrintSettingsPrintTextWithGdi1);
EXPECT_EQ(output.printer_language_type(), kPrintSettingsPrinterLanguageType1);
#endif
@ -547,7 +541,6 @@ TEST(PrintingContextMojomTraitsTest,
EXPECT_EQ(output.supports_alpha_blend(), kPrintSettingsSupportsAlphaBlend2);
#if defined(OS_WIN)
EXPECT_EQ(output.print_text_with_gdi(), kPrintSettingsPrintTextWithGdi2);
EXPECT_EQ(output.printer_language_type(), kPrintSettingsPrinterLanguageType2);
#endif

@ -18,11 +18,9 @@ struct PdfRenderSettings {
NORMAL = 0,
#if defined(OS_WIN)
TEXTONLY,
GDI_TEXT,
POSTSCRIPT_LEVEL2,
POSTSCRIPT_LEVEL3,
EMF_WITH_REDUCED_RASTERIZATION,
EMF_WITH_REDUCED_RASTERIZATION_AND_GDI_TEXT,
POSTSCRIPT_LEVEL3_WITH_TYPE42_FONTS,
LAST = POSTSCRIPT_LEVEL3_WITH_TYPE42_FONTS
#else

@ -261,7 +261,6 @@ PrintSettings::PrintSettings(const PrintSettings& settings) {
landscape_ = settings.landscape_;
supports_alpha_blend_ = settings.supports_alpha_blend_;
#if defined(OS_WIN)
print_text_with_gdi_ = settings.print_text_with_gdi_;
printer_language_type_ = settings.printer_language_type_;
#endif
is_modifiable_ = settings.is_modifiable_;
@ -302,7 +301,6 @@ PrintSettings& PrintSettings::operator=(const PrintSettings& settings) {
landscape_ = settings.landscape_;
supports_alpha_blend_ = settings.supports_alpha_blend_;
#if defined(OS_WIN)
print_text_with_gdi_ = settings.print_text_with_gdi_;
printer_language_type_ = settings.printer_language_type_;
#endif
is_modifiable_ = settings.is_modifiable_;
@ -343,7 +341,6 @@ void PrintSettings::Clear() {
landscape_ = false;
supports_alpha_blend_ = true;
#if defined(OS_WIN)
print_text_with_gdi_ = false;
printer_language_type_ = mojom::PrinterLanguageType::kNone;
#endif
is_modifiable_ = true;

@ -191,9 +191,6 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings {
mojom::DuplexMode duplex_mode() const { return duplex_mode_; }
#if defined(OS_WIN)
void set_print_text_with_gdi(bool use_gdi) { print_text_with_gdi_ = use_gdi; }
bool print_text_with_gdi() const { return print_text_with_gdi_; }
void set_printer_language_type(mojom::PrinterLanguageType type) {
printer_language_type_ = type;
}
@ -314,9 +311,6 @@ class COMPONENT_EXPORT(PRINTING) PrintSettings {
bool supports_alpha_blend_;
#if defined(OS_WIN)
// True to print text with GDI.
bool print_text_with_gdi_;
mojom::PrinterLanguageType printer_language_type_;
#endif

@ -215,9 +215,6 @@ std::unique_ptr<PrintSettings> PrintSettingsFromJobSettings(
job_settings.FindBoolKey(kSettingPreviewModifiable);
if (is_modifiable.has_value()) {
settings->set_is_modifiable(is_modifiable.value());
#if defined(OS_WIN)
settings->set_print_text_with_gdi(is_modifiable.value());
#endif
}
#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(USE_CUPS))

@ -56,9 +56,6 @@ void PrintingContext::set_margin_type(mojom::MarginType type) {
void PrintingContext::set_is_modifiable(bool is_modifiable) {
settings_->set_is_modifiable(is_modifiable);
#if defined(OS_WIN)
settings_->set_print_text_with_gdi(is_modifiable);
#endif
}
const PrintSettings& PrintingContext::settings() const {

@ -147,12 +147,10 @@ mojom::ResultCode PrintingContextSystemDialogWin::ParseDialogResultEx(
const PRINTDLGEX& dialog_options) {
// If the user clicked OK or Apply then Cancel, but not only Cancel.
if (dialog_options.dwResultAction != PD_RESULT_CANCEL) {
// Start fresh, but preserve is_modifiable and GDI print setting.
// Start fresh, but preserve is_modifiable print setting.
bool is_modifiable = settings_->is_modifiable();
bool print_text_with_gdi = settings_->print_text_with_gdi();
ResetSettings();
settings_->set_is_modifiable(is_modifiable);
settings_->set_print_text_with_gdi(print_text_with_gdi);
DEVMODE* dev_mode = NULL;
if (dialog_options.hDevMode) {

@ -34,6 +34,9 @@ chromium-metrics-reviews@google.com.
<histogram name="Printing.ConversionSize.EmfWithGdiText" units="KB"
expires_after="2022-09-30">
<obsolete>
Removed 2021-11.
</obsolete>
<owner>thestig@chromium.org</owner>
<owner>awscreen@chromium.org</owner>
<summary>
@ -54,6 +57,9 @@ chromium-metrics-reviews@google.com.
<histogram name="Printing.ConversionSize.EmfWithReducedRasterizationAndGdiText"
units="KB" expires_after="2022-09-30">
<obsolete>
Removed 2021-11.
</obsolete>
<owner>thestig@chromium.org</owner>
<owner>awscreen@chromium.org</owner>
<summary>