summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2015-02-13 12:08:44 -0800
committerTom Sepez <tsepez@chromium.org>2015-02-13 12:08:44 -0800
commit58985096a7852263df68e87d9bfc335a3e2759bf (patch)
treeec32924d809dcb02f0c233b4fe21b5b2e2c469b3
parent254360730190cc6d6e3de325ee101948b78c1e32 (diff)
downloadpdfium-58985096a7852263df68e87d9bfc335a3e2759bf.tar.xz
Along the way, I rename some functions in pdfium_test.cc to match the style guide's FunctionName() syntax, adding "Example" to make them obviously different from the PDF internal code with similar name fragments. The purpose is to at least have some coverage for the setter/getter macros from JS_Define.h R=thestig@chromium.org Review URL: https://codereview.chromium.org/928573002
-rw-r--r--samples/pdfium_test.cc15
-rw-r--r--testing/resources/javascript/document_props.in143
-rw-r--r--testing/resources/javascript/document_props_expected.txt97
3 files changed, 250 insertions, 5 deletions
diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
index 20658fbf4d..8f9c832fb2 100644
--- a/samples/pdfium_test.cc
+++ b/samples/pdfium_test.cc
@@ -216,8 +216,8 @@ void WriteEmf(FPDF_PAGE page, const char* pdf_name, int num) {
}
#endif
-int Form_Alert(IPDF_JSPLATFORM*, FPDF_WIDESTRING msg, FPDF_WIDESTRING,
- int, int) {
+int ExampleAppAlert(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]) {
@@ -234,7 +234,11 @@ int Form_Alert(IPDF_JSPLATFORM*, FPDF_WIDESTRING msg, FPDF_WIDESTRING,
return 0;
}
-void Unsupported_Handler(UNSUPPORT_INFO*, int type) {
+void ExampleDocGotoPage(IPDF_JSPLATFORM*, int pageNumber) {
+ printf("Goto Page: %d\n", pageNumber);
+}
+
+void ExampleUnsupportedHandler(UNSUPPORT_INFO*, int type) {
std::string feature = "Unknown";
switch (type) {
case FPDF_UNSP_DOC_XFAFORM:
@@ -373,7 +377,8 @@ void RenderPdf(const std::string& name, const char* pBuf, size_t len,
IPDF_JSPLATFORM platform_callbacks;
memset(&platform_callbacks, '\0', sizeof(platform_callbacks));
platform_callbacks.version = 1;
- platform_callbacks.app_alert = Form_Alert;
+ platform_callbacks.app_alert = ExampleAppAlert;
+ platform_callbacks.Doc_gotoPage = ExampleDocGotoPage;
FPDF_FORMFILLINFO form_callbacks;
memset(&form_callbacks, '\0', sizeof(form_callbacks));
@@ -534,7 +539,7 @@ int main(int argc, const char* argv[]) {
UNSUPPORT_INFO unsuppored_info;
memset(&unsuppored_info, '\0', sizeof(unsuppored_info));
unsuppored_info.version = 1;
- unsuppored_info.FSDK_UnSupport_Handler = Unsupported_Handler;
+ unsuppored_info.FSDK_UnSupport_Handler = ExampleUnsupportedHandler;
FSDK_SetUnSpObjProcessHandler(&unsuppored_info);
diff --git a/testing/resources/javascript/document_props.in b/testing/resources/javascript/document_props.in
new file mode 100644
index 0000000000..8ab7e3d566
--- /dev/null
+++ b/testing/resources/javascript/document_props.in
@@ -0,0 +1,143 @@
+{{header}}
+{{object 1 0}} <<
+ /Type /Catalog
+ /Pages 2 0 R
+ /OpenAction 10 0 R
+>>
+endobj
+{{object 2 0}} <<
+ /Type /Pages
+ /Count 4
+ /Kids [
+ 3 0 R
+ 4 0 R
+ 5 0 R
+ 6 0 R
+ ]
+>>
+endobj
+% Page number 0.
+{{object 3 0}} <<
+ /Type /Page
+ /Parent 2 0 R
+ /Resources <<
+ /Font <</F1 15 0 R>>
+ >>
+ /MediaBox [0 0 612 792]
+>>
+% Page number 1.
+{{object 4 0}} <<
+ /Type /Page
+ /Parent 2 0 R
+ /Resources <<
+ /Font <</F1 15 0 R>>
+ >>
+ /MediaBox [0 0 612 792]
+>>
+% Page number 2.
+{{object 5 0}} <<
+ /Type /Page
+ /Parent 2 0 R
+ /Resources <<
+ /Font <</F1 15 0 R>>
+ >>
+ /MediaBox [0 0 612 792]
+>>
+% Page number 3.
+{{object 6 0}} <<
+ /Type /Page
+ /Parent 2 0 R
+ /Resources <<
+ /Font <</F1 15 0 R>>
+ >>
+ /MediaBox [0 0 612 792]
+>>
+
+% Info
+{{object 9 0}} <<
+ /Author (Joe Random Author)
+ /Creator (Joe Random Creator)
+>>
+endobj
+% OpenAction action
+{{object 10 0}} <<
+ /Type /Action
+ /S /JavaScript
+ /JS 11 0 R
+>>
+endobj
+% JS program to exexute
+{{object 11 0}} <<
+>>
+stream
+var document_props = [
+ 'ADBE',
+ 'author',
+ 'baseURL',
+ 'bookmarkRoot',
+ 'calculate',
+ 'Collab',
+ 'creationDate',
+ 'creator',
+ 'delay',
+ 'dirty',
+ 'documentFileName',
+ 'external',
+ 'filesize',
+ 'icons',
+ 'info',
+ 'keywords',
+ 'layout',
+ 'media',
+ 'modDate',
+ 'mouseX',
+ 'mouseY',
+ 'numFields',
+ 'numPages',
+ 'pageNum',
+ 'pageWindowRect',
+ 'path',
+ 'producer',
+ 'subject',
+ 'title',
+ 'zoom',
+ 'zoomType',
+];
+
+function testGetProps(props) {
+ try {
+ app.alert('*** Getting properties ***');
+ for (var i = 0; i < props.length; ++i) {
+ var expr1 = "this." + props[i];
+ var expr2 = "typeof " + expr1;
+ app.alert(expr1 + " is " + eval(expr2) + ' ' + eval(expr1));
+ }
+ } catch (e) {
+ app.alert("ERROR: " + e.toString());
+ }
+}
+
+function testSetProps(props) {
+ try {
+ app.alert('*** Setting properties ***');
+ for (var i = 0; i < props.length; ++i) {
+ var expr1 = "this." + props[i] + ' = 3;'
+ app.alert(expr1 + " yields " + eval(expr1));
+ }
+ } catch (e) {
+ app.alert("ERROR: " + e.toString());
+ }
+}
+
+testGetProps(document_props);
+testSetProps(document_props);
+testGetProps(document_props);
+endstream
+endobj
+{{xref}}
+trailer <<
+ /Root 1 0 R
+ /Info 9 0 R
+>>
+{{startxref}}
+%%EOF
diff --git a/testing/resources/javascript/document_props_expected.txt b/testing/resources/javascript/document_props_expected.txt
new file mode 100644
index 0000000000..38bea97acb
--- /dev/null
+++ b/testing/resources/javascript/document_props_expected.txt
@@ -0,0 +1,97 @@
+Alert: *** Getting properties ***
+Alert: this.ADBE is undefined undefined
+Alert: this.author is string Joe Random Author
+Alert: this.baseURL is string
+Alert: this.bookmarkRoot is undefined undefined
+Alert: this.calculate is boolean true
+Alert: this.Collab is undefined undefined
+Alert: this.creationDate is string
+Alert: this.creator is string Joe Random Creator
+Alert: this.delay is number 0
+Alert: this.dirty is boolean false
+Alert: this.documentFileName is string
+Alert: this.external is number 1
+Alert: this.filesize is number 0
+Alert: this.icons is undefined undefined
+Alert: this.info is object [object Object]
+Alert: this.keywords is string
+Alert: this.layout is undefined undefined
+Alert: this.media is undefined undefined
+Alert: this.modDate is string
+Alert: this.mouseX is undefined undefined
+Alert: this.mouseY is undefined undefined
+Alert: this.numFields is number 0
+Alert: this.numPages is number 4
+Alert: this.pageNum is undefined undefined
+Alert: this.pageWindowRect is undefined undefined
+Alert: this.path is string /
+Alert: this.producer is string
+Alert: this.subject is string
+Alert: this.title is string
+Alert: this.zoom is undefined undefined
+Alert: this.zoomType is undefined undefined
+Alert: *** Setting properties ***
+Alert: this.ADBE = 3; yields 3
+Alert: this.author = 3; yields 3
+Alert: this.baseURL = 3; yields 3
+Alert: this.bookmarkRoot = 3; yields 3
+Alert: this.calculate = 3; yields 3
+Alert: this.Collab = 3; yields 3
+Alert: this.creationDate = 3; yields 3
+Alert: this.creator = 3; yields 3
+Alert: this.delay = 3; yields 3
+Alert: this.dirty = 3; yields 3
+Alert: this.documentFileName = 3; yields 3
+Alert: this.external = 3; yields 3
+Alert: this.filesize = 3; yields 3
+Alert: this.icons = 3; yields 3
+Alert: this.info = 3; yields 3
+Alert: this.keywords = 3; yields 3
+Alert: this.layout = 3; yields 3
+Alert: this.media = 3; yields 3
+Alert: this.modDate = 3; yields 3
+Alert: this.mouseX = 3; yields 3
+Alert: this.mouseY = 3; yields 3
+Alert: this.numFields = 3; yields 3
+Alert: this.numPages = 3; yields 3
+Goto Page: 3
+Alert: this.pageNum = 3; yields 3
+Alert: this.pageWindowRect = 3; yields 3
+Alert: this.path = 3; yields 3
+Alert: this.producer = 3; yields 3
+Alert: this.subject = 3; yields 3
+Alert: this.title = 3; yields 3
+Alert: this.zoom = 3; yields 3
+Alert: this.zoomType = 3; yields 3
+Alert: *** Getting properties ***
+Alert: this.ADBE is undefined undefined
+Alert: this.author is string 3
+Alert: this.baseURL is string 3
+Alert: this.bookmarkRoot is undefined undefined
+Alert: this.calculate is boolean true
+Alert: this.Collab is undefined undefined
+Alert: this.creationDate is string 3
+Alert: this.creator is string 3
+Alert: this.delay is number 1
+Alert: this.dirty is boolean true
+Alert: this.documentFileName is string
+Alert: this.external is number 1
+Alert: this.filesize is number 0
+Alert: this.icons is undefined undefined
+Alert: this.info is object [object Object]
+Alert: this.keywords is string 3
+Alert: this.layout is undefined undefined
+Alert: this.media is undefined undefined
+Alert: this.modDate is string 3
+Alert: this.mouseX is undefined undefined
+Alert: this.mouseY is undefined undefined
+Alert: this.numFields is number 0
+Alert: this.numPages is number 4
+Alert: this.pageNum is undefined undefined
+Alert: this.pageWindowRect is undefined undefined
+Alert: this.path is string /
+Alert: this.producer is string 3
+Alert: this.subject is string 3
+Alert: this.title is string 3
+Alert: this.zoom is undefined undefined
+Alert: this.zoomType is undefined undefined