Get rid of non-const ref parameter in CPDFSDK_InterForm::OnFormat().

Return Optional<WideString> instead. Change the call stack to accept
Optional<WideString>.

Change-Id: I020589fac8a1de4974070268a19b4acad64c4092
Reviewed-on: https://pdfium-review.googlesource.com/c/43601
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_interform.cpp b/fpdfsdk/cpdfsdk_interform.cpp
index 549caaf..2cc20f9 100644
--- a/fpdfsdk/cpdfsdk_interform.cpp
+++ b/fpdfsdk/cpdfsdk_interform.cpp
@@ -323,14 +323,11 @@
   }
 }
 
-WideString CPDFSDK_InterForm::OnFormat(CPDF_FormField* pFormField,
-                                       bool& bFormatted) {
-  WideString sValue = pFormField->GetValue();
-  if (!m_pFormFillEnv->IsJSPlatformPresent()) {
-    bFormatted = false;
-    return sValue;
-  }
+Optional<WideString> CPDFSDK_InterForm::OnFormat(CPDF_FormField* pFormField) {
+  if (!m_pFormFillEnv->IsJSPlatformPresent())
+    return {};
 
+  WideString sValue = pFormField->GetValue();
   IJS_Runtime* pRuntime = m_pFormFillEnv->GetIJSRuntime();
   if (pFormField->GetFieldType() == FormFieldType::kComboBox &&
       pFormField->CountSelectedItems() > 0) {
@@ -339,30 +336,25 @@
       sValue = pFormField->GetOptionLabel(index);
   }
 
-  bFormatted = false;
-
   CPDF_AAction aAction = pFormField->GetAdditionalAction();
   if (aAction.GetDict() && aAction.ActionExist(CPDF_AAction::Format)) {
     CPDF_Action action = aAction.GetAction(CPDF_AAction::Format);
     if (action.GetDict()) {
       WideString script = action.GetJavaScript();
       if (!script.IsEmpty()) {
-        WideString Value = sValue;
         IJS_Runtime::ScopedEventContext pContext(pRuntime);
-        pContext->OnField_Format(pFormField, &Value, true);
+        pContext->OnField_Format(pFormField, &sValue, true);
         Optional<IJS_Runtime::JS_Error> err = pContext->RunScript(script);
-        if (!err) {
-          sValue = std::move(Value);
-          bFormatted = true;
-        }
+        if (!err)
+          return sValue;
       }
     }
   }
-  return sValue;
+  return {};
 }
 
 void CPDFSDK_InterForm::ResetFieldAppearance(CPDF_FormField* pFormField,
-                                             const WideString* sValue,
+                                             Optional<WideString> sValue,
                                              bool bValueChanged) {
   for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) {
     CPDF_FormControl* pFormCtrl = pFormField->GetControl(i);
@@ -591,9 +583,7 @@
     return;
 
   OnCalculate(pField);
-  bool bFormatted = false;
-  WideString sValue = OnFormat(pField, bFormatted);
-  ResetFieldAppearance(pField, bFormatted ? &sValue : nullptr, true);
+  ResetFieldAppearance(pField, OnFormat(pField), true);
   UpdateField(pField);
 }
 
@@ -611,7 +601,7 @@
     return;
 
   OnCalculate(pField);
-  ResetFieldAppearance(pField, nullptr, true);
+  ResetFieldAppearance(pField, pdfium::nullopt, true);
   UpdateField(pField);
 }