Merge to XFA: Beef up app_props.in and tidy app.cpp.

Small manual edit in fpdfsdk/src/javascript/app.cpp

(cherry picked from commit b830fbc03a6d12d8b5be50e85499c281a4c5da7f)
Original Review URL: https://codereview.chromium.org/1317393003 .

R=thestig@chromium.org
TBR=thestig@chromium.org

Review URL: https://codereview.chromium.org/1302423008 .
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