diff --git a/fpdfsdk/src/javascript/app.cpp b/fpdfsdk/src/javascript/app.cpp
index c8815a0..4815e47 100644
--- a/fpdfsdk/src/javascript/app.cpp
+++ b/fpdfsdk/src/javascript/app.cpp
@@ -18,16 +18,10 @@
 
 static v8::Isolate* GetIsolate(IFXJS_Context* cc) {
   CJS_Context* pContext = (CJS_Context*)cc;
-  ASSERT(pContext != NULL);
-
   CJS_Runtime* pRuntime = pContext->GetJSRuntime();
-  ASSERT(pRuntime != NULL);
-
   return pRuntime->GetIsolate();
 }
 
-/* ---------------------------- TimerObj ---------------------------- */
-
 BEGIN_JS_STATIC_CONST(CJS_TimerObj)
 END_JS_STATIC_CONST()
 
@@ -52,19 +46,14 @@
   return m_pTimer;
 }
 
-#define JS_STR_VIEWERTYPE_READER L"Reader"
-#define JS_STR_VIEWERTYPE_STANDARD L"Exchange"
+#define JS_STR_VIEWERTYPE L"pdfium"
 #define JS_STR_VIEWERVARIATION L"Full"
 #define JS_STR_PLATFORM L"WIN"
 #define JS_STR_LANGUANGE L"ENU"
-#define JS_STR_VIEWERVERSION 8
-#define JS_STR_VIEWERVERSION_XFA 11
+#define JS_NUM_VIEWERVERSION 8
+#define JS_NUM_VIEWERVERSION_XFA 11
 #define JS_NUM_FORMSVERSION 7
 
-#define JS_FILEPATH_MAXLEN 2000
-
-/* ---------------------------- app ---------------------------- */
-
 BEGIN_JS_STATIC_CONST(CJS_App)
 END_JS_STATIC_CONST()
 
@@ -188,7 +177,7 @@
                         CJS_PropValue& vp,
                         CFX_WideString& sError) {
   if (vp.IsGetting()) {
-    vp << L"pdfium";
+    vp << JS_STR_VIEWERTYPE;
     return TRUE;
   }
 
@@ -216,9 +205,9 @@
   CPDFSDK_Document* pCurDoc = pContext->GetReaderDocument();
   CPDFXFA_Document* pDoc = pCurDoc->GetDocument();
   if (pDoc->GetDocType() == 1 || pDoc->GetDocType() == 2)
-    vp << JS_STR_VIEWERVERSION_XFA;
+    vp << JS_NUM_VIEWERVERSION_XFA;
   else
-    vp << JS_STR_VIEWERVERSION;
+    vp << JS_NUM_VIEWERVERSION;
 
   return TRUE;
 }
diff --git a/testing/resources/javascript/app_props.in b/testing/resources/javascript/app_props.in
index fb5f9d6..89511b0 100644
--- a/testing/resources/javascript/app_props.in
+++ b/testing/resources/javascript/app_props.in
@@ -7,9 +7,12 @@
 endobj
 {{object 2 0}} <<
   /Type /Pages
-  /Count 1
+  /Count 4
   /Kids [
     3 0 R
+    4 0 R
+    5 0 R
+    6 0 R
   ]
 >>
 endobj
@@ -20,9 +23,42 @@
   /Resources <<
     /Font <</F1 15 0 R>>
   >>
-  /Contents [21 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
@@ -34,12 +70,55 @@
 {{object 11 0}} <<
 >>
 stream
-app.alert("app.viewerType property value: " + app.viewerType);
+var app_props = [
+  'activeDocs',
+  'calculate',
+  'formsVersion',
+  'fs',
+  'fullscreen',
+  'language',
+  'media',
+  'platform',
+  'runtimeHighlight',
+  'viewerType',
+  'viewerVariation',
+  'viewerVersion'
+];
+
+function testGetProps(props) {
+  app.alert('*** Getting properties ***');
+  for (var i = 0; i < props.length; ++i) {
+    try {
+      var expr1 = "app." + props[i];
+      var expr2 = "typeof " + expr1;
+      app.alert(expr1 + " is " + eval(expr2) + ' ' + eval(expr1));
+    } catch (e) {
+      app.alert("ERROR: " + e.toString());
+    }
+  }
+}
+
+function testSetProps(props) {
+  app.alert('*** Setting properties ***');
+  for (var i = 0; i < props.length; ++i) {
+    try {
+      var expr1 = "app." + props[i] + ' = 3;'
+      app.alert(expr1 + " yields " + eval(expr1));
+    } catch (e) {
+      app.alert("ERROR: " + e.toString());
+    }
+  }
+}
+
+testGetProps(app_props);
+testSetProps(app_props);
+testGetProps(app_props);
 endstream
 endobj
 {{xref}}
 trailer <<
   /Root 1 0 R
+  /Info 9 0 R
 >>
 {{startxref}}
 %%EOF
diff --git a/testing/resources/javascript/app_props_expected.txt b/testing/resources/javascript/app_props_expected.txt
index 405f9c8..6e78ba5 100644
--- a/testing/resources/javascript/app_props_expected.txt
+++ b/testing/resources/javascript/app_props_expected.txt
@@ -1 +1,39 @@
-Alert: app.viewerType property value: pdfium
+Alert: *** Getting properties ***
+Alert: app.activeDocs is object [object Object]
+Alert: app.calculate is boolean true
+Alert: app.formsVersion is number 7
+Alert: ERROR: app.fs: 
+Alert: ERROR: app.fullscreen: 
+Alert: app.language is string ENU
+Alert: ERROR: app.media: 
+Alert: app.platform is string WIN
+Alert: app.runtimeHighlight is boolean false
+Alert: app.viewerType is string pdfium
+Alert: app.viewerVariation is string Full
+Alert: app.viewerVersion is number 8
+Alert: *** Setting properties ***
+Alert: ERROR: app.activeDocs: 
+Alert: app.calculate = 3; yields 3
+Alert: ERROR: app.formsVersion: 
+Alert: ERROR: app.fs: 
+Alert: ERROR: app.fullscreen: 
+Alert: ERROR: app.language: 
+Alert: ERROR: app.media: 
+Alert: ERROR: app.platform: 
+Alert: app.runtimeHighlight = 3; yields 3
+Alert: ERROR: app.viewerType: 
+Alert: ERROR: app.viewerVariation: 
+Alert: ERROR: app.viewerVersion: 
+Alert: *** Getting properties ***
+Alert: app.activeDocs is object [object Object]
+Alert: app.calculate is boolean true
+Alert: app.formsVersion is number 7
+Alert: ERROR: app.fs: 
+Alert: ERROR: app.fullscreen: 
+Alert: app.language is string ENU
+Alert: ERROR: app.media: 
+Alert: app.platform is string WIN
+Alert: app.runtimeHighlight is boolean true
+Alert: app.viewerType is string pdfium
+Alert: app.viewerVariation is string Full
+Alert: app.viewerVersion is number 8
