Initialize PDF SDK with policy in chrome_pdf::CreateFlattenedPdf()
This CL adds a new method `SetUseSkiaRendererPolicy()` to mojom interface `PdfFlattener` so that the enterprise policy regarding whether to use Skia as the PDF renderer is set immediately once the mojom remote is bound to the printing service. Bug: 1440430 Change-Id: Icb836c7c8ede92fa219b7df881ae3b97f32b0dad Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4539684 Code-Coverage: Findit <findit-for-me@appspot.gserviceaccount.com> Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Nigi <nigi@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org> Cr-Commit-Position: refs/heads/main@{#1146604}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
9b3b092931
commit
c14288d3c1
chrome
browser
services
printing
pdf
@ -22,10 +22,13 @@
|
||||
#include "base/task/thread_pool.h"
|
||||
#include "base/time/time.h"
|
||||
#include "chrome/browser/ash/arc/print_spooler/arc_print_spooler_util.h"
|
||||
#include "chrome/browser/pdf/pdf_pref_names.h"
|
||||
#include "chrome/browser/printing/print_view_manager_common.h"
|
||||
#include "chrome/browser/printing/printing_service.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/services/printing/public/mojom/printing_service.mojom.h"
|
||||
#include "components/arc/intent_helper/custom_tab.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
#include "mojo/public/c/system/types.h"
|
||||
#include "net/base/filename_util.h"
|
||||
@ -325,6 +328,13 @@ void PrintSessionImpl::OnPreviewDocumentRead(
|
||||
pdf_flattener_.set_disconnect_handler(
|
||||
base::BindOnce(&PrintSessionImpl::OnPdfFlattenerDisconnected,
|
||||
weak_ptr_factory_.GetWeakPtr()));
|
||||
const PrefService* prefs =
|
||||
Profile::FromBrowserContext(web_contents_->GetBrowserContext())
|
||||
->GetPrefs();
|
||||
if (prefs->IsManagedPreference(prefs::kPdfUseSkiaRendererEnabled)) {
|
||||
pdf_flattener_->SetUseSkiaRendererPolicy(
|
||||
prefs->GetBoolean(prefs::kPdfUseSkiaRendererEnabled));
|
||||
}
|
||||
}
|
||||
|
||||
bool inserted = callbacks_.emplace(request_id, std::move(callback)).second;
|
||||
|
@ -1054,6 +1054,7 @@ static_library("extensions") {
|
||||
deps += [
|
||||
# TODO(crbug.com/1340540): Find an appropriate spot for printing_metrics.
|
||||
"//chrome/browser/chromeos/extensions/printing_metrics",
|
||||
"//chrome/browser/pdf:pdf_pref_names",
|
||||
"//chromeos/printing",
|
||||
"//printing/backend",
|
||||
]
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "base/values.h"
|
||||
#include "chrome/browser/extensions/api/printing/print_job_controller.h"
|
||||
#include "chrome/browser/extensions/api/printing/printing_api_utils.h"
|
||||
#include "chrome/browser/pdf/pdf_pref_names.h"
|
||||
#include "chrome/browser/printing/printing_service.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/ui/extensions/extensions_dialogs.h"
|
||||
@ -215,6 +216,14 @@ void PrintJobSubmitter::OnDocumentDataRead(std::unique_ptr<std::string> data,
|
||||
pdf_flattener_->set_disconnect_handler(
|
||||
base::BindOnce(&PrintJobSubmitter::OnPdfFlattenerDisconnected,
|
||||
weak_ptr_factory_.GetWeakPtr()));
|
||||
const PrefService* prefs =
|
||||
Profile::FromBrowserContext(browser_context_)->GetPrefs();
|
||||
if (prefs &&
|
||||
prefs->IsManagedPreference(prefs::kPdfUseSkiaRendererEnabled)) {
|
||||
(*pdf_flattener_)
|
||||
->SetUseSkiaRendererPolicy(
|
||||
prefs->GetBoolean(prefs::kPdfUseSkiaRendererEnabled));
|
||||
}
|
||||
}
|
||||
(*pdf_flattener_)
|
||||
->FlattenPdf(std::move(memory.region),
|
||||
|
@ -44,4 +44,8 @@ void PdfFlattener::FlattenPdf(base::ReadOnlySharedMemoryRegion src_pdf_region,
|
||||
std::move(callback).Run(std::move(region_mapping.region));
|
||||
}
|
||||
|
||||
void PdfFlattener::SetUseSkiaRendererPolicy(bool use_skia) {
|
||||
chrome_pdf::SetUseSkiaRendererPolicy(use_skia);
|
||||
}
|
||||
|
||||
} // namespace printing
|
||||
|
@ -22,6 +22,7 @@ class PdfFlattener : public printing::mojom::PdfFlattener {
|
||||
// printing::mojom::PdfFlattener:
|
||||
void FlattenPdf(base::ReadOnlySharedMemoryRegion src_pdf_region,
|
||||
FlattenPdfCallback callback) override;
|
||||
void SetUseSkiaRendererPolicy(bool use_skia) override;
|
||||
};
|
||||
|
||||
} // namespace printing
|
||||
|
@ -15,4 +15,10 @@ interface PdfFlattener {
|
||||
// `flattened_pdf_region` contains the flattened PDF.
|
||||
FlattenPdf(mojo_base.mojom.ReadOnlySharedMemoryRegion src_pdf_region)
|
||||
=> (mojo_base.mojom.ReadOnlySharedMemoryRegion? flattened_pdf_region);
|
||||
|
||||
// Sets the status for enterprise policy `kPdfUseSkiaRendererEnabled`. It
|
||||
// should be called immediately once `mojom::PdfFlattener` remote is
|
||||
// bound to the printing service and only when the enterprise policy is
|
||||
// managed.
|
||||
SetUseSkiaRendererPolicy(bool use_skia);
|
||||
};
|
||||
|
@ -51,8 +51,6 @@ void SetUseSkiaRendererPolicy(bool use_skia) {
|
||||
}
|
||||
|
||||
#if BUILDFLAG(IS_CHROMEOS)
|
||||
// TODO(crbug.com/1440430): Make sure its callers set
|
||||
// `g_use_skia_renderer_enabled_by_policy` before calling this function.
|
||||
std::vector<uint8_t> CreateFlattenedPdf(
|
||||
base::span<const uint8_t> input_buffer) {
|
||||
ScopedSdkInitializer scoped_sdk_initializer(/*enable_v8=*/false);
|
||||
|
Reference in New Issue
Block a user