0

Split off part of PrintingContext::UpdatePrintSettings().

Move the code that sets the printable area for virtual printers into its
own method.

Change-Id: Ic0b3d7716755f9c0a659934162a832dd0281977e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3763754
Reviewed-by: Alan Screen <awscreen@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1025856}
This commit is contained in:
Lei Zhang
2022-07-19 18:41:20 +00:00
committed by Chromium LUCI CQ
parent f65c865695
commit 1e637b88a5
2 changed files with 20 additions and 13 deletions

@ -91,6 +91,21 @@ mojom::ResultCode PrintingContext::OnError() {
return result;
}
void PrintingContext::SetDefaultPrintableAreaForVirtualPrinters() {
gfx::Size paper_size(GetPdfPaperSizeDeviceUnits());
if (!settings_->requested_media().size_microns.IsEmpty()) {
float device_microns_per_device_unit = static_cast<float>(kMicronsPerInch) /
settings_->device_units_per_inch();
paper_size = gfx::Size(settings_->requested_media().size_microns.width() /
device_microns_per_device_unit,
settings_->requested_media().size_microns.height() /
device_microns_per_device_unit);
}
gfx::Rect paper_rect(0, 0, paper_size.width(), paper_size.height());
settings_->SetPrinterPrintableArea(paper_size, paper_rect,
/*landscape_needs_flip=*/true);
}
void PrintingContext::UsePdfSettings() {
base::Value::Dict pdf_settings;
pdf_settings.Set(kSettingHeaderFooterEnabled, false);
@ -153,21 +168,11 @@ mojom::ResultCode PrintingContext::UpdatePrintSettings(
if (!open_in_external_preview &&
(printer_type == mojom::PrinterType::kPdf ||
printer_type == mojom::PrinterType::kExtension)) {
gfx::Size paper_size(GetPdfPaperSizeDeviceUnits());
if (!settings_->requested_media().size_microns.IsEmpty()) {
float device_microns_per_device_unit =
static_cast<float>(kMicronsPerInch) /
settings_->device_units_per_inch();
paper_size =
gfx::Size(settings_->requested_media().size_microns.width() /
device_microns_per_device_unit,
settings_->requested_media().size_microns.height() /
device_microns_per_device_unit);
}
gfx::Rect paper_rect(0, 0, paper_size.width(), paper_size.height());
settings_->SetPrinterPrintableArea(paper_size, paper_rect, true);
SetDefaultPrintableAreaForVirtualPrinters();
return mojom::ResultCode::kSuccess;
}
DCHECK(open_in_external_preview ||
printer_type == mojom::PrinterType::kLocal);
PrinterSettings printer_settings {
#if BUILDFLAG(IS_MAC)

@ -202,6 +202,8 @@ class COMPONENT_EXPORT(PRINTING) PrintingContext {
// Does bookkeeping when an error occurs.
virtual mojom::ResultCode OnError();
void SetDefaultPrintableAreaForVirtualPrinters();
// Complete print context settings.
std::unique_ptr<PrintSettings> settings_;