Skip to content

Commit

Permalink
[unseasoned-pdf] Store print settings in blink::WebPrintParams
Browse files Browse the repository at this point in the history
Replace usage of PP_PrintSettings_Dev and PP_PdfPrintSettings_Dev by
converting them to blink::WebPrintParams as soon as they enter
OutOfProcessInstance. Accordingly, replace Pepper struct usage
throughout PDF printing code, thus making it compatible with the
Pepper-free plugin.

Bug: 1200000
Change-Id: I713e4250acbfe9ed73aefbf6c48b8d1e312e5377
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2950949
Commit-Queue: Daniel Hosseinian <dhoss@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#892266}
  • Loading branch information
Daniel Hosseinian authored and Chromium LUCI CQ committed Jun 14, 2021
1 parent deed5a8 commit 2e6d957
Show file tree
Hide file tree
Showing 11 changed files with 155 additions and 189 deletions.
2 changes: 2 additions & 0 deletions pdf/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,7 @@ if (enable_pdf) {
deps = [
"//base",
"//ppapi/cpp:objects",
"//printing/mojom",
"//skia",
"//third_party/blink/public:blink",
"//third_party/blink/public/common:headers",
Expand Down Expand Up @@ -322,6 +323,7 @@ if (enable_pdf) {
"//ppapi/cpp:objects",
"//ppapi/cpp/private:internal_module",
"//skia",
"//third_party/blink/public:blink_headers",
"//third_party/blink/public/common:headers",
"//ui/base",
"//ui/base/cursor/mojom:cursor_type",
Expand Down
24 changes: 8 additions & 16 deletions pdf/out_of_process_instance.cc
Original file line number Diff line number Diff line change
Expand Up @@ -736,9 +736,8 @@ int32_t OutOfProcessInstance::PdfPrintBegin(
if ((print_settings->format & supported_formats) == 0)
return 0;

print_settings_.is_printing = true;
print_settings_.pepper_print_settings = *print_settings;
print_settings_.pdf_print_settings = *pdf_print_settings;
print_params_ =
WebPrintParamsFromPPPrintSettings(*print_settings, *pdf_print_settings);
engine()->PrintBegin();
return ret;
}
Expand All @@ -761,19 +760,18 @@ int32_t OutOfProcessInstance::PrintBegin(
pp::Resource OutOfProcessInstance::PrintPages(
const PP_PrintPageNumberRange_Dev* page_ranges,
uint32_t page_range_count) {
if (!print_settings_.is_printing)
if (!print_params_.has_value())
return pp::Resource();

print_settings_.print_pages_called = true;
print_pages_called_ = true;
if (page_range_count == 0)
return pp::Resource();

const std::vector<int> page_numbers =
PageNumbersFromPPPrintPageNumberRange(page_ranges, page_range_count);

const std::vector<uint8_t> pdf_data =
engine()->PrintPages(page_numbers, print_settings_.pepper_print_settings,
print_settings_.pdf_print_settings);
engine()->PrintPages(page_numbers, print_params_.value());

// Convert buffer to Pepper type.
pp::Buffer_Dev buffer;
Expand All @@ -786,9 +784,10 @@ pp::Resource OutOfProcessInstance::PrintPages(
}

void OutOfProcessInstance::PrintEnd() {
if (print_settings_.print_pages_called)
if (print_pages_called_)
UserMetricsRecordAction("PDF.PrintPage");
print_settings_.Clear();
print_pages_called_ = false;
print_params_.reset();
engine()->PrintEnd();
}

Expand Down Expand Up @@ -1358,11 +1357,4 @@ void OutOfProcessInstance::OnPrint(int32_t /*unused_but_required*/) {
pp::PDF::Print(this);
}

void OutOfProcessInstance::PrintSettings::Clear() {
is_printing = false;
print_pages_called = false;
memset(&pepper_print_settings, 0, sizeof(pepper_print_settings));
memset(&pdf_print_settings, 0, sizeof(pdf_print_settings));
}

} // namespace chrome_pdf
25 changes: 5 additions & 20 deletions pdf/out_of_process_instance.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include "ppapi/cpp/image_data.h"
#include "ppapi/cpp/instance.h"
#include "ppapi/cpp/private/find_private.h"
#include "third_party/blink/public/web/web_print_params.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/gfx/geometry/rect.h"

Expand Down Expand Up @@ -192,27 +193,11 @@ class OutOfProcessInstance : public PdfViewPluginBase,
// The Pepper image data that is in sync with mutable_image_data().
pp::ImageData pepper_image_data_;

struct PrintSettings {
PrintSettings() { Clear(); }
// Assigned a value only between `PdfPrintBegin()` and `PrintEnd()` calls.
absl::optional<blink::WebPrintParams> print_params_;

void Clear();

// This is set to true when PdfPrintBegin() is called and false when
// PrintEnd() is called.
bool is_printing;

// To know whether this was an actual print operation, so we don't double
// count UMA logging.
bool print_pages_called;

// Generic print settings.
PP_PrintSettings_Dev pepper_print_settings;

// PDF-specific print settings.
PP_PdfPrintSettings_Dev pdf_print_settings;
};

PrintSettings print_settings_;
// For identifying actual print operations to avoid double logging of UMA.
bool print_pages_called_;

// The PreviewModeClient used for print preview. Will be passed to
// `preview_engine_`.
Expand Down
6 changes: 2 additions & 4 deletions pdf/pdf_engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
#include "build/chromeos_buildflags.h"
#include "pdf/document_layout.h"
#include "pdf/ppapi_migration/callback.h"
#include "ppapi/c/dev/ppp_printing_dev.h"
#include "ppapi/cpp/completion_callback.h"
#include "ppapi/cpp/private/pdf.h"
#include "ppapi/cpp/url_loader.h"
Expand All @@ -41,7 +40,6 @@ typedef void (*PDFEnsureTypefaceCharactersAccessible)(const LOGFONT* font,
size_t text_length);
#endif

struct PP_PdfPrintSettings_Dev;
class SkBitmap;

namespace base {
Expand All @@ -50,6 +48,7 @@ class Location;

namespace blink {
class WebInputEvent;
struct WebPrintParams;
} // namespace blink

namespace gfx {
Expand Down Expand Up @@ -322,8 +321,7 @@ class PDFEngine {
virtual void PrintBegin() = 0;
virtual std::vector<uint8_t> PrintPages(
const std::vector<int>& page_numbers,
const PP_PrintSettings_Dev& print_settings,
const PP_PdfPrintSettings_Dev& pdf_print_settings) = 0;
const blink::WebPrintParams& print_params) = 0;
virtual void PrintEnd() = 0;
virtual void StartFind(const std::string& text, bool case_sensitive) = 0;
virtual bool SelectFindResult(bool forward) = 0;
Expand Down
31 changes: 12 additions & 19 deletions pdf/pdfium/pdfium_engine.cc
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
#include "third_party/blink/public/common/input/web_pointer_properties.h"
#include "third_party/blink/public/common/input/web_touch_event.h"
#include "third_party/blink/public/common/input/web_touch_point.h"
#include "third_party/blink/public/web/web_print_params.h"
#include "third_party/pdfium/public/cpp/fpdf_scopers.h"
#include "third_party/pdfium/public/fpdf_annot.h"
#include "third_party/pdfium/public/fpdf_attachment.h"
Expand Down Expand Up @@ -967,25 +968,19 @@ void PDFiumEngine::PrintBegin() {

std::vector<uint8_t> PDFiumEngine::PrintPages(
const std::vector<int>& page_numbers,
const PP_PrintSettings_Dev& print_settings,
const PP_PdfPrintSettings_Dev& pdf_print_settings) {
const blink::WebPrintParams& print_params) {
DCHECK(!page_numbers.empty());

if ((print_settings.format & PP_PRINTOUTPUTFORMAT_PDF) &&
HasPermission(PERMISSION_PRINT_HIGH_QUALITY)) {
return PrintPagesAsPdf(page_numbers, print_settings, pdf_print_settings);
}
if (HasPermission(PERMISSION_PRINT_LOW_QUALITY)) {
return PrintPagesAsRasterPdf(page_numbers, print_settings,
pdf_print_settings);
}
return std::vector<uint8_t>();
return print_params.rasterize_pdf
? PrintPagesAsRasterPdf(page_numbers, print_params)
: PrintPagesAsPdf(page_numbers, print_params);
}

std::vector<uint8_t> PDFiumEngine::PrintPagesAsRasterPdf(
const std::vector<int>& page_numbers,
const PP_PrintSettings_Dev& print_settings,
const PP_PdfPrintSettings_Dev& pdf_print_settings) {
const blink::WebPrintParams& print_params) {
DCHECK(HasPermission(PERMISSION_PRINT_LOW_QUALITY));

// If document is not downloaded yet, disable printing.
if (doc() && !doc_loader_->IsDocumentComplete())
return std::vector<uint8_t>();
Expand All @@ -994,14 +989,13 @@ std::vector<uint8_t> PDFiumEngine::PrintPagesAsRasterPdf(

SetLastInstance();

return print_.PrintPagesAsPdf(page_numbers, print_settings,
pdf_print_settings, /*raster=*/true);
return print_.PrintPagesAsPdf(page_numbers, print_params);
}

std::vector<uint8_t> PDFiumEngine::PrintPagesAsPdf(
const std::vector<int>& page_numbers,
const PP_PrintSettings_Dev& print_settings,
const PP_PdfPrintSettings_Dev& pdf_print_settings) {
const blink::WebPrintParams& print_params) {
DCHECK(HasPermission(PERMISSION_PRINT_HIGH_QUALITY));
DCHECK(doc());

KillFormFocus();
Expand All @@ -1012,8 +1006,7 @@ std::vector<uint8_t> PDFiumEngine::PrintPagesAsPdf(
pages_[page_number]->Unload();
}

return print_.PrintPagesAsPdf(page_numbers, print_settings,
pdf_print_settings, /*raster=*/false);
return print_.PrintPagesAsPdf(page_numbers, print_params);
}

void PDFiumEngine::KillFormFocus() {
Expand Down
9 changes: 3 additions & 6 deletions pdf/pdfium/pdfium_engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,7 @@ class PDFiumEngine : public PDFEngine,
void PrintBegin() override;
std::vector<uint8_t> PrintPages(
const std::vector<int>& page_numbers,
const PP_PrintSettings_Dev& print_settings,
const PP_PdfPrintSettings_Dev& pdf_print_settings) override;
const blink::WebPrintParams& print_params) override;
void PrintEnd() override;
void StartFind(const std::string& text, bool case_sensitive) override;
bool SelectFindResult(bool forward) override;
Expand Down Expand Up @@ -414,13 +413,11 @@ class PDFiumEngine : public PDFEngine,

std::vector<uint8_t> PrintPagesAsRasterPdf(
const std::vector<int>& page_numbers,
const PP_PrintSettings_Dev& print_settings,
const PP_PdfPrintSettings_Dev& pdf_print_settings);
const blink::WebPrintParams& print_params);

std::vector<uint8_t> PrintPagesAsPdf(
const std::vector<int>& page_numbers,
const PP_PrintSettings_Dev& print_settings,
const PP_PdfPrintSettings_Dev& pdf_print_settings);
const blink::WebPrintParams& print_params);

// Checks if `page` has selected text in a form element. If so, sets that as
// the plugin's text selection.
Expand Down

0 comments on commit 2e6d957

Please sign in to comment.