Merge to XFA: Cleanup CPDF_ApSettings and CJS_Parameters.

TBR=tsepez@chromium.org

Review URL: https://codereview.chromium.org/1432863004 .

(cherry picked from commit 56e3da27d8bed8a6c03274b7b946e3f6d6ac11f4)

Review URL: https://codereview.chromium.org/1436843003 .
diff --git a/core/include/fpdfdoc/fpdf_doc.h b/core/include/fpdfdoc/fpdf_doc.h
index 6fcb671..01750d8 100644
--- a/core/include/fpdfdoc/fpdf_doc.h
+++ b/core/include/fpdfdoc/fpdf_doc.h
@@ -949,7 +949,7 @@
 
   HighlightingMode GetHighlightingMode();
 
-  FX_BOOL HasMKEntry(CFX_ByteString csEntry);
+  bool HasMKEntry(CFX_ByteString csEntry) const;
 
   int GetRotation();
 
@@ -957,37 +957,37 @@
     return GetColor(iColorType, "BC");
   }
 
-  inline FX_FLOAT GetOriginalBorderColor(int index) {
+  FX_FLOAT GetOriginalBorderColor(int index) {
     return GetOriginalColor(index, "BC");
   }
 
-  inline void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4]) {
+  void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4]) {
     GetOriginalColor(iColorType, fc, "BC");
   }
 
-  inline FX_ARGB GetBackgroundColor(int& iColorType) {
+  FX_ARGB GetBackgroundColor(int& iColorType) {
     return GetColor(iColorType, "BG");
   }
 
-  inline FX_FLOAT GetOriginalBackgroundColor(int index) {
+  FX_FLOAT GetOriginalBackgroundColor(int index) {
     return GetOriginalColor(index, "BG");
   }
 
-  inline void GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4]) {
+  void GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4]) {
     GetOriginalColor(iColorType, fc, "BG");
   }
 
-  inline CFX_WideString GetNormalCaption() { return GetCaption("CA"); }
+  CFX_WideString GetNormalCaption() { return GetCaption("CA"); }
 
-  inline CFX_WideString GetRolloverCaption() { return GetCaption("RC"); }
+  CFX_WideString GetRolloverCaption() { return GetCaption("RC"); }
 
-  inline CFX_WideString GetDownCaption() { return GetCaption("AC"); }
+  CFX_WideString GetDownCaption() { return GetCaption("AC"); }
 
-  inline CPDF_Stream* GetNormalIcon() { return GetIcon("I"); }
+  CPDF_Stream* GetNormalIcon() { return GetIcon("I"); }
 
-  inline CPDF_Stream* GetRolloverIcon() { return GetIcon("RI"); }
+  CPDF_Stream* GetRolloverIcon() { return GetIcon("RI"); }
 
-  inline CPDF_Stream* GetDownIcon() { return GetIcon("IX"); }
+  CPDF_Stream* GetDownIcon() { return GetIcon("IX"); }
 
   CPDF_IconFit GetIconFit();
 
@@ -1024,7 +1024,7 @@
 
   CPDF_Stream* GetIcon(CFX_ByteString csEntry);
 
-  CPDF_ApSettings GetMK(FX_BOOL bCreate);
+  CPDF_ApSettings GetMK() const;
 
   CPDF_InterForm* m_pForm;
 
@@ -1113,74 +1113,71 @@
 
 class CPDF_ApSettings {
  public:
-  // TODO(thestig): Examine why this cannot be explicit.
-  CPDF_ApSettings(CPDF_Dictionary* pDict = NULL) { m_pDict = pDict; }
+  explicit CPDF_ApSettings(CPDF_Dictionary* pDict);
 
-  operator CPDF_Dictionary*() const { return m_pDict; }
+  bool HasMKEntry(const CFX_ByteStringC& csEntry) const;
+  int GetRotation() const;
 
-  FX_BOOL HasMKEntry(const CFX_ByteStringC& csEntry);
-
-  int GetRotation();
-
-  inline FX_ARGB GetBorderColor(int& iColorType) {
+  FX_ARGB GetBorderColor(int& iColorType) const {
     return GetColor(iColorType, FX_BSTRC("BC"));
   }
 
-  inline FX_FLOAT GetOriginalBorderColor(int index) {
+  FX_FLOAT GetOriginalBorderColor(int index) const {
     return GetOriginalColor(index, FX_BSTRC("BC"));
   }
 
-  inline void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4]) {
+  void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4]) const {
     GetOriginalColor(iColorType, fc, FX_BSTRC("BC"));
   }
 
-  inline FX_ARGB GetBackgroundColor(int& iColorType) {
+  FX_ARGB GetBackgroundColor(int& iColorType) const {
     return GetColor(iColorType, FX_BSTRC("BG"));
   }
 
-  inline FX_FLOAT GetOriginalBackgroundColor(int index) {
+  FX_FLOAT GetOriginalBackgroundColor(int index) const {
     return GetOriginalColor(index, FX_BSTRC("BG"));
   }
 
-  inline void GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4]) {
+  void GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4]) const {
     GetOriginalColor(iColorType, fc, FX_BSTRC("BG"));
   }
 
-  inline CFX_WideString GetNormalCaption() {
-    return GetCaption(FX_BSTRC("CA"));
-  }
+  CFX_WideString GetNormalCaption() const { return GetCaption(FX_BSTRC("CA")); }
 
-  inline CFX_WideString GetRolloverCaption() {
+  CFX_WideString GetRolloverCaption() const {
     return GetCaption(FX_BSTRC("RC"));
   }
 
-  inline CFX_WideString GetDownCaption() { return GetCaption(FX_BSTRC("AC")); }
+  CFX_WideString GetDownCaption() const { return GetCaption(FX_BSTRC("AC")); }
 
-  inline CPDF_Stream* GetNormalIcon() { return GetIcon(FX_BSTRC("I")); }
+  CPDF_Stream* GetNormalIcon() const { return GetIcon(FX_BSTRC("I")); }
 
-  inline CPDF_Stream* GetRolloverIcon() { return GetIcon(FX_BSTRC("RI")); }
+  CPDF_Stream* GetRolloverIcon() const { return GetIcon(FX_BSTRC("RI")); }
 
-  inline CPDF_Stream* GetDownIcon() { return GetIcon(FX_BSTRC("IX")); }
+  CPDF_Stream* GetDownIcon() const { return GetIcon(FX_BSTRC("IX")); }
 
-  CPDF_IconFit GetIconFit();
+  CPDF_IconFit GetIconFit() const;
 
-  int GetTextPosition();
-
-  CPDF_Dictionary* m_pDict;
+  int GetTextPosition() const;
 
  protected:
-  FX_ARGB GetColor(int& iColorType, const CFX_ByteStringC& csEntry);
+  friend class CPDF_FormControl;
 
-  FX_FLOAT GetOriginalColor(int index, const CFX_ByteStringC& csEntry);
+  FX_ARGB GetColor(int& iColorType, const CFX_ByteStringC& csEntry) const;
+
+  FX_FLOAT GetOriginalColor(int index, const CFX_ByteStringC& csEntry) const;
 
   void GetOriginalColor(int& iColorType,
                         FX_FLOAT fc[4],
-                        const CFX_ByteStringC& csEntry);
+                        const CFX_ByteStringC& csEntry) const;
 
-  CFX_WideString GetCaption(const CFX_ByteStringC& csEntry);
+  CFX_WideString GetCaption(const CFX_ByteStringC& csEntry) const;
 
-  CPDF_Stream* GetIcon(const CFX_ByteStringC& csEntry);
-  friend class CPDF_FormControl;
+  CPDF_Stream* GetIcon(const CFX_ByteStringC& csEntry) const;
+
+  CPDF_Dictionary* const m_pDict;
 };
 
+CFX_WideString FILESPEC_EncodeFileName(const CFX_WideStringC& filepath);
+
 #endif  // CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_
diff --git a/core/src/fpdfdoc/doc_form.cpp b/core/src/fpdfdoc/doc_form.cpp
index 776f19f..857bf5a 100644
--- a/core/src/fpdfdoc/doc_form.cpp
+++ b/core/src/fpdfdoc/doc_form.cpp
@@ -1145,9 +1145,6 @@
   return ExportToFDF(pdf_path, fields, true, bSimpleFileSpec);
 }
 
-// TODO(thestig): Fix this.
-CFX_WideString FILESPEC_EncodeFileName(const CFX_WideStringC& filepath);
-
 CFDF_Document* CPDF_InterForm::ExportToFDF(
     const CFX_WideStringC& pdf_path,
     const std::vector<CPDF_FormField*>& fields,
diff --git a/core/src/fpdfdoc/doc_formcontrol.cpp b/core/src/fpdfdoc/doc_formcontrol.cpp
index 0796b6b..88b68bc 100644
--- a/core/src/fpdfdoc/doc_formcontrol.cpp
+++ b/core/src/fpdfdoc/doc_formcontrol.cpp
@@ -189,58 +189,49 @@
   }
   return Invert;
 }
-CPDF_ApSettings CPDF_FormControl::GetMK(FX_BOOL bCreate) {
-  if (!m_pWidgetDict) {
-    return NULL;
-  }
-  CPDF_ApSettings mk = m_pWidgetDict->GetDict(FX_BSTRC("MK"));
-  if (!mk && bCreate) {
-    mk = CPDF_Dictionary::Create();
-    if (mk == NULL) {
-      return NULL;
-    }
-    m_pWidgetDict->SetAt(FX_BSTRC("MK"), mk);
-  }
-  return mk;
+
+CPDF_ApSettings CPDF_FormControl::GetMK() const {
+  return CPDF_ApSettings(m_pWidgetDict ? m_pWidgetDict->GetDict(FX_BSTRC("MK"))
+                                       : nullptr);
 }
-FX_BOOL CPDF_FormControl::HasMKEntry(CFX_ByteString csEntry) {
-  CPDF_ApSettings mk = GetMK(FALSE);
-  return mk.HasMKEntry(csEntry);
+
+bool CPDF_FormControl::HasMKEntry(CFX_ByteString csEntry) const {
+  return GetMK().HasMKEntry(csEntry);
 }
+
 int CPDF_FormControl::GetRotation() {
-  CPDF_ApSettings mk = GetMK(FALSE);
-  return mk.GetRotation();
+  return GetMK().GetRotation();
 }
+
 FX_ARGB CPDF_FormControl::GetColor(int& iColorType, CFX_ByteString csEntry) {
-  CPDF_ApSettings mk = GetMK(FALSE);
-  return mk.GetColor(iColorType, csEntry);
+  return GetMK().GetColor(iColorType, csEntry);
 }
+
 FX_FLOAT CPDF_FormControl::GetOriginalColor(int index, CFX_ByteString csEntry) {
-  CPDF_ApSettings mk = GetMK(FALSE);
-  return mk.GetOriginalColor(index, csEntry);
+  return GetMK().GetOriginalColor(index, csEntry);
 }
+
 void CPDF_FormControl::GetOriginalColor(int& iColorType,
                                         FX_FLOAT fc[4],
                                         CFX_ByteString csEntry) {
-  CPDF_ApSettings mk = GetMK(FALSE);
-  mk.GetOriginalColor(iColorType, fc, csEntry);
+  GetMK().GetOriginalColor(iColorType, fc, csEntry);
 }
 CFX_WideString CPDF_FormControl::GetCaption(CFX_ByteString csEntry) {
-  CPDF_ApSettings mk = GetMK(FALSE);
-  return mk.GetCaption(csEntry);
+  return GetMK().GetCaption(csEntry);
 }
+
 CPDF_Stream* CPDF_FormControl::GetIcon(CFX_ByteString csEntry) {
-  CPDF_ApSettings mk = GetMK(FALSE);
-  return mk.GetIcon(csEntry);
+  return GetMK().GetIcon(csEntry);
 }
+
 CPDF_IconFit CPDF_FormControl::GetIconFit() {
-  CPDF_ApSettings mk = GetMK(FALSE);
-  return mk.GetIconFit();
+  return GetMK().GetIconFit();
 }
+
 int CPDF_FormControl::GetTextPosition() {
-  CPDF_ApSettings mk = GetMK(FALSE);
-  return mk.GetTextPosition();
+  return GetMK().GetTextPosition();
 }
+
 CPDF_Action CPDF_FormControl::GetAction() {
   if (!m_pWidgetDict) {
     return CPDF_Action();
@@ -331,29 +322,28 @@
   }
   return pObj->GetInteger();
 }
-FX_BOOL CPDF_ApSettings::HasMKEntry(const CFX_ByteStringC& csEntry) {
-  if (m_pDict == NULL) {
-    return FALSE;
-  }
-  return m_pDict->KeyExist(csEntry);
+
+CPDF_ApSettings::CPDF_ApSettings(CPDF_Dictionary* pDict) : m_pDict(pDict) {}
+
+bool CPDF_ApSettings::HasMKEntry(const CFX_ByteStringC& csEntry) const {
+  return m_pDict && m_pDict->KeyExist(csEntry);
 }
-int CPDF_ApSettings::GetRotation() {
-  if (m_pDict == NULL) {
-    return 0;
-  }
-  return m_pDict->GetInteger(FX_BSTRC("R"));
+
+int CPDF_ApSettings::GetRotation() const {
+  return m_pDict ? m_pDict->GetInteger(FX_BSTRC("R")) : 0;
 }
+
 FX_ARGB CPDF_ApSettings::GetColor(int& iColorType,
-                                  const CFX_ByteStringC& csEntry) {
+                                  const CFX_ByteStringC& csEntry) const {
   iColorType = COLORTYPE_TRANSPARENT;
-  if (m_pDict == NULL) {
+  if (!m_pDict)
     return 0;
-  }
-  FX_ARGB color = 0;
+
   CPDF_Array* pEntry = m_pDict->GetArray(csEntry);
-  if (pEntry == NULL) {
-    return color;
-  }
+  if (!pEntry)
+    return 0;
+
+  FX_ARGB color = 0;
   FX_DWORD dwCount = pEntry->GetCount();
   if (dwCount == 1) {
     iColorType = COLORTYPE_GRAY;
@@ -378,20 +368,20 @@
   }
   return color;
 }
-FX_FLOAT CPDF_ApSettings::GetOriginalColor(int index,
-                                           const CFX_ByteStringC& csEntry) {
-  if (m_pDict == NULL) {
+
+FX_FLOAT CPDF_ApSettings::GetOriginalColor(
+    int index,
+    const CFX_ByteStringC& csEntry) const {
+  if (!m_pDict)
     return 0;
-  }
+
   CPDF_Array* pEntry = m_pDict->GetArray(csEntry);
-  if (pEntry != NULL) {
-    return pEntry->GetNumber(index);
-  }
-  return 0;
+  return pEntry ? pEntry->GetNumber(index) : 0;
 }
+
 void CPDF_ApSettings::GetOriginalColor(int& iColorType,
                                        FX_FLOAT fc[4],
-                                       const CFX_ByteStringC& csEntry) {
+                                       const CFX_ByteStringC& csEntry) const {
   iColorType = COLORTYPE_TRANSPARENT;
   for (int i = 0; i < 4; i++) {
     fc[i] = 0;
@@ -420,28 +410,21 @@
     fc[3] = pEntry->GetNumber(3);
   }
 }
-CFX_WideString CPDF_ApSettings::GetCaption(const CFX_ByteStringC& csEntry) {
-  CFX_WideString csCaption;
-  if (m_pDict == NULL) {
-    return csCaption;
-  }
-  return m_pDict->GetUnicodeText(csEntry);
+
+CFX_WideString CPDF_ApSettings::GetCaption(
+    const CFX_ByteStringC& csEntry) const {
+  return m_pDict ? m_pDict->GetUnicodeText(csEntry) : CFX_WideString();
 }
-CPDF_Stream* CPDF_ApSettings::GetIcon(const CFX_ByteStringC& csEntry) {
-  if (m_pDict == NULL) {
-    return NULL;
-  }
-  return m_pDict->GetStream(csEntry);
+
+CPDF_Stream* CPDF_ApSettings::GetIcon(const CFX_ByteStringC& csEntry) const {
+  return m_pDict ? m_pDict->GetStream(csEntry) : nullptr;
 }
-CPDF_IconFit CPDF_ApSettings::GetIconFit() {
-  if (m_pDict == NULL) {
-    return NULL;
-  }
-  return m_pDict->GetDict(FX_BSTRC("IF"));
+
+CPDF_IconFit CPDF_ApSettings::GetIconFit() const {
+  return m_pDict ? m_pDict->GetDict(FX_BSTRC("IF")) : nullptr;
 }
-int CPDF_ApSettings::GetTextPosition() {
-  if (m_pDict == NULL) {
-    return TEXTPOS_CAPTION;
-  }
-  return m_pDict->GetInteger(FX_BSTRC("TP"), TEXTPOS_CAPTION);
+
+int CPDF_ApSettings::GetTextPosition() const {
+  return m_pDict ? m_pDict->GetInteger(FX_BSTRC("TP"), TEXTPOS_CAPTION)
+                 : TEXTPOS_CAPTION;
 }
diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp
index 43d2504..a88c97c 100644
--- a/fpdfsdk/src/javascript/Document.cpp
+++ b/fpdfsdk/src/javascript/Document.cpp
@@ -567,8 +567,7 @@
   CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
   CJS_Array aName(pRuntime);
 
-  // TODO(thestig) Convert CJS_Parameters to a std::vector and use .empty().
-  if (params.size() <= 0) {
+  if (params.empty()) {
     pPDFForm->ResetForm(TRUE);
     m_pDocument->SetChangeMark();
     return TRUE;
@@ -1522,9 +1521,9 @@
   if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS))
     return FALSE;
 
-  int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0;
-  int nWordNo = params.GetSize() > 1 ? params[1].ToInt() : 0;
-  bool bStrip = params.GetSize() > 2 ? params[2].ToBool() : true;
+  int nPageNo = params.size() > 0 ? params[0].ToInt() : 0;
+  int nWordNo = params.size() > 1 ? params[1].ToInt() : 0;
+  bool bStrip = params.size() > 2 ? params[2].ToBool() : true;
 
   CPDF_Document* pDocument = m_pDocument->GetDocument()->GetPDFDoc();
   if (!pDocument)
@@ -1596,7 +1595,7 @@
   if (!m_pDocument->GetPermissions(FPDFPERM_EXTRACT_ACCESS))
     return FALSE;
 
-  int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0;
+  int nPageNo = params.size() > 0 ? params[0].ToInt() : 0;
 
   CPDF_Document* pDocument = m_pDocument->GetDocument()->GetPDFDoc();
   ASSERT(pDocument != NULL);
diff --git a/fpdfsdk/src/javascript/JS_Value.h b/fpdfsdk/src/javascript/JS_Value.h
index b8c5563..68e643e 100644
--- a/fpdfsdk/src/javascript/JS_Value.h
+++ b/fpdfsdk/src/javascript/JS_Value.h
@@ -88,13 +88,7 @@
   CJS_Runtime* m_pJSRuntime;
 };
 
-class CJS_Parameters : public CFX_ArrayTemplate<CJS_Value> {
- public:
-  void push_back(const CJS_Value& newElement) {
-    CFX_ArrayTemplate<CJS_Value>::Add(newElement);
-  }
-  int size() const { return CFX_ArrayTemplate<CJS_Value>::GetSize(); }
-};
+using CJS_Parameters = std::vector<CJS_Value>;
 
 class CJS_PropValue : public CJS_Value {
  public: