Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2038)

Unified Diff: chrome/browser/printing/print_preview_pdf_generated_browsertest.cc

Issue 899033002: Revert of Combine PDF plugin into the Chromium binary. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/printing/print_preview_pdf_generated_browsertest.cc
diff --git a/chrome/browser/printing/print_preview_pdf_generated_browsertest.cc b/chrome/browser/printing/print_preview_pdf_generated_browsertest.cc
index f6a93216df9a52a008c9271ab1b0f3fe5d658528..367a92d3f4b9b4f5a6907daa5e2fe8ce95c141a1 100644
--- a/chrome/browser/printing/print_preview_pdf_generated_browsertest.cc
+++ b/chrome/browser/printing/print_preview_pdf_generated_browsertest.cc
@@ -22,6 +22,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/path_service.h"
#include "base/run_loop.h"
+#include "base/scoped_native_library.h"
#include "base/strings/string_split.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/printing/print_preview_dialog_controller.h"
@@ -38,7 +39,6 @@
#include "content/public/test/browser_test_utils.h"
#include "ipc/ipc_message_macros.h"
#include "net/base/filename_util.h"
-#include "pdf/pdf.h"
#include "printing/pdf_render_settings.h"
#include "printing/units.h"
#include "ui/gfx/codec/png_codec.h"
@@ -323,6 +323,33 @@
ASSERT_TRUE(pdf_file.IsValid());
}
+ // Initializes function pointers from the PDF library. Called once when the
+ // test starts. The library is closed when the browser test ends.
+ void InitPdfFunctions() {
+ base::FilePath pdf_module_path;
+
+ ASSERT_TRUE(PathService::Get(chrome::FILE_PDF_PLUGIN, &pdf_module_path));
+ ASSERT_TRUE(base::PathExists(pdf_module_path));
+ pdf_lib_.Reset(base::LoadNativeLibrary(pdf_module_path, NULL));
+
+ ASSERT_TRUE(pdf_lib_.is_valid());
+ pdf_to_bitmap_func_ =
+ reinterpret_cast<PDFPageToBitmapProc>(
+ pdf_lib_.GetFunctionPointer("RenderPDFPageToBitmap"));
+
+ pdf_doc_info_func_ =
+ reinterpret_cast<GetPDFDocInfoProc>(
+ pdf_lib_.GetFunctionPointer("GetPDFDocInfo"));
+
+ pdf_page_size_func_ =
+ reinterpret_cast<GetPDFPageSizeByIndexProc>(
+ pdf_lib_.GetFunctionPointer("GetPDFPageSizeByIndex"));
+
+ ASSERT_TRUE(pdf_to_bitmap_func_);
+ ASSERT_TRUE(pdf_doc_info_func_);
+ ASSERT_TRUE(pdf_page_size_func_);
+ }
+
// Converts the PDF to a PNG file so that the layout test can do an image
// diff on this image and a reference image.
void PdfToPng() {
@@ -333,10 +360,10 @@
std::string pdf_data;
ASSERT_TRUE(base::ReadFileToString(pdf_file_save_path_, &pdf_data));
- ASSERT_TRUE(chrome_pdf::GetPDFDocInfo(pdf_data.data(),
- pdf_data.size(),
- &num_pages,
- &max_width_in_points));
+ ASSERT_TRUE(pdf_doc_info_func_(pdf_data.data(),
+ pdf_data.size(),
+ &num_pages,
+ &max_width_in_points));
ASSERT_GT(num_pages, 0);
double max_width_in_pixels =
@@ -344,11 +371,11 @@
for (int i = 0; i < num_pages; ++i) {
double width_in_points, height_in_points;
- ASSERT_TRUE(chrome_pdf::GetPDFPageSizeByIndex(pdf_data.data(),
- pdf_data.size(),
- i,
- &width_in_points,
- &height_in_points));
+ ASSERT_TRUE(pdf_page_size_func_(pdf_data.data(),
+ pdf_data.size(),
+ i,
+ &width_in_points,
+ &height_in_points));
double width_in_pixels = ConvertUnitDouble(
width_in_points, kPointsPerInch, kDpi);
@@ -378,15 +405,15 @@
std::vector<uint8_t> page_bitmap_data(
kColorChannels * settings.area().size().GetArea());
- ASSERT_TRUE(chrome_pdf::RenderPDFPageToBitmap(
- pdf_data.data(),
- pdf_data.size(),
- i,
- page_bitmap_data.data(),
- settings.area().size().width(),
- settings.area().size().height(),
- settings.dpi(),
- true));
+ ASSERT_TRUE(pdf_to_bitmap_func_(pdf_data.data(),
+ pdf_data.size(),
+ i,
+ page_bitmap_data.data(),
+ settings.area().size().width(),
+ settings.area().size().height(),
+ settings.dpi(),
+ settings.dpi(),
+ true));
FillPng(&page_bitmap_data,
width_in_pixels,
max_width_in_pixels,
@@ -545,6 +572,41 @@
scoped_ptr<PrintPreviewObserver> print_preview_observer_;
base::FilePath pdf_file_save_path_;
+ // These typedefs are function pointers to pdflib functions that give
+ // information about the PDF as a whole and about specific pages.
+
+ // Converts the PDF to a bitmap.
+ typedef bool (*PDFPageToBitmapProc)(const void* pdf_buffer,
+ int pdf_buffer_size,
+ int page_number,
+ void* bitmap_buffer,
+ int bitmap_width,
+ int bitmap_height,
+ int dpi_x,
+ int dpi_y,
+ bool autorotate);
+
+ // Gets the page count and maximum page width of the PDF in points.
+ typedef bool (*GetPDFDocInfoProc)(const void* pdf_buffer,
+ int buffer_size,
+ int* pages_count,
+ double* max_page_width);
+
+ // Gets the dimensions of a specific page within a PDF.
+ typedef bool (*GetPDFPageSizeByIndexProc)(const void* pdf_buffer,
+ int buffer_size,
+ int index,
+ double* width,
+ double* height);
+
+ // Instantiations of the function pointers described above.
+ PDFPageToBitmapProc pdf_to_bitmap_func_;
+ GetPDFDocInfoProc pdf_doc_info_func_;
+ GetPDFPageSizeByIndexProc pdf_page_size_func_;
+
+ // Used to open up the pdf plugin, which contains the functions above.
+ base::ScopedNativeLibrary pdf_lib_;
+
// Vector for storing the PNG to be sent to the layout test framework.
// TODO(ivandavid): Eventually change this to uint32_t and make everything
// work with that. It might be a bit tricky to fix everything to work with
@@ -579,7 +641,8 @@
// to send data to the browser test. Writing "EOF\n" to |std::cout| indicates
// that whatever block of data that the test was expecting has been completely
// sent. Sometimes EOF is printed to stderr because the test will expect it
- // from stderr in addition to stdout for certain blocks of data.=
+ // from stderr in addition to stdout for certain blocks of data.
+ InitPdfFunctions();
SetupStdinAndSavePath();
while (true) {
« no previous file with comments | « chrome/browser/printing/print_preview_dialog_controller.cc ('k') | chrome/browser/resources/pdf/pdf_extension_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698