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

Side by Side Diff: samples/pdfium_test.cc

Issue 1395733006: Allow compiling PDFium without V8. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: PDFium Authors 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 9
10 #include <list> 10 #include <list>
11 #include <sstream> 11 #include <sstream>
12 #include <string> 12 #include <string>
13 #include <utility> 13 #include <utility>
14 #include <vector> 14 #include <vector>
15 15
16 #include "../public/fpdf_dataavail.h" 16 #include "../public/fpdf_dataavail.h"
17 #include "../public/fpdf_ext.h" 17 #include "../public/fpdf_ext.h"
18 #include "../public/fpdf_formfill.h" 18 #include "../public/fpdf_formfill.h"
19 #include "../public/fpdf_text.h" 19 #include "../public/fpdf_text.h"
20 #include "../public/fpdfview.h" 20 #include "../public/fpdfview.h"
21 #include "image_diff_png.h" 21 #include "image_diff_png.h"
22 #ifdef PDF_ENABLE_V8
22 #include "v8/include/libplatform/libplatform.h" 23 #include "v8/include/libplatform/libplatform.h"
23 #include "v8/include/v8.h" 24 #include "v8/include/v8.h"
25 #endif
24 26
25 #ifdef _WIN32 27 #ifdef _WIN32
26 #define snprintf _snprintf 28 #define snprintf _snprintf
27 #define PATH_SEPARATOR '\\' 29 #define PATH_SEPARATOR '\\'
28 #else 30 #else
29 #define PATH_SEPARATOR '/' 31 #define PATH_SEPARATOR '/'
30 #endif 32 #endif
31 33
32 enum OutputFormat { 34 enum OutputFormat {
33 OUTPUT_NONE, 35 OUTPUT_NONE,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 (void)fclose(file); 74 (void)fclose(file);
73 if (bytes_read != file_length) { 75 if (bytes_read != file_length) {
74 fprintf(stderr, "Failed to read: %s\n", filename); 76 fprintf(stderr, "Failed to read: %s\n", filename);
75 free(buffer); 77 free(buffer);
76 return nullptr; 78 return nullptr;
77 } 79 }
78 *retlen = bytes_read; 80 *retlen = bytes_read;
79 return buffer; 81 return buffer;
80 } 82 }
81 83
84 #ifdef PDF_ENABLE_V8
82 #ifdef V8_USE_EXTERNAL_STARTUP_DATA 85 #ifdef V8_USE_EXTERNAL_STARTUP_DATA
83 // Returns the full path for an external V8 data file based on either 86 // Returns the full path for an external V8 data file based on either
84 // the currect exectuable path or an explicit override. 87 // the currect exectuable path or an explicit override.
85 static std::string GetFullPathForSnapshotFile(const Options& options, 88 static std::string GetFullPathForSnapshotFile(const Options& options,
86 const std::string& filename) { 89 const std::string& filename) {
87 std::string result; 90 std::string result;
88 if (!options.bin_directory.empty()) { 91 if (!options.bin_directory.empty()) {
89 result = options.bin_directory; 92 result = options.bin_directory;
90 if (*options.bin_directory.rbegin() != PATH_SEPARATOR) { 93 if (*options.bin_directory.rbegin() != PATH_SEPARATOR) {
91 result += PATH_SEPARATOR; 94 result += PATH_SEPARATOR;
(...skipping 17 matching lines...) Expand all
109 size_t data_length = 0; 112 size_t data_length = 0;
110 char* data_buffer = GetFileContents(full_path.c_str(), &data_length); 113 char* data_buffer = GetFileContents(full_path.c_str(), &data_length);
111 if (!data_buffer) { 114 if (!data_buffer) {
112 return false; 115 return false;
113 } 116 }
114 result_data->data = const_cast<const char*>(data_buffer); 117 result_data->data = const_cast<const char*>(data_buffer);
115 result_data->raw_size = static_cast<int>(data_length); 118 result_data->raw_size = static_cast<int>(data_length);
116 return true; 119 return true;
117 } 120 }
118 #endif // V8_USE_EXTERNAL_STARTUP_DATA 121 #endif // V8_USE_EXTERNAL_STARTUP_DATA
122 #endif // PDF_ENABLE_V8
119 123
120 static bool CheckDimensions(int stride, int width, int height) { 124 static bool CheckDimensions(int stride, int width, int height) {
121 if (stride < 0 || width < 0 || height < 0) 125 if (stride < 0 || width < 0 || height < 0)
122 return false; 126 return false;
123 if (height > 0 && width > INT_MAX / height) 127 if (height > 0 && width > INT_MAX / height)
124 return false; 128 return false;
125 return true; 129 return true;
126 } 130 }
127 131
128 static void WritePpm(const char* pdf_name, int num, const void* buffer_void, 132 static void WritePpm(const char* pdf_name, int num, const void* buffer_void,
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 options->output_format = OUTPUT_EMF; 370 options->output_format = OUTPUT_EMF;
367 } 371 }
368 else if (cur_arg == "--bmp") { 372 else if (cur_arg == "--bmp") {
369 if (options->output_format != OUTPUT_NONE) { 373 if (options->output_format != OUTPUT_NONE) {
370 fprintf(stderr, "Duplicate or conflicting --bmp argument\n"); 374 fprintf(stderr, "Duplicate or conflicting --bmp argument\n");
371 return false; 375 return false;
372 } 376 }
373 options->output_format = OUTPUT_BMP; 377 options->output_format = OUTPUT_BMP;
374 } 378 }
375 #endif // _WIN32 379 #endif // _WIN32
380 #ifdef PDF_ENABLE_V8
376 #ifdef V8_USE_EXTERNAL_STARTUP_DATA 381 #ifdef V8_USE_EXTERNAL_STARTUP_DATA
377 else if (cur_arg.size() > 10 && cur_arg.compare(0, 10, "--bin-dir=") == 0) { 382 else if (cur_arg.size() > 10 && cur_arg.compare(0, 10, "--bin-dir=") == 0) {
378 if (!options->bin_directory.empty()) { 383 if (!options->bin_directory.empty()) {
379 fprintf(stderr, "Duplicate --bin-dir argument\n"); 384 fprintf(stderr, "Duplicate --bin-dir argument\n");
380 return false; 385 return false;
381 } 386 }
382 options->bin_directory = cur_arg.substr(10); 387 options->bin_directory = cur_arg.substr(10);
383 } 388 }
384 #endif // V8_USE_EXTERNAL_STARTUP_DATA 389 #endif // V8_USE_EXTERNAL_STARTUP_DATA
390 #endif // PDF_ENABLE_V8
385 else if (cur_arg.size() > 8 && cur_arg.compare(0, 8, "--scale=") == 0) { 391 else if (cur_arg.size() > 8 && cur_arg.compare(0, 8, "--scale=") == 0) {
386 if (!options->scale_factor_as_string.empty()) { 392 if (!options->scale_factor_as_string.empty()) {
387 fprintf(stderr, "Duplicate --scale argument\n"); 393 fprintf(stderr, "Duplicate --scale argument\n");
388 return false; 394 return false;
389 } 395 }
390 options->scale_factor_as_string = cur_arg.substr(8); 396 options->scale_factor_as_string = cur_arg.substr(8);
391 } 397 }
392 else 398 else
393 break; 399 break;
394 } 400 }
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 594
589 int main(int argc, const char* argv[]) { 595 int main(int argc, const char* argv[]) {
590 std::vector<std::string> args(argv, argv + argc); 596 std::vector<std::string> args(argv, argv + argc);
591 Options options; 597 Options options;
592 std::list<std::string> files; 598 std::list<std::string> files;
593 if (!ParseCommandLine(args, &options, &files)) { 599 if (!ParseCommandLine(args, &options, &files)) {
594 fprintf(stderr, "%s", usage_string); 600 fprintf(stderr, "%s", usage_string);
595 return 1; 601 return 1;
596 } 602 }
597 603
604 #ifdef PDF_ENABLE_V8
598 v8::V8::InitializeICU(); 605 v8::V8::InitializeICU();
599 v8::Platform* platform = v8::platform::CreateDefaultPlatform(); 606 v8::Platform* platform = v8::platform::CreateDefaultPlatform();
600 v8::V8::InitializePlatform(platform); 607 v8::V8::InitializePlatform(platform);
601 v8::V8::Initialize(); 608 v8::V8::Initialize();
602 609
603 // By enabling predictable mode, V8 won't post any background tasks. 610 // By enabling predictable mode, V8 won't post any background tasks.
604 static const char predictable_flag[] = "--predictable"; 611 static const char predictable_flag[] = "--predictable";
605 v8::V8::SetFlagsFromString(predictable_flag, 612 v8::V8::SetFlagsFromString(predictable_flag,
606 static_cast<int>(strlen(predictable_flag))); 613 static_cast<int>(strlen(predictable_flag)));
607 614
608 #ifdef V8_USE_EXTERNAL_STARTUP_DATA 615 #ifdef V8_USE_EXTERNAL_STARTUP_DATA
609 v8::StartupData natives; 616 v8::StartupData natives;
610 v8::StartupData snapshot; 617 v8::StartupData snapshot;
611 if (!GetExternalData(options, "natives_blob.bin", &natives) || 618 if (!GetExternalData(options, "natives_blob.bin", &natives) ||
612 !GetExternalData(options, "snapshot_blob.bin", &snapshot)) { 619 !GetExternalData(options, "snapshot_blob.bin", &snapshot)) {
613 return 1; 620 return 1;
614 } 621 }
615 v8::V8::SetNativesDataBlob(&natives); 622 v8::V8::SetNativesDataBlob(&natives);
616 v8::V8::SetSnapshotDataBlob(&snapshot); 623 v8::V8::SetSnapshotDataBlob(&snapshot);
617 #endif // V8_USE_EXTERNAL_STARTUP_DATA 624 #endif // V8_USE_EXTERNAL_STARTUP_DATA
625 #endif // PDF_ENABLE_V8
618 626
619 FPDF_LIBRARY_CONFIG config; 627 FPDF_LIBRARY_CONFIG config;
620 config.version = 2; 628 config.version = 2;
621 config.m_pUserFontPaths = nullptr; 629 config.m_pUserFontPaths = nullptr;
622 config.m_pIsolate = nullptr; 630 config.m_pIsolate = nullptr;
623 config.m_v8EmbedderSlot = 0; 631 config.m_v8EmbedderSlot = 0;
624 632
625 const char* path_array[2]; 633 const char* path_array[2];
626 if (!options.font_directory.empty()) { 634 if (!options.font_directory.empty()) {
627 path_array[0] = options.font_directory.c_str(); 635 path_array[0] = options.font_directory.c_str();
(...skipping 14 matching lines...) Expand all
642 files.pop_front(); 650 files.pop_front();
643 size_t file_length = 0; 651 size_t file_length = 0;
644 char* file_contents = GetFileContents(filename.c_str(), &file_length); 652 char* file_contents = GetFileContents(filename.c_str(), &file_length);
645 if (!file_contents) 653 if (!file_contents)
646 continue; 654 continue;
647 RenderPdf(filename, file_contents, file_length, options); 655 RenderPdf(filename, file_contents, file_length, options);
648 free(file_contents); 656 free(file_contents);
649 } 657 }
650 658
651 FPDF_DestroyLibrary(); 659 FPDF_DestroyLibrary();
660 #ifdef PDF_ENABLE_V8
652 v8::V8::ShutdownPlatform(); 661 v8::V8::ShutdownPlatform();
653 delete platform; 662 delete platform;
663 #endif // PDF_ENABLE_V8
654 664
655 return 0; 665 return 0;
656 } 666 }
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