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

Side by Side Diff: samples/pdfium_test.cc

Issue 1393833006: Merge to XFA: Allow compiling PDFium without V8. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Rebase, fix build, stray include. Created 5 years, 2 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 unified diff | Download patch
« no previous file with comments | « samples/BUILD.gn ('k') | samples/samples.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <limits.h> 5 #include <limits.h>
6 #include <stdio.h> 6 #include <stdio.h>
7 #include <stdlib.h> 7 #include <stdlib.h>
8 #include <string.h> 8 #include <string.h>
9 #include <wchar.h> 9 #include <wchar.h>
10 10
11 #include <list> 11 #include <list>
12 #include <sstream> 12 #include <sstream>
13 #include <string> 13 #include <string>
14 #include <utility> 14 #include <utility>
15 #include <vector> 15 #include <vector>
16 16
17 #include "../public/fpdf_dataavail.h" 17 #include "../public/fpdf_dataavail.h"
18 #include "../public/fpdf_ext.h" 18 #include "../public/fpdf_ext.h"
19 #include "../public/fpdf_formfill.h" 19 #include "../public/fpdf_formfill.h"
20 #include "../public/fpdf_text.h" 20 #include "../public/fpdf_text.h"
21 #include "../public/fpdfview.h" 21 #include "../public/fpdfview.h"
22 #include "image_diff_png.h" 22 #include "image_diff_png.h"
23 #ifdef PDF_ENABLE_V8
23 #include "v8/include/libplatform/libplatform.h" 24 #include "v8/include/libplatform/libplatform.h"
24 #include "v8/include/v8.h" 25 #include "v8/include/v8.h"
25 26 #endif
26 27
27 #ifdef _WIN32 28 #ifdef _WIN32
28 #define snprintf _snprintf 29 #define snprintf _snprintf
29 #define PATH_SEPARATOR '\\' 30 #define PATH_SEPARATOR '\\'
30 #else 31 #else
31 #define PATH_SEPARATOR '/' 32 #define PATH_SEPARATOR '/'
32 #endif 33 #endif
33 34
34 enum OutputFormat { 35 enum OutputFormat {
35 OUTPUT_NONE, 36 OUTPUT_NONE,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 (void)fclose(file); 75 (void)fclose(file);
75 if (bytes_read != file_length) { 76 if (bytes_read != file_length) {
76 fprintf(stderr, "Failed to read: %s\n", filename); 77 fprintf(stderr, "Failed to read: %s\n", filename);
77 free(buffer); 78 free(buffer);
78 return nullptr; 79 return nullptr;
79 } 80 }
80 *retlen = bytes_read; 81 *retlen = bytes_read;
81 return buffer; 82 return buffer;
82 } 83 }
83 84
85 #ifdef PDF_ENABLE_V8
84 #ifdef V8_USE_EXTERNAL_STARTUP_DATA 86 #ifdef V8_USE_EXTERNAL_STARTUP_DATA
85 // Returns the full path for an external V8 data file based on either 87 // Returns the full path for an external V8 data file based on either
86 // the currect exectuable path or an explicit override. 88 // the currect exectuable path or an explicit override.
87 static std::string GetFullPathForSnapshotFile(const Options& options, 89 static std::string GetFullPathForSnapshotFile(const Options& options,
88 const std::string& filename) { 90 const std::string& filename) {
89 std::string result; 91 std::string result;
90 if (!options.bin_directory.empty()) { 92 if (!options.bin_directory.empty()) {
91 result = options.bin_directory; 93 result = options.bin_directory;
92 if (*options.bin_directory.rbegin() != PATH_SEPARATOR) { 94 if (*options.bin_directory.rbegin() != PATH_SEPARATOR) {
93 result += PATH_SEPARATOR; 95 result += PATH_SEPARATOR;
(...skipping 17 matching lines...) Expand all
111 size_t data_length = 0; 113 size_t data_length = 0;
112 char* data_buffer = GetFileContents(full_path.c_str(), &data_length); 114 char* data_buffer = GetFileContents(full_path.c_str(), &data_length);
113 if (!data_buffer) { 115 if (!data_buffer) {
114 return false; 116 return false;
115 } 117 }
116 result_data->data = const_cast<const char*>(data_buffer); 118 result_data->data = const_cast<const char*>(data_buffer);
117 result_data->raw_size = data_length; 119 result_data->raw_size = data_length;
118 return true; 120 return true;
119 } 121 }
120 #endif // V8_USE_EXTERNAL_STARTUP_DATA 122 #endif // V8_USE_EXTERNAL_STARTUP_DATA
123 #endif // PDF_ENABLE_V8
121 124
122 static bool CheckDimensions(int stride, int width, int height) { 125 static bool CheckDimensions(int stride, int width, int height) {
123 if (stride < 0 || width < 0 || height < 0) 126 if (stride < 0 || width < 0 || height < 0)
124 return false; 127 return false;
125 if (height > 0 && width > INT_MAX / height) 128 if (height > 0 && width > INT_MAX / height)
126 return false; 129 return false;
127 return true; 130 return true;
128 } 131 }
129 132
130 static void WritePpm(const char* pdf_name, int num, const void* buffer_void, 133 static void WritePpm(const char* pdf_name, int num, const void* buffer_void,
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 options->output_format = OUTPUT_EMF; 369 options->output_format = OUTPUT_EMF;
367 } 370 }
368 else if (cur_arg == "--bmp") { 371 else if (cur_arg == "--bmp") {
369 if (options->output_format != OUTPUT_NONE) { 372 if (options->output_format != OUTPUT_NONE) {
370 fprintf(stderr, "Duplicate or conflicting --bmp argument\n"); 373 fprintf(stderr, "Duplicate or conflicting --bmp argument\n");
371 return false; 374 return false;
372 } 375 }
373 options->output_format = OUTPUT_BMP; 376 options->output_format = OUTPUT_BMP;
374 } 377 }
375 #endif // _WIN32 378 #endif // _WIN32
379 #ifdef PDF_ENABLE_V8
376 #ifdef V8_USE_EXTERNAL_STARTUP_DATA 380 #ifdef V8_USE_EXTERNAL_STARTUP_DATA
377 else if (cur_arg.size() > 10 && cur_arg.compare(0, 10, "--bin-dir=") == 0) { 381 else if (cur_arg.size() > 10 && cur_arg.compare(0, 10, "--bin-dir=") == 0) {
378 if (!options->bin_directory.empty()) { 382 if (!options->bin_directory.empty()) {
379 fprintf(stderr, "Duplicate --bin-dir argument\n"); 383 fprintf(stderr, "Duplicate --bin-dir argument\n");
380 return false; 384 return false;
381 } 385 }
382 options->bin_directory = cur_arg.substr(10); 386 options->bin_directory = cur_arg.substr(10);
383 } 387 }
384 #endif // V8_USE_EXTERNAL_STARTUP_DATA 388 #endif // V8_USE_EXTERNAL_STARTUP_DATA
389 #endif // PDF_ENABLE_V8
385 else if (cur_arg.size() > 8 && cur_arg.compare(0, 8, "--scale=") == 0) { 390 else if (cur_arg.size() > 8 && cur_arg.compare(0, 8, "--scale=") == 0) {
386 if (!options->scale_factor_as_string.empty()) { 391 if (!options->scale_factor_as_string.empty()) {
387 fprintf(stderr, "Duplicate --scale argument\n"); 392 fprintf(stderr, "Duplicate --scale argument\n");
388 return false; 393 return false;
389 } 394 }
390 options->scale_factor_as_string = cur_arg.substr(8); 395 options->scale_factor_as_string = cur_arg.substr(8);
391 } 396 }
392 else 397 else
393 break; 398 break;
394 } 399 }
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 603
599 int main(int argc, const char* argv[]) { 604 int main(int argc, const char* argv[]) {
600 std::vector<std::string> args(argv, argv + argc); 605 std::vector<std::string> args(argv, argv + argc);
601 Options options; 606 Options options;
602 std::list<std::string> files; 607 std::list<std::string> files;
603 if (!ParseCommandLine(args, &options, &files)) { 608 if (!ParseCommandLine(args, &options, &files)) {
604 fprintf(stderr, "%s", usage_string); 609 fprintf(stderr, "%s", usage_string);
605 return 1; 610 return 1;
606 } 611 }
607 612
613 #ifdef PDF_ENABLE_V8
608 v8::V8::InitializeICU(); 614 v8::V8::InitializeICU();
609 v8::Platform* platform = v8::platform::CreateDefaultPlatform(); 615 v8::Platform* platform = v8::platform::CreateDefaultPlatform();
610 v8::V8::InitializePlatform(platform); 616 v8::V8::InitializePlatform(platform);
611 v8::V8::Initialize(); 617 v8::V8::Initialize();
612 618
613 #ifdef V8_USE_EXTERNAL_STARTUP_DATA 619 #ifdef V8_USE_EXTERNAL_STARTUP_DATA
614 v8::StartupData natives; 620 v8::StartupData natives;
615 v8::StartupData snapshot; 621 v8::StartupData snapshot;
616 if (!GetExternalData(options, "natives_blob.bin", &natives) || 622 if (!GetExternalData(options, "natives_blob.bin", &natives) ||
617 !GetExternalData(options, "snapshot_blob.bin", &snapshot)) { 623 !GetExternalData(options, "snapshot_blob.bin", &snapshot)) {
618 return 1; 624 return 1;
619 } 625 }
620 v8::V8::SetNativesDataBlob(&natives); 626 v8::V8::SetNativesDataBlob(&natives);
621 v8::V8::SetSnapshotDataBlob(&snapshot); 627 v8::V8::SetSnapshotDataBlob(&snapshot);
622 #endif // V8_USE_EXTERNAL_STARTUP_DATA 628 #endif // V8_USE_EXTERNAL_STARTUP_DATA
629 #endif // PDF_ENABLE_V8
623 630
624 FPDF_LIBRARY_CONFIG config; 631 FPDF_LIBRARY_CONFIG config;
625 config.version = 2; 632 config.version = 2;
626 config.m_pUserFontPaths = nullptr; 633 config.m_pUserFontPaths = nullptr;
627 config.m_pIsolate = nullptr; 634 config.m_pIsolate = nullptr;
628 config.m_v8EmbedderSlot = 0; 635 config.m_v8EmbedderSlot = 0;
629 636
630 const char* path_array[2]; 637 const char* path_array[2];
631 if (!options.font_directory.empty()) { 638 if (!options.font_directory.empty()) {
632 path_array[0] = options.font_directory.c_str(); 639 path_array[0] = options.font_directory.c_str();
(...skipping 14 matching lines...) Expand all
647 files.pop_front(); 654 files.pop_front();
648 size_t file_length = 0; 655 size_t file_length = 0;
649 char* file_contents = GetFileContents(filename.c_str(), &file_length); 656 char* file_contents = GetFileContents(filename.c_str(), &file_length);
650 if (!file_contents) 657 if (!file_contents)
651 continue; 658 continue;
652 RenderPdf(filename, file_contents, file_length, options); 659 RenderPdf(filename, file_contents, file_length, options);
653 free(file_contents); 660 free(file_contents);
654 } 661 }
655 662
656 FPDF_DestroyLibrary(); 663 FPDF_DestroyLibrary();
664 #ifdef PDF_ENABLE_V8
657 v8::V8::ShutdownPlatform(); 665 v8::V8::ShutdownPlatform();
658 delete platform; 666 delete platform;
667 #endif // PDF_ENABLE_V8
659 668
660 return 0; 669 return 0;
661 } 670 }
OLDNEW
« no previous file with comments | « samples/BUILD.gn ('k') | samples/samples.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698