Disable submit in XFA forms.
Bug: chromium:842503
Change-Id: If411815d8324929f482e3cad0fda54f24d370c2a
Reviewed-on: https://pdfium-review.googlesource.com/37830
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
index 9d1ceac..269b6d4 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.cpp
@@ -613,6 +613,7 @@
pInterForm->GetHighlightColor(FormFieldType::kXFA));
}
+#ifdef PDF_XFA_ELEMENT_SUBMIT_ENABLED
bool CPDFXFA_DocEnvironment::NotifySubmit(bool bPrevOrPost) {
if (bPrevOrPost)
return OnBeforeNotifySubmit();
@@ -702,6 +703,7 @@
NotifySubmit(false);
return ret;
}
+#endif // PDF_XFA_ELEMENT_SUBMIT_ENABLED
RetainPtr<IFX_SeekableReadStream> CPDFXFA_DocEnvironment::OpenLinkedFile(
CXFA_FFDoc* hDoc,
@@ -901,6 +903,7 @@
return true;
}
+#ifdef PDF_XFA_ELEMENT_SUBMIT_ENABLED
bool CPDFXFA_DocEnvironment::SubmitInternal(CXFA_FFDoc* hDoc,
CXFA_Submit* submit) {
CPDFSDK_FormFillEnvironment* pFormFillEnv = m_pContext->GetFormFillEnv();
@@ -978,6 +981,7 @@
pFormFillEnv->UploadTo(pFileHandler, fileFlag, AsFPDFWideString(&bs));
return true;
}
+#endif // PDF_XFA_ELEMENT_SUBMIT_ENABLED
bool CPDFXFA_DocEnvironment::SetPropertyInNonXFAGlobalObject(
CXFA_FFDoc* hDoc,
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.h b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.h
index 1c46a37..33e04ed 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.h
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_docenvironment.h
@@ -62,7 +62,9 @@
uint32_t dwOptions) override;
FX_ARGB GetHighlightColor(CXFA_FFDoc* hDoc) override;
+#ifdef PDF_XFA_ELEMENT_SUBMIT_ENABLED
bool Submit(CXFA_FFDoc* hDoc, CXFA_Submit* submit) override;
+#endif // PDF_XFA_ELEMENT_SUBMIT_ENABLED
bool GetPropertyFromNonXFAGlobalObject(CXFA_FFDoc* hDoc,
const ByteStringView& szPropName,
@@ -76,10 +78,13 @@
const WideString& wsLink) override;
private:
+#ifdef PDF_XFA_ELEMENT_SUBMIT_ENABLED
bool OnBeforeNotifySubmit();
void OnAfterNotifySubmit();
bool NotifySubmit(bool bPrevOrPost);
bool SubmitInternal(CXFA_FFDoc* hDoc, CXFA_Submit* submit);
+#endif // PDF_XFA_ELEMENT_SUBMIT_ENABLED
+
bool MailToInfo(WideString& csURL,
WideString& csToAddress,
WideString& csCCAddress,
diff --git a/xfa/fxfa/fxfa.h b/xfa/fxfa/fxfa.h
index c1fdd2b..6de20f0 100644
--- a/xfa/fxfa/fxfa.h
+++ b/xfa/fxfa/fxfa.h
@@ -260,7 +260,10 @@
uint32_t dwOptions) = 0;
virtual FX_ARGB GetHighlightColor(CXFA_FFDoc* hDoc) = 0;
+#ifdef PDF_XFA_ELEMENT_SUBMIT_ENABLED
virtual bool Submit(CXFA_FFDoc* hDoc, CXFA_Submit* submit) = 0;
+#endif // PDF_XFA_ELEMENT_SUBMIT_ENABLED
+
virtual bool GetPropertyFromNonXFAGlobalObject(
CXFA_FFDoc* hDoc,
const ByteStringView& szPropName,
diff --git a/xfa/fxfa/parser/cxfa_event.cpp b/xfa/fxfa/parser/cxfa_event.cpp
index 3dfa8b8..8b4a0b5 100644
--- a/xfa/fxfa/parser/cxfa_event.cpp
+++ b/xfa/fxfa/parser/cxfa_event.cpp
@@ -73,6 +73,8 @@
return GetChild<CXFA_Script>(0, XFA_Element::Script, false);
}
+#ifdef PDF_XFA_ELEMENT_SUBMIT_ENABLED
CXFA_Submit* CXFA_Event::GetSubmitIfExists() {
return GetChild<CXFA_Submit>(0, XFA_Element::Submit, false);
}
+#endif // PDF_XFA_ELEMENT_SUBMIT_ENABLED
diff --git a/xfa/fxfa/parser/cxfa_event.h b/xfa/fxfa/parser/cxfa_event.h
index a410805..6902b52 100644
--- a/xfa/fxfa/parser/cxfa_event.h
+++ b/xfa/fxfa/parser/cxfa_event.h
@@ -20,7 +20,11 @@
XFA_AttributeEnum GetActivity();
XFA_Element GetEventType() const;
CXFA_Script* GetScriptIfExists();
+
+#ifdef PDF_XFA_ELEMENT_SUBMIT_ENABLED
CXFA_Submit* GetSubmitIfExists();
+#endif // PDF_XFA_ELEMENT_SUBMIT_ENABLED
+
WideString GetRef();
};
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 5f919b7..363af54 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -2008,11 +2008,17 @@
case XFA_Element::SignData:
break;
case XFA_Element::Submit: {
+// TODO(crbug.com/867485): Submit is disabled for now. Fix it and reenable this
+// code.
+#ifdef PDF_XFA_ELEMENT_SUBMIT_ENABLED
CXFA_Submit* submit = event->GetSubmitIfExists();
if (!submit)
return XFA_EVENTERROR_NotExist;
return docView->GetDoc()->GetDocEnvironment()->Submit(docView->GetDoc(),
submit);
+#else
+ return XFA_EVENTERROR_Disabled;
+#endif // PDF_XFA_ELEMENT_SUBMIT_ENABLED
}
default:
break;