diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
index 20658fb..8f9c832 100644
--- a/samples/pdfium_test.cc
+++ b/samples/pdfium_test.cc
@@ -216,8 +216,8 @@
 }
 #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 @@
   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 @@
   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 @@
   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 0000000..8ab7e3d
--- /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 0000000..38bea97
--- /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
