Fix two issues shown by bug 489995

- Handle NULL in buffer operator<< under JS mailForm() calls.
- Ensure correct type in JS addIcon() calls.

BUG=489995
R=brucedawson@chromium.org, thestig@chromium.org

Review URL: https://codereview.chromium.org/1327473002 .
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp
index 9e14341..63454d2 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp
@@ -410,7 +410,7 @@
         CFX_ByteString key;
         CPDF_Object* pValue = p->GetNextElement(pos, key);
         buf << FX_BSTRC("/") << PDF_NameEncode(key);
-        if (pValue->GetObjNum()) {
+        if (pValue && pValue->GetObjNum()) {
           buf << " " << pValue->GetObjNum() << FX_BSTRC(" 0 R ");
         } else {
           buf << pValue;
diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp
index a879709..91805b8 100644
--- a/fpdfsdk/src/javascript/Document.cpp
+++ b/fpdfsdk/src/javascript/Document.cpp
@@ -1367,8 +1367,12 @@
     sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
     return FALSE;
   }
-
   CFX_WideString swIconName = params[0].ToCFXWideString();
+
+  if (params[1].GetType() != VT_object) {
+    sError = JSGetStringFromID(pContext, IDS_STRING_JSTYPEERROR);
+    return FALSE;
+  }
   JSFXObject pJSIcon = params[1].ToV8Object();
 
   CJS_Runtime* pRuntime = pContext->GetJSRuntime();
diff --git a/testing/resources/javascript/document_methods.in b/testing/resources/javascript/document_methods.in
index b2467f3..3cd3330 100644
--- a/testing/resources/javascript/document_methods.in
+++ b/testing/resources/javascript/document_methods.in
@@ -122,6 +122,7 @@
 
    // Second argument must actually be an icon.
    expectError('this.addIcon("myicon", 3)');
+   expectError('this.addIcon("myicon", undefined)');
 
    // TODO(tsepez): test success cases.
 }
diff --git a/testing/resources/javascript/document_methods_expected.txt b/testing/resources/javascript/document_methods_expected.txt
index 753a99d..26f7b54 100644
--- a/testing/resources/javascript/document_methods_expected.txt
+++ b/testing/resources/javascript/document_methods_expected.txt
@@ -77,6 +77,7 @@
 Alert: PASS: this.addIcon(1) threw error Document.addIcon: Incorrect number of parameters passed to function.
 Alert: PASS: this.addIcon(1, 2, 3) threw error Document.addIcon: Incorrect number of parameters passed to function.
 Alert: PASS: this.addIcon("myicon", 3) threw error Document.addIcon: Incorrect parameter type.
+Alert: PASS: this.addIcon("myicon", undefined) threw error Document.addIcon: Incorrect parameter type.
 Alert: PASS: typeof this.calculateNow = function
 Alert: PASS: typeof this.getField = function
 Alert: PASS: this.getField() threw error Document.getField: Incorrect number of parameters passed to function.