Add FPDFAnnot_GetFormAdditionalActionJavaScript() API
This is similar to FPDFAnnot_GetFormFieldType() and allows getting the
JavaScript of a given event. Such JavaScripts are used e.g. on a text
form which wants to accept dates.
Bug: pdfium:1885
Change-Id: Ieceb3042a309b9578e8a6751a60918c7e8d8f91d
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/97950
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/public/fpdf_annot.h b/public/fpdf_annot.h
index ccfbb0f..0c0302c 100644
--- a/public/fpdf_annot.h
+++ b/public/fpdf_annot.h
@@ -82,6 +82,16 @@
#define FPDF_FORMFLAG_CHOICE_EDIT (1 << 18)
#define FPDF_FORMFLAG_CHOICE_MULTI_SELECT (1 << 21)
+// Additional actions type of form field:
+// K, on key stroke, JavaScript action.
+// F, on format, JavaScript action.
+// V, on validate, JavaScript action.
+// C, on calculate, JavaScript action.
+#define FPDF_ANNOT_AACTION_KEY_STROKE 12
+#define FPDF_ANNOT_AACTION_FORMAT 13
+#define FPDF_ANNOT_AACTION_VALIDATE 14
+#define FPDF_ANNOT_AACTION_CALCULATE 15
+
typedef enum FPDFANNOT_COLORTYPE {
FPDFANNOT_COLORTYPE_Color = 0,
FPDFANNOT_COLORTYPE_InteriorColor
@@ -495,6 +505,31 @@
float* border_width);
// Experimental API.
+// Get the JavaScript of an event of the annotation's additional actions.
+// |buffer| is only modified if |buflen| is large enough to hold the whole
+// JavaScript string. If |buflen| is smaller, the total size of the JavaScript
+// is still returned, but nothing is copied. If there is no JavaScript for
+// |event| in |annot|, an empty string is written to |buf| and 2 is returned,
+// denoting the size of the null terminator in the buffer. On other errors,
+// nothing is written to |buffer| and 0 is returned.
+//
+// hHandle - handle to the form fill module, returned by
+// FPDFDOC_InitFormFillEnvironment().
+// annot - handle to an interactive form annotation.
+// event - event type, one of the FPDF_ANNOT_AACTION_* values.
+// buffer - buffer for holding the value string, encoded in UTF-16LE.
+// buflen - length of the buffer in bytes.
+//
+// Returns the length of the string value in bytes, including the 2-byte
+// null terminator.
+FPDF_EXPORT unsigned long FPDF_CALLCONV
+FPDFAnnot_GetFormAdditionalActionJavaScript(FPDF_FORMHANDLE hHandle,
+ FPDF_ANNOTATION annot,
+ int event,
+ FPDF_WCHAR* buffer,
+ unsigned long buflen);
+
+// Experimental API.
// Check if |annot|'s dictionary has |key| as a key.
//
// annot - handle to an annotation.