summaryrefslogtreecommitdiff
path: root/samples
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2015-02-06 15:58:40 -0800
committerTom Sepez <tsepez@chromium.org>2015-02-06 15:58:40 -0800
commit72feb27fc174c2139b642eb7390fffac608f6c87 (patch)
tree1423f0204b98980faa56a95d095f9f3536158e6c /samples
parent6d407bc8ce708f28a20001dbded1f67ee2c169dd (diff)
downloadpdfium-72feb27fc174c2139b642eb7390fffac608f6c87.tar.xz
First JavaScript testing implementation.
This is a plan for testing JS inside of pdf files under pdfium: Communication of results will be done via app.alert(), rather than console.println(), since the latter is not hooked up to any API callbacks. pdfium_test.cc is modified to be more careful about use of stdout/stderr, so that only the app.alert() and the unsupported feature callback use stdout. Diffing stdout against ..._expected.txt files gives the result. I added a /javascript directory to separate these from the embeddertest resources. The alert callback is backported from XFA. This was an omission. BUG=https://code.google.com/p/pdfium/issues/detail?id=62 R=jam@chromium.org, thestig@chromium.org Review URL: https://codereview.chromium.org/872103003
Diffstat (limited to 'samples')
-rw-r--r--samples/pdfium_test.cc52
1 files changed, 34 insertions, 18 deletions
diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
index 7ba85ef308..20658fbf4d 100644
--- a/samples/pdfium_test.cc
+++ b/samples/pdfium_test.cc
@@ -199,9 +199,9 @@ void WriteEmf(FPDF_PAGE page, const char* pdf_name, int num) {
snprintf(filename, sizeof(filename), "%s.%d.emf", pdf_name, num);
HDC dc = CreateEnhMetaFileA(NULL, filename, NULL, NULL);
-
- HRGN rgn = CreateRectRgn(0, 0, width, height);
- SelectClipRgn(dc, rgn);
+
+ HRGN rgn = CreateRectRgn(0, 0, width, height);
+ SelectClipRgn(dc, rgn);
DeleteObject(rgn);
SelectObject(dc, GetStockObject(NULL_PEN));
@@ -216,8 +216,21 @@ void WriteEmf(FPDF_PAGE page, const char* pdf_name, int num) {
}
#endif
-int Form_Alert(IPDF_JSPLATFORM*, FPDF_WIDESTRING, FPDF_WIDESTRING, int, int) {
- printf("Form_Alert called.\n");
+int Form_Alert(IPDF_JSPLATFORM*, FPDF_WIDESTRING msg, FPDF_WIDESTRING,
+ int, int) {
+ // Deal with differences between UTF16LE and wchar_t on this platform.
+ size_t characters = 0;
+ while (msg[characters]) {
+ ++characters;
+ }
+ wchar_t* platform_string =
+ (wchar_t*)malloc((characters + 1) * sizeof(wchar_t));
+ for (size_t i = 0; i < characters + 1; ++i) {
+ unsigned char* ptr = (unsigned char*)&msg[i];
+ platform_string[i] = ptr[0] + 256 * ptr[1];
+ }
+ printf("Alert: %ls\n", platform_string);
+ free(platform_string);
return 0;
}
@@ -355,7 +368,7 @@ void Add_Segment(FX_DOWNLOADHINTS* pThis, size_t offset, size_t size) {
void RenderPdf(const std::string& name, const char* pBuf, size_t len,
const Options& options) {
- printf("Rendering PDF file %s.\n", name.c_str());
+ fprintf(stderr, "Rendering PDF file %s.\n", name.c_str());
IPDF_JSPLATFORM platform_callbacks;
memset(&platform_callbacks, '\0', sizeof(platform_callbacks));
@@ -391,10 +404,10 @@ void RenderPdf(const std::string& name, const char* pBuf, size_t len,
(void) FPDFAvail_IsDocAvail(pdf_avail, &hints);
if (!FPDFAvail_IsLinearized(pdf_avail)) {
- printf("Non-linearized path...\n");
+ fprintf(stderr, "Non-linearized path...\n");
doc = FPDF_LoadCustomDocument(&file_access, NULL);
} else {
- printf("Linearized path...\n");
+ fprintf(stderr, "Linearized path...\n");
doc = FPDFAvail_GetDocument(pdf_avail, NULL);
}
@@ -477,23 +490,26 @@ void RenderPdf(const std::string& name, const char* pBuf, size_t len,
FPDF_CloseDocument(doc);
FPDFAvail_Destroy(pdf_avail);
- printf("Loaded, parsed and rendered %" PRIuS " pages.\n", rendered_pages);
- printf("Skipped %" PRIuS " bad pages.\n", bad_pages);
+ fprintf(stderr, "Rendered %" PRIuS " pages.\n", rendered_pages);
+ fprintf(stderr, "Skipped %" PRIuS " bad pages.\n", bad_pages);
}
+static const char usage_string[] =
+ "Usage: pdfium_test [OPTION] [FILE]...\n"
+ " --bin-dir=<path> - override path to v8 external data\n"
+ " --scale=<number> - scale output size by number (e.g. 0.5)\n"
+#ifdef _WIN32
+ " --bmp - write page images <pdf-name>.<page-number>.bmp\n"
+ " --emf - write page meta files <pdf-name>.<page-number>.emf\n"
+#endif
+ " --ppm - write page images <pdf-name>.<page-number>.ppm\n";
+
int main(int argc, const char* argv[]) {
std::vector<std::string> args(argv, argv + argc);
Options options;
std::list<std::string> files;
if (!ParseCommandLine(args, &options, &files)) {
- printf("Usage: pdfium_test [OPTION] [FILE]...\n");
- printf("--bin-dir=<path> - override path to v8 external data\n");
- printf("--scale=<number> - scale output size by number (e.g. 0.5)\n");
- printf("--ppm - write page images <pdf-name>.<page-number>.ppm\n");
-#ifdef _WIN32
- printf("--bmp - write page images <pdf-name>.<page-number>.bmp\n");
- printf("--emf - write page meta files <pdf-name>.<page-number>.emf\n");
-#endif
+ fprintf(stderr, "%s", usage_string);
return 1;
}