diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-02-06 15:58:40 -0800 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-02-06 15:58:40 -0800 |
commit | 72feb27fc174c2139b642eb7390fffac608f6c87 (patch) | |
tree | 1423f0204b98980faa56a95d095f9f3536158e6c /samples | |
parent | 6d407bc8ce708f28a20001dbded1f67ee2c169dd (diff) | |
download | pdfium-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.cc | 52 |
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; } |