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/task/thread_pool.h"
|
||||||
#include "base/time/time.h"
|
#include "base/time/time.h"
|
||||||
#include "chrome/browser/ash/arc/print_spooler/arc_print_spooler_util.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/print_view_manager_common.h"
|
||||||
#include "chrome/browser/printing/printing_service.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 "chrome/services/printing/public/mojom/printing_service.mojom.h"
|
||||||
#include "components/arc/intent_helper/custom_tab.h"
|
#include "components/arc/intent_helper/custom_tab.h"
|
||||||
|
#include "components/prefs/pref_service.h"
|
||||||
#include "content/public/browser/web_contents.h"
|
#include "content/public/browser/web_contents.h"
|
||||||
#include "mojo/public/c/system/types.h"
|
#include "mojo/public/c/system/types.h"
|
||||||
#include "net/base/filename_util.h"
|
#include "net/base/filename_util.h"
|
||||||
@@ -325,6 +328,13 @@ void PrintSessionImpl::OnPreviewDocumentRead(
|
|||||||
pdf_flattener_.set_disconnect_handler(
|
pdf_flattener_.set_disconnect_handler(
|
||||||
base::BindOnce(&PrintSessionImpl::OnPdfFlattenerDisconnected,
|
base::BindOnce(&PrintSessionImpl::OnPdfFlattenerDisconnected,
|
||||||
weak_ptr_factory_.GetWeakPtr()));
|
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;
|
bool inserted = callbacks_.emplace(request_id, std::move(callback)).second;
|
||||||
|
@@ -1054,6 +1054,7 @@ static_library("extensions") {
|
|||||||
deps += [
|
deps += [
|
||||||
# TODO(crbug.com/1340540): Find an appropriate spot for printing_metrics.
|
# TODO(crbug.com/1340540): Find an appropriate spot for printing_metrics.
|
||||||
"//chrome/browser/chromeos/extensions/printing_metrics",
|
"//chrome/browser/chromeos/extensions/printing_metrics",
|
||||||
|
"//chrome/browser/pdf:pdf_pref_names",
|
||||||
"//chromeos/printing",
|
"//chromeos/printing",
|
||||||
"//printing/backend",
|
"//printing/backend",
|
||||||
]
|
]
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
#include "base/values.h"
|
#include "base/values.h"
|
||||||
#include "chrome/browser/extensions/api/printing/print_job_controller.h"
|
#include "chrome/browser/extensions/api/printing/print_job_controller.h"
|
||||||
#include "chrome/browser/extensions/api/printing/printing_api_utils.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/printing/printing_service.h"
|
||||||
#include "chrome/browser/profiles/profile.h"
|
#include "chrome/browser/profiles/profile.h"
|
||||||
#include "chrome/browser/ui/extensions/extensions_dialogs.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(
|
pdf_flattener_->set_disconnect_handler(
|
||||||
base::BindOnce(&PrintJobSubmitter::OnPdfFlattenerDisconnected,
|
base::BindOnce(&PrintJobSubmitter::OnPdfFlattenerDisconnected,
|
||||||
weak_ptr_factory_.GetWeakPtr()));
|
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_)
|
(*pdf_flattener_)
|
||||||
->FlattenPdf(std::move(memory.region),
|
->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));
|
std::move(callback).Run(std::move(region_mapping.region));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PdfFlattener::SetUseSkiaRendererPolicy(bool use_skia) {
|
||||||
|
chrome_pdf::SetUseSkiaRendererPolicy(use_skia);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace printing
|
} // namespace printing
|
||||||
|
@@ -22,6 +22,7 @@ class PdfFlattener : public printing::mojom::PdfFlattener {
|
|||||||
// printing::mojom::PdfFlattener:
|
// printing::mojom::PdfFlattener:
|
||||||
void FlattenPdf(base::ReadOnlySharedMemoryRegion src_pdf_region,
|
void FlattenPdf(base::ReadOnlySharedMemoryRegion src_pdf_region,
|
||||||
FlattenPdfCallback callback) override;
|
FlattenPdfCallback callback) override;
|
||||||
|
void SetUseSkiaRendererPolicy(bool use_skia) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace printing
|
} // namespace printing
|
||||||
|
@@ -15,4 +15,10 @@ interface PdfFlattener {
|
|||||||
// `flattened_pdf_region` contains the flattened PDF.
|
// `flattened_pdf_region` contains the flattened PDF.
|
||||||
FlattenPdf(mojo_base.mojom.ReadOnlySharedMemoryRegion src_pdf_region)
|
FlattenPdf(mojo_base.mojom.ReadOnlySharedMemoryRegion src_pdf_region)
|
||||||
=> (mojo_base.mojom.ReadOnlySharedMemoryRegion? flattened_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)
|
#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(
|
std::vector<uint8_t> CreateFlattenedPdf(
|
||||||
base::span<const uint8_t> input_buffer) {
|
base::span<const uint8_t> input_buffer) {
|
||||||
ScopedSdkInitializer scoped_sdk_initializer(/*enable_v8=*/false);
|
ScopedSdkInitializer scoped_sdk_initializer(/*enable_v8=*/false);
|
||||||
|
Reference in New Issue
Block a user