diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
index 2c13b92..000e1a9 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
@@ -900,8 +900,7 @@
   if (!pFormFillEnv)
     return false;
 
-  WideString csURL;
-  submitData.GetSubmitTarget(csURL);
+  WideString csURL = submitData.GetSubmitTarget();
   if (csURL.IsEmpty()) {
     WideString ws;
     ws.FromLocal("Submit cancelled.");
@@ -917,9 +916,9 @@
   int fileFlag = -1;
   switch (submitData.GetSubmitFormat()) {
     case XFA_ATTRIBUTEENUM_Xdp: {
-      WideString csContent;
-      submitData.GetSubmitXDPContent(csContent);
+      WideString csContent = submitData.GetSubmitXDPContent();
       csContent.Trim();
+
       WideString space;
       space.FromLocal(" ");
       csContent = space + csContent + space;
@@ -950,6 +949,7 @@
   }
   if (!pFileHandler)
     return false;
+
   if (csURL.Left(7).CompareNoCase(L"mailto:") == 0) {
     WideString csToAddress;
     WideString csCCAddress;
diff --git a/xfa/fxfa/parser/cxfa_submitdata.cpp b/xfa/fxfa/parser/cxfa_submitdata.cpp
index c461ed2..e10dec6 100644
--- a/xfa/fxfa/parser/cxfa_submitdata.cpp
+++ b/xfa/fxfa/parser/cxfa_submitdata.cpp
@@ -10,18 +10,18 @@
 
 CXFA_SubmitData::CXFA_SubmitData(CXFA_Node* pNode) : CXFA_DataData(pNode) {}
 
-bool CXFA_SubmitData::IsSubmitEmbedPDF() {
+bool CXFA_SubmitData::IsSubmitEmbedPDF() const {
   return m_pNode->JSNode()->GetBoolean(XFA_Attribute::EmbedPDF);
 }
 
-int32_t CXFA_SubmitData::GetSubmitFormat() {
+XFA_ATTRIBUTEENUM CXFA_SubmitData::GetSubmitFormat() const {
   return m_pNode->JSNode()->GetEnum(XFA_Attribute::Format);
 }
 
-void CXFA_SubmitData::GetSubmitTarget(WideString& wsTarget) {
-  wsTarget = m_pNode->JSNode()->GetCData(XFA_Attribute::Target);
+WideString CXFA_SubmitData::GetSubmitTarget() const {
+  return m_pNode->JSNode()->GetCData(XFA_Attribute::Target);
 }
 
-void CXFA_SubmitData::GetSubmitXDPContent(WideString& wsContent) {
-  wsContent = m_pNode->JSNode()->GetCData(XFA_Attribute::XdpContent);
+WideString CXFA_SubmitData::GetSubmitXDPContent() const {
+  return m_pNode->JSNode()->GetCData(XFA_Attribute::XdpContent);
 }
diff --git a/xfa/fxfa/parser/cxfa_submitdata.h b/xfa/fxfa/parser/cxfa_submitdata.h
index e90848d..039c327 100644
--- a/xfa/fxfa/parser/cxfa_submitdata.h
+++ b/xfa/fxfa/parser/cxfa_submitdata.h
@@ -17,10 +17,10 @@
  public:
   explicit CXFA_SubmitData(CXFA_Node* pNode);
 
-  bool IsSubmitEmbedPDF();
-  int32_t GetSubmitFormat();
-  void GetSubmitTarget(WideString& wsTarget);
-  void GetSubmitXDPContent(WideString& wsContent);
+  bool IsSubmitEmbedPDF() const;
+  XFA_ATTRIBUTEENUM GetSubmitFormat() const;
+  WideString GetSubmitTarget() const;
+  WideString GetSubmitXDPContent() const;
 };
 
 #endif  // XFA_FXFA_PARSER_CXFA_SUBMITDATA_H_
