Initialize PDF SDK with policy in chrome_pdf::RenderPDFPageToDC()
This CL adds a new method `SetUseSkiaRendererPolicy()` to mojom interface `PdfToEmfConverter` so that the enterprise policy regarding whether to use Skia as the PDF renderer is set immediately once the mojom remote is bound. This change also sets the enterprise policy from the last instance of caller of chrome_pdf::GetPDFDocInfo(), therefore remove the TODO comment for chrome_pdf::GetPDFDocInfo(). Bug: 1440430 Change-Id: I2ab78a76447d2566f596fd078e9f655e1006bbe4 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4540682 Reviewed-by: Chris Bookholt <bookholt@chromium.org> Code-Coverage: Findit <findit-for-me@appspot.gserviceaccount.com> Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Nigi <nigi@chromium.org> Cr-Commit-Position: refs/heads/main@{#1146679}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
7d5c5e1ab4
commit
b26aaad4a1
chrome
browser
printing
services
printing
pdf
@ -32,6 +32,7 @@
|
||||
#include "mojo/public/cpp/bindings/remote.h"
|
||||
#include "printing/emf_win.h"
|
||||
#include "printing/pdf_render_settings.h"
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
|
||||
using content::BrowserThread;
|
||||
|
||||
@ -69,6 +70,7 @@ class PdfConverterImpl : public PdfConverter {
|
||||
public:
|
||||
PdfConverterImpl(scoped_refptr<base::RefCountedMemory> data,
|
||||
const PdfRenderSettings& conversion_settings,
|
||||
const absl::optional<bool>& use_skia,
|
||||
StartCallback start_callback);
|
||||
|
||||
PdfConverterImpl(const PdfConverterImpl&) = delete;
|
||||
@ -135,6 +137,8 @@ class PdfConverterImpl : public PdfConverter {
|
||||
|
||||
const PdfRenderSettings settings_;
|
||||
|
||||
absl::optional<bool> use_skia_;
|
||||
|
||||
// Document loaded callback.
|
||||
PdfConverter::StartCallback start_callback_;
|
||||
|
||||
@ -197,8 +201,11 @@ bool PostScriptMetaFile::SafePlayback(HDC hdc) const {
|
||||
|
||||
PdfConverterImpl::PdfConverterImpl(scoped_refptr<base::RefCountedMemory> data,
|
||||
const PdfRenderSettings& settings,
|
||||
const absl::optional<bool>& use_skia,
|
||||
StartCallback start_callback)
|
||||
: settings_(settings), start_callback_(std::move(start_callback)) {
|
||||
: settings_(settings),
|
||||
use_skia_(use_skia),
|
||||
start_callback_(std::move(start_callback)) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
DCHECK(start_callback_);
|
||||
|
||||
@ -248,6 +255,9 @@ void PdfConverterImpl::OnPageCount(
|
||||
pdf_to_emf_converter_.set_disconnect_handler(base::BindOnce(
|
||||
&PdfConverterImpl::OnFailed, weak_ptr_factory_.GetWeakPtr(),
|
||||
std::string("Connection to PdfToEmfConverter error.")));
|
||||
if (use_skia_) {
|
||||
pdf_to_emf_converter_->SetUseSkiaRendererPolicy(*use_skia_);
|
||||
}
|
||||
std::move(start_callback_).Run(page_count);
|
||||
page_count_ = page_count;
|
||||
}
|
||||
@ -376,8 +386,9 @@ PdfConverter::~PdfConverter() = default;
|
||||
std::unique_ptr<PdfConverter> PdfConverter::StartPdfConverter(
|
||||
scoped_refptr<base::RefCountedMemory> data,
|
||||
const PdfRenderSettings& conversion_settings,
|
||||
const absl::optional<bool>& use_skia,
|
||||
StartCallback start_callback) {
|
||||
return std::make_unique<PdfConverterImpl>(data, conversion_settings,
|
||||
return std::make_unique<PdfConverterImpl>(data, conversion_settings, use_skia,
|
||||
std::move(start_callback));
|
||||
}
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
#include "base/functional/callback_forward.h"
|
||||
#include "base/memory/ref_counted_memory.h"
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
|
||||
namespace printing {
|
||||
|
||||
@ -29,6 +30,7 @@ class PdfConverter {
|
||||
static std::unique_ptr<PdfConverter> StartPdfConverter(
|
||||
scoped_refptr<base::RefCountedMemory> data,
|
||||
const PdfRenderSettings& conversion_settings,
|
||||
const absl::optional<bool>& use_skia,
|
||||
StartCallback start_callback);
|
||||
|
||||
// Requests conversion of the page. `page_index` is 0-base page index for the
|
||||
|
@ -25,6 +25,8 @@
|
||||
#include "printing/emf_win.h"
|
||||
#include "printing/metafile.h"
|
||||
#include "printing/pdf_render_settings.h"
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
|
||||
#ifndef NTDDI_WIN10_VB // Windows 10.0.19041
|
||||
#error "Older Windows SDK unsupported"
|
||||
@ -41,6 +43,8 @@ constexpr size_t kHeaderSize = sizeof(ENHMETAHEADER);
|
||||
|
||||
constexpr uint32_t kInvalidPageCount = std::numeric_limits<uint32_t>::max();
|
||||
|
||||
const absl::optional<bool> kUseSkiaOptions[]{absl::nullopt, true, false};
|
||||
|
||||
void StartCallbackImpl(base::OnceClosure quit_closure,
|
||||
uint32_t* page_count_out,
|
||||
uint32_t page_count_in) {
|
||||
@ -105,7 +109,9 @@ std::string HashData(const char* data, size_t len) {
|
||||
return base::HexEncode(base::SHA1HashSpan(span));
|
||||
}
|
||||
|
||||
class PdfToEmfConverterBrowserTest : public InProcessBrowserTest {
|
||||
class PdfToEmfConverterBrowserTest
|
||||
: public InProcessBrowserTest,
|
||||
public ::testing::WithParamInterface<absl::optional<bool>> {
|
||||
public:
|
||||
PdfToEmfConverterBrowserTest(const PdfToEmfConverterBrowserTest&) = delete;
|
||||
PdfToEmfConverterBrowserTest& operator=(const PdfToEmfConverterBrowserTest&) =
|
||||
@ -152,7 +158,7 @@ class PdfToEmfConverterBrowserTest : public InProcessBrowserTest {
|
||||
base::RunLoop run_loop;
|
||||
uint32_t page_count = kInvalidPageCount;
|
||||
pdf_converter_ = PdfConverter::StartPdfConverter(
|
||||
test_input_, pdf_settings,
|
||||
test_input_, pdf_settings, /*use_skia=*/GetParam(),
|
||||
base::BindOnce(&StartCallbackImpl, run_loop.QuitClosure(),
|
||||
&page_count));
|
||||
run_loop.Run();
|
||||
@ -236,32 +242,33 @@ class PdfToEmfConverterBrowserTest : public InProcessBrowserTest {
|
||||
|
||||
} // namespace
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, FailureNoTempFile) {
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest, FailureNoTempFile) {
|
||||
ScopedSimulateFailureCreatingTempFileForTests fail_creating_temp_file;
|
||||
|
||||
base::RunLoop run_loop;
|
||||
uint32_t page_count = kInvalidPageCount;
|
||||
std::unique_ptr<PdfConverter> pdf_converter = PdfConverter::StartPdfConverter(
|
||||
base::MakeRefCounted<base::RefCountedStaticMemory>(), PdfRenderSettings(),
|
||||
/*use_skia=*/GetParam(),
|
||||
base::BindOnce(&StartCallbackImpl, run_loop.QuitClosure(), &page_count));
|
||||
run_loop.Run();
|
||||
EXPECT_EQ(0u, page_count);
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, FailureBadPdf) {
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest, FailureBadPdf) {
|
||||
scoped_refptr<base::RefCountedStaticMemory> bad_pdf_data =
|
||||
base::MakeRefCounted<base::RefCountedStaticMemory>("0123456789", 10);
|
||||
|
||||
base::RunLoop run_loop;
|
||||
uint32_t page_count = kInvalidPageCount;
|
||||
std::unique_ptr<PdfConverter> pdf_converter = PdfConverter::StartPdfConverter(
|
||||
bad_pdf_data, PdfRenderSettings(),
|
||||
bad_pdf_data, PdfRenderSettings(), /*use_skia=*/GetParam(),
|
||||
base::BindOnce(&StartCallbackImpl, run_loop.QuitClosure(), &page_count));
|
||||
run_loop.Run();
|
||||
EXPECT_EQ(0u, page_count);
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, EmfBasic) {
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest, EmfBasic) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
/*autorotate=*/false,
|
||||
@ -279,7 +286,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, EmfBasic) {
|
||||
}
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest,
|
||||
EmfWithReducedRasterizationBasic) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
@ -299,7 +306,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
}
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel2Basic) {
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest, PostScriptLevel2Basic) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
/*autorotate=*/false, /*use_color=*/true,
|
||||
@ -318,7 +325,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel2Basic) {
|
||||
}
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel3Basic) {
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest, PostScriptLevel3Basic) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
/*autorotate=*/false, /*use_color=*/true,
|
||||
@ -337,7 +344,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel3Basic) {
|
||||
}
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest,
|
||||
PostScriptLevel3WithType42FontsBasic) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
@ -357,7 +364,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
}
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel2Mono) {
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest, PostScriptLevel2Mono) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
/*autorotate=*/false, /*use_color=*/false,
|
||||
@ -366,7 +373,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel2Mono) {
|
||||
"bug_767343_mono.emf");
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel3Mono) {
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest, PostScriptLevel3Mono) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
/*autorotate=*/false, /*use_color=*/false,
|
||||
@ -375,7 +382,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel3Mono) {
|
||||
"bug_767343_mono.emf");
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest,
|
||||
PostScriptLevel2WithZeroSizedText) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
@ -385,7 +392,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
"bug_767343.emf");
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest,
|
||||
PostScriptLevel3WithZeroSizedText) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
@ -395,7 +402,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
"bug_767343.emf");
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest,
|
||||
PostScriptLevel2WithNegativeSizedText) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
@ -405,7 +412,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
"bug_806746.emf");
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest,
|
||||
PostScriptLevel3WithNegativeSizedText) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
@ -415,7 +422,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
"bug_806746.emf");
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest,
|
||||
PostScriptLevel2WithLineCapLineJoin) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
@ -425,7 +432,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
"bug_1030689.emf");
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest,
|
||||
PostScriptLevel3WithLineCapLineJoin) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
@ -435,7 +442,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
"bug_1030689.emf");
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel2Bezier) {
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest, PostScriptLevel2Bezier) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
/*autorotate=*/false, /*use_color=*/true,
|
||||
@ -444,7 +451,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel2Bezier) {
|
||||
"bezier.emf");
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel3Bezier) {
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest, PostScriptLevel3Bezier) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
/*autorotate=*/false, /*use_color=*/true,
|
||||
@ -453,7 +460,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel3Bezier) {
|
||||
"bezier.emf");
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel2Image) {
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest, PostScriptLevel2Image) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
/*autorotate=*/false, /*use_color=*/true,
|
||||
@ -462,7 +469,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel2Image) {
|
||||
"embedded_images_ps_level2.emf");
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel3Image) {
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest, PostScriptLevel3Image) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
/*autorotate=*/false, /*use_color=*/true,
|
||||
@ -472,7 +479,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest, PostScriptLevel3Image) {
|
||||
}
|
||||
|
||||
// Regression test for crbug.com/1399155.
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest,
|
||||
PostScriptLevel2FaxCompress) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
@ -483,7 +490,7 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
}
|
||||
|
||||
// Regression test for crbug.com/1399155.
|
||||
IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
IN_PROC_BROWSER_TEST_P(PdfToEmfConverterBrowserTest,
|
||||
PostScriptLevel3FaxCompress) {
|
||||
const PdfRenderSettings pdf_settings(
|
||||
kLetter200DpiRect, gfx::Point(0, 0), k200DpiSize,
|
||||
@ -493,4 +500,8 @@ IN_PROC_BROWSER_TEST_F(PdfToEmfConverterBrowserTest,
|
||||
"bug_1399155.emf");
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(All,
|
||||
PdfToEmfConverterBrowserTest,
|
||||
testing::ValuesIn(kUseSkiaOptions));
|
||||
|
||||
} // namespace printing
|
||||
|
@ -28,6 +28,7 @@
|
||||
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
#include "base/command_line.h"
|
||||
#include "chrome/browser/pdf/pdf_pref_names.h"
|
||||
#include "chrome/browser/printing/pdf_to_emf_converter.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/common/chrome_features.h"
|
||||
@ -38,6 +39,7 @@
|
||||
#include "printing/pdf_render_settings.h"
|
||||
#include "printing/printed_page_win.h"
|
||||
#include "printing/printing_features.h"
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
#endif
|
||||
|
||||
|
||||
@ -145,6 +147,10 @@ void PrintJob::Initialize(std::unique_ptr<PrinterQuery> query,
|
||||
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
pdf_page_mapping_ = PageNumber::GetPages(settings->ranges(), page_count);
|
||||
PrefService* prefs = GetPrefsForWebContents(GetWebContents(rfh_id_));
|
||||
if (prefs && prefs->IsManagedPreference(prefs::kPdfUseSkiaRendererEnabled)) {
|
||||
use_skia_ = prefs->GetBoolean(prefs::kPdfUseSkiaRendererEnabled);
|
||||
}
|
||||
#endif
|
||||
|
||||
auto new_doc = base::MakeRefCounted<PrintedDocument>(std::move(settings),
|
||||
@ -312,14 +318,18 @@ const std::string& PrintJob::source_id() const {
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
class PrintJob::PdfConversionState {
|
||||
public:
|
||||
PdfConversionState(const gfx::Size& page_size, const gfx::Rect& content_area)
|
||||
: page_size_(page_size), content_area_(content_area) {}
|
||||
PdfConversionState(const gfx::Size& page_size,
|
||||
const gfx::Rect& content_area,
|
||||
const absl::optional<bool>& use_skia)
|
||||
: page_size_(page_size),
|
||||
content_area_(content_area),
|
||||
use_skia_(use_skia) {}
|
||||
|
||||
void Start(scoped_refptr<base::RefCountedMemory> data,
|
||||
const PdfRenderSettings& conversion_settings,
|
||||
PdfConverter::StartCallback start_callback) {
|
||||
converter_ = PdfConverter::StartPdfConverter(data, conversion_settings,
|
||||
std::move(start_callback));
|
||||
converter_ = PdfConverter::StartPdfConverter(
|
||||
data, conversion_settings, use_skia_, std::move(start_callback));
|
||||
}
|
||||
|
||||
void GetMorePages(PdfConverter::GetPageCallback get_page_callback) {
|
||||
@ -349,6 +359,7 @@ class PrintJob::PdfConversionState {
|
||||
int pages_in_progress_ = 0;
|
||||
const gfx::Size page_size_;
|
||||
const gfx::Rect content_area_;
|
||||
absl::optional<bool> use_skia_;
|
||||
std::unique_ptr<PdfConverter> converter_;
|
||||
};
|
||||
|
||||
@ -359,7 +370,7 @@ void PrintJob::StartPdfToEmfConversion(
|
||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||
DCHECK(!pdf_conversion_state_);
|
||||
pdf_conversion_state_ =
|
||||
std::make_unique<PdfConversionState>(page_size, content_area);
|
||||
std::make_unique<PdfConversionState>(page_size, content_area, use_skia_);
|
||||
|
||||
const PrintSettings& settings = document()->settings();
|
||||
|
||||
@ -427,7 +438,7 @@ void PrintJob::StartPdfToTextConversion(
|
||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||
DCHECK(!pdf_conversion_state_);
|
||||
pdf_conversion_state_ =
|
||||
std::make_unique<PdfConversionState>(gfx::Size(), gfx::Rect());
|
||||
std::make_unique<PdfConversionState>(gfx::Size(), gfx::Rect(), use_skia_);
|
||||
gfx::Rect page_area = gfx::Rect(0, 0, page_size.width(), page_size.height());
|
||||
const PrintSettings& settings = document()->settings();
|
||||
PdfRenderSettings render_settings(
|
||||
@ -446,8 +457,8 @@ void PrintJob::StartPdfToPostScriptConversion(
|
||||
bool ps_level2) {
|
||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||
DCHECK(!pdf_conversion_state_);
|
||||
pdf_conversion_state_ = std::make_unique<PdfConversionState>(
|
||||
gfx::Size(), gfx::Rect());
|
||||
pdf_conversion_state_ =
|
||||
std::make_unique<PdfConversionState>(gfx::Size(), gfx::Rect(), use_skia_);
|
||||
const PrintSettings& settings = document()->settings();
|
||||
|
||||
PdfRenderSettings::Mode mode;
|
||||
|
@ -22,6 +22,10 @@
|
||||
#include "chromeos/crosapi/mojom/local_printer.mojom.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
#endif
|
||||
|
||||
namespace base {
|
||||
class Location;
|
||||
class RefCountedMemory;
|
||||
@ -255,6 +259,7 @@ class PrintJob : public base::RefCountedThreadSafe<PrintJob> {
|
||||
class PdfConversionState;
|
||||
std::unique_ptr<PdfConversionState> pdf_conversion_state_;
|
||||
std::vector<uint32_t> pdf_page_mapping_;
|
||||
absl::optional<bool> use_skia_;
|
||||
#endif // BUILDFLAG(IS_WIN)
|
||||
|
||||
#if BUILDFLAG(IS_CHROMEOS)
|
||||
|
@ -152,4 +152,8 @@ void PdfToEmfConverter::ConvertPage(uint32_t page_index,
|
||||
std::move(callback).Run(std::move(emf_region), scale_factor);
|
||||
}
|
||||
|
||||
void PdfToEmfConverter::SetUseSkiaRendererPolicy(bool use_skia) {
|
||||
chrome_pdf::SetUseSkiaRendererPolicy(use_skia);
|
||||
}
|
||||
|
||||
} // namespace printing
|
||||
|
@ -26,6 +26,7 @@ class PdfToEmfConverter : public mojom::PdfToEmfConverter {
|
||||
private:
|
||||
// mojom::PdfToEmfConverter implementation.
|
||||
void ConvertPage(uint32_t page_index, ConvertPageCallback callback) override;
|
||||
void SetUseSkiaRendererPolicy(bool use_skia) override;
|
||||
|
||||
void SetPrintMode();
|
||||
void LoadPdf(base::ReadOnlySharedMemoryRegion pdf_region);
|
||||
|
@ -16,6 +16,11 @@ interface PdfToEmfConverter {
|
||||
ConvertPage(uint32 page_index) =>
|
||||
(mojo_base.mojom.ReadOnlySharedMemoryRegion? emf_region,
|
||||
float scale_factor);
|
||||
|
||||
// Sets the status for enterprise policy `kPdfUseSkiaRendererEnabled`. It
|
||||
// should be called immediately once `mojom::NupPageConvert` remote is
|
||||
// created and only when the enterprise policy is managed.
|
||||
SetUseSkiaRendererPolicy(bool use_skia);
|
||||
};
|
||||
|
||||
// Generates a PdfToEmfConverter, for converting a PDF to EMF.
|
||||
|
@ -59,8 +59,6 @@ std::vector<uint8_t> CreateFlattenedPdf(
|
||||
#endif // BUILDFLAG(IS_CHROMEOS)
|
||||
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
// TODO(crbug.com/1440430): Make sure its callers set
|
||||
// `g_use_skia_renderer_enabled_by_policy` before calling this function.
|
||||
bool RenderPDFPageToDC(base::span<const uint8_t> pdf_buffer,
|
||||
int page_index,
|
||||
HDC dc,
|
||||
@ -92,8 +90,6 @@ void SetPDFUsePrintMode(int mode) {
|
||||
}
|
||||
#endif // BUILDFLAG(IS_WIN)
|
||||
|
||||
// TODO(crbug.com/1440430): Make sure its callers set
|
||||
// `g_use_skia_renderer_enabled_by_policy` before calling this function.
|
||||
bool GetPDFDocInfo(base::span<const uint8_t> pdf_buffer,
|
||||
int* page_count,
|
||||
float* max_page_width) {
|
||||
|
Reference in New Issue
Block a user