blob: 844fcf5bd23513e52fa2a2eb7d9d958762e11ddf [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/printing/browser/print_manager_utils.h"
#include "base/command_line.h"
#include "components/printing/browser/print_composite_client.h"
#include "components/printing/common/print_messages.h"
#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
#include "printing/print_settings.h"
namespace printing {
// A temporary flag which makes supporting both paths for OOPIF and non-OOPIF
// printing easier.
static bool g_oopif_enabled = false;
void SetOopifEnabled() {
g_oopif_enabled = true;
}
bool IsOopifEnabled() {
return g_oopif_enabled;
}
void CreateCompositeClientIfNeeded(content::WebContents* web_contents,
bool for_preview) {
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kSitePerProcess) ||
base::FeatureList::IsEnabled(features::kTopDocumentIsolation)) {
// For cases need to support OOPIFs.
PrintCompositeClient::CreateForWebContents(web_contents);
if (for_preview) {
PrintCompositeClient::FromWebContents(web_contents)
->set_for_preview(true);
}
SetOopifEnabled();
}
}
void RenderParamsFromPrintSettings(const PrintSettings& settings,
PrintMsg_Print_Params* params) {
params->page_size = settings.page_setup_device_units().physical_size();
params->content_size.SetSize(
settings.page_setup_device_units().content_area().width(),
settings.page_setup_device_units().content_area().height());
params->printable_area.SetRect(
settings.page_setup_device_units().printable_area().x(),
settings.page_setup_device_units().printable_area().y(),
settings.page_setup_device_units().printable_area().width(),
settings.page_setup_device_units().printable_area().height());
params->margin_top = settings.page_setup_device_units().content_area().y();
params->margin_left = settings.page_setup_device_units().content_area().x();
params->dpi = settings.dpi();
params->scale_factor = settings.scale_factor();
params->rasterize_pdf = settings.rasterize_pdf();
// Always use an invalid cookie.
params->document_cookie = 0;
params->selection_only = settings.selection_only();
params->supports_alpha_blend = settings.supports_alpha_blend();
params->should_print_backgrounds = settings.should_print_backgrounds();
params->display_header_footer = settings.display_header_footer();
params->title = settings.title();
params->url = settings.url();
params->printed_doc_type =
IsOopifEnabled() ? SkiaDocumentType::MSKP : SkiaDocumentType::PDF;
}
} // namespace printing