Convert Field to use CPDFSDK_FormFillEnvironment

This CL changes Field from using a CPDFSDK_Document to using a
CPDFSDK_FormFillEnvironment.

Review-Url: https://codereview.chromium.org/2400443005
diff --git a/fpdfsdk/cpdfsdk_formfillenvironment.h b/fpdfsdk/cpdfsdk_formfillenvironment.h
index e92537e..e5a6932 100644
--- a/fpdfsdk/cpdfsdk_formfillenvironment.h
+++ b/fpdfsdk/cpdfsdk_formfillenvironment.h
@@ -25,7 +25,8 @@
 class CPDFSDK_Document;
 class IJS_Runtime;
 
-class CPDFSDK_FormFillEnvironment final {
+class CPDFSDK_FormFillEnvironment
+    : public CFX_Observable<CPDFSDK_FormFillEnvironment> {
  public:
   CPDFSDK_FormFillEnvironment(UnderlyingDocumentType* pDoc,
                               FPDF_FORMFILLINFO* pFFinfo);
diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp
index f5779aa..bd9e540 100644
--- a/fpdfsdk/javascript/Document.cpp
+++ b/fpdfsdk/javascript/Document.cpp
@@ -887,8 +887,10 @@
     } else {
       std::list<std::unique_ptr<CJS_DelayData>> DelayDataToProcess;
       DelayDataToProcess.swap(m_DelayData);
-      for (const auto& pData : DelayDataToProcess)
-        Field::DoDelay(m_pDocument.Get(), pData.get());
+      for (const auto& pData : DelayDataToProcess) {
+        if (m_pDocument.Get())
+          Field::DoDelay(m_pDocument->GetEnv(), pData.get());
+      }
     }
   }
   return TRUE;
@@ -1721,8 +1723,10 @@
     }
   }
 
-  for (const auto& pData : DelayDataForFieldAndControlIndex)
-    Field::DoDelay(m_pDocument.Get(), pData.get());
+  for (const auto& pData : DelayDataForFieldAndControlIndex) {
+    if (m_pDocument.Get())
+      Field::DoDelay(m_pDocument->GetEnv(), pData.get());
+  }
 }
 
 CJS_Document* Document::GetCJSDoc() const {
diff --git a/fpdfsdk/javascript/Field.cpp b/fpdfsdk/javascript/Field.cpp
index 14e0692..51724c4 100644
--- a/fpdfsdk/javascript/Field.cpp
+++ b/fpdfsdk/javascript/Field.cpp
@@ -175,7 +175,7 @@
 Field::Field(CJS_Object* pJSObject)
     : CJS_EmbedObj(pJSObject),
       m_pJSDoc(nullptr),
-      m_pDocument(nullptr),
+      m_pFormFillEnv(nullptr),
       m_nFormControlIndex(-1),
       m_bCanSet(FALSE),
       m_bDelay(FALSE) {}
@@ -212,12 +212,14 @@
 FX_BOOL Field::AttachField(Document* pDocument,
                            const CFX_WideString& csFieldName) {
   m_pJSDoc = pDocument;
-  m_pDocument.Reset(pDocument->GetReaderDoc());
-  m_bCanSet = m_pDocument->GetPermissions(FPDFPERM_FILL_FORM) ||
-              m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
-              m_pDocument->GetPermissions(FPDFPERM_MODIFY);
+  m_pFormFillEnv.Reset(pDocument->GetReaderDoc()->GetEnv());
+  m_bCanSet =
+      m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_FILL_FORM) ||
+      m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_ANNOT_FORM) ||
+      m_pFormFillEnv->GetSDKDocument()->GetPermissions(FPDFPERM_MODIFY);
 
-  CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
+  CPDFSDK_InterForm* pRDInterForm =
+      m_pFormFillEnv->GetSDKDocument()->GetInterForm();
   CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
   CFX_WideString swFieldNameTemp = csFieldName;
   swFieldNameTemp.Replace(L"..", L".");
@@ -241,10 +243,11 @@
 }
 
 std::vector<CPDF_FormField*> Field::GetFormFields(
-    CPDFSDK_Document* pDocument,
+    CPDFSDK_FormFillEnvironment* pFormFillEnv,
     const CFX_WideString& csFieldName) {
   std::vector<CPDF_FormField*> fields;
-  CPDFSDK_InterForm* pReaderInterForm = pDocument->GetInterForm();
+  CPDFSDK_InterForm* pReaderInterForm =
+      pFormFillEnv->GetSDKDocument()->GetInterForm();
   CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
   for (int i = 0, sz = pInterForm->CountFields(csFieldName); i < sz; ++i) {
     if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName))
@@ -255,15 +258,16 @@
 
 std::vector<CPDF_FormField*> Field::GetFormFields(
     const CFX_WideString& csFieldName) const {
-  return Field::GetFormFields(m_pDocument.Get(), csFieldName);
+  return Field::GetFormFields(m_pFormFillEnv.Get(), csFieldName);
 }
 
-void Field::UpdateFormField(CPDFSDK_Document* pDocument,
+void Field::UpdateFormField(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                             CPDF_FormField* pFormField,
                             FX_BOOL bChangeMark,
                             FX_BOOL bResetAP,
                             FX_BOOL bRefresh) {
-  CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm();
+  CPDFSDK_InterForm* pInterForm =
+      pFormFillEnv->GetSDKDocument()->GetInterForm();
 
   if (bResetAP) {
     std::vector<CPDFSDK_Widget*> widgets;
@@ -307,17 +311,17 @@
   }
 
   if (bChangeMark)
-    pDocument->SetChangeMark();
+    pFormFillEnv->GetSDKDocument()->SetChangeMark();
 }
 
-void Field::UpdateFormControl(CPDFSDK_Document* pDocument,
+void Field::UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                               CPDF_FormControl* pFormControl,
                               FX_BOOL bChangeMark,
                               FX_BOOL bResetAP,
                               FX_BOOL bRefresh) {
   ASSERT(pFormControl);
 
-  CPDFSDK_InterForm* pForm = pDocument->GetInterForm();
+  CPDFSDK_InterForm* pForm = pFormFillEnv->GetSDKDocument()->GetInterForm();
   CPDFSDK_Widget* pWidget = pForm->GetWidget(pFormControl, false);
 
   if (pWidget) {
@@ -341,14 +345,14 @@
   }
 
   if (bChangeMark)
-    pDocument->SetChangeMark();
+    pFormFillEnv->GetSDKDocument()->SetChangeMark();
 }
 
-CPDFSDK_Widget* Field::GetWidget(CPDFSDK_Document* pDocument,
+CPDFSDK_Widget* Field::GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                  CPDF_FormControl* pFormControl,
                                  bool createIfNeeded) {
-  CPDFSDK_InterForm* pInterForm =
-      static_cast<CPDFSDK_InterForm*>(pDocument->GetInterForm());
+  CPDFSDK_InterForm* pInterForm = static_cast<CPDFSDK_InterForm*>(
+      pFormFillEnv->GetSDKDocument()->GetInterForm());
   return pInterForm ? pInterForm->GetWidget(pFormControl, createIfNeeded)
                     : nullptr;
 }
@@ -377,7 +381,7 @@
 FX_BOOL Field::alignment(IJS_Context* cc,
                          CJS_PropValue& vp,
                          CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -389,8 +393,8 @@
     if (m_bDelay) {
       AddDelay_String(FP_ALIGNMENT, alignStr);
     } else {
-      Field::SetAlignment(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
-                          alignStr);
+      Field::SetAlignment(m_pFormFillEnv.Get(), m_FieldName,
+                          m_nFormControlIndex, alignStr);
     }
   } else {
     std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
@@ -423,7 +427,7 @@
   return TRUE;
 }
 
-void Field::SetAlignment(CPDFSDK_Document* pDocument,
+void Field::SetAlignment(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                          const CFX_WideString& swFieldName,
                          int nControlIndex,
                          const CFX_ByteString& string) {
@@ -433,7 +437,7 @@
 FX_BOOL Field::borderStyle(IJS_Context* cc,
                            CJS_PropValue& vp,
                            CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -445,8 +449,8 @@
     if (m_bDelay) {
       AddDelay_String(FP_BORDERSTYLE, strType);
     } else {
-      Field::SetBorderStyle(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
-                            strType);
+      Field::SetBorderStyle(m_pFormFillEnv.Get(), m_FieldName,
+                            m_nFormControlIndex, strType);
     }
   } else {
     std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
@@ -457,8 +461,8 @@
     if (!pFormField)
       return FALSE;
 
-    CPDFSDK_Widget* pWidget =
-        GetWidget(m_pDocument.Get(), GetSmartFieldControl(pFormField), false);
+    CPDFSDK_Widget* pWidget = GetWidget(
+        m_pFormFillEnv.Get(), GetSmartFieldControl(pFormField), false);
     if (!pWidget)
       return FALSE;
 
@@ -487,11 +491,11 @@
   return TRUE;
 }
 
-void Field::SetBorderStyle(CPDFSDK_Document* pDocument,
+void Field::SetBorderStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                            const CFX_WideString& swFieldName,
                            int nControlIndex,
                            const CFX_ByteString& string) {
-  ASSERT(pDocument);
+  ASSERT(pFormFillEnv);
 
   BorderStyle nBorderStyle = BorderStyle::SOLID;
   if (string == "solid")
@@ -508,13 +512,13 @@
     return;
 
   std::vector<CPDF_FormField*> FieldArray =
-      GetFormFields(pDocument, swFieldName);
+      GetFormFields(pFormFillEnv, swFieldName);
   for (CPDF_FormField* pFormField : FieldArray) {
     if (nControlIndex < 0) {
       FX_BOOL bSet = FALSE;
       for (int i = 0, sz = pFormField->CountControls(); i < sz; ++i) {
         if (CPDFSDK_Widget* pWidget =
-                GetWidget(pDocument, pFormField->GetControl(i), false)) {
+                GetWidget(pFormFillEnv, pFormField->GetControl(i), false)) {
           if (pWidget->GetBorderStyle() != nBorderStyle) {
             pWidget->SetBorderStyle(nBorderStyle);
             bSet = TRUE;
@@ -522,17 +526,17 @@
         }
       }
       if (bSet)
-        UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
+        UpdateFormField(pFormFillEnv, pFormField, TRUE, TRUE, TRUE);
     } else {
       if (nControlIndex >= pFormField->CountControls())
         return;
       if (CPDF_FormControl* pFormControl =
               pFormField->GetControl(nControlIndex)) {
         if (CPDFSDK_Widget* pWidget =
-                GetWidget(pDocument, pFormControl, false)) {
+                GetWidget(pFormFillEnv, pFormControl, false)) {
           if (pWidget->GetBorderStyle() != nBorderStyle) {
             pWidget->SetBorderStyle(nBorderStyle);
-            UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
+            UpdateFormControl(pFormFillEnv, pFormControl, TRUE, TRUE, TRUE);
           }
         }
       }
@@ -543,7 +547,7 @@
 FX_BOOL Field::buttonAlignX(IJS_Context* cc,
                             CJS_PropValue& vp,
                             CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -555,7 +559,7 @@
     if (m_bDelay) {
       AddDelay_Int(FP_BUTTONALIGNX, nVP);
     } else {
-      Field::SetButtonAlignX(m_pDocument.Get(), m_FieldName,
+      Field::SetButtonAlignX(m_pFormFillEnv.Get(), m_FieldName,
                              m_nFormControlIndex, nVP);
     }
   } else {
@@ -582,7 +586,7 @@
   return TRUE;
 }
 
-void Field::SetButtonAlignX(CPDFSDK_Document* pDocument,
+void Field::SetButtonAlignX(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                             const CFX_WideString& swFieldName,
                             int nControlIndex,
                             int number) {
@@ -592,7 +596,7 @@
 FX_BOOL Field::buttonAlignY(IJS_Context* cc,
                             CJS_PropValue& vp,
                             CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -604,7 +608,7 @@
     if (m_bDelay) {
       AddDelay_Int(FP_BUTTONALIGNY, nVP);
     } else {
-      Field::SetButtonAlignY(m_pDocument.Get(), m_FieldName,
+      Field::SetButtonAlignY(m_pFormFillEnv.Get(), m_FieldName,
                              m_nFormControlIndex, nVP);
     }
   } else {
@@ -631,7 +635,7 @@
   return TRUE;
 }
 
-void Field::SetButtonAlignY(CPDFSDK_Document* pDocument,
+void Field::SetButtonAlignY(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                             const CFX_WideString& swFieldName,
                             int nControlIndex,
                             int number) {
@@ -641,7 +645,7 @@
 FX_BOOL Field::buttonFitBounds(IJS_Context* cc,
                                CJS_PropValue& vp,
                                CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -653,7 +657,7 @@
     if (m_bDelay) {
       AddDelay_Bool(FP_BUTTONFITBOUNDS, bVP);
     } else {
-      Field::SetButtonFitBounds(m_pDocument.Get(), m_FieldName,
+      Field::SetButtonFitBounds(m_pFormFillEnv.Get(), m_FieldName,
                                 m_nFormControlIndex, bVP);
     }
   } else {
@@ -675,7 +679,7 @@
   return TRUE;
 }
 
-void Field::SetButtonFitBounds(CPDFSDK_Document* pDocument,
+void Field::SetButtonFitBounds(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                const CFX_WideString& swFieldName,
                                int nControlIndex,
                                bool b) {
@@ -685,7 +689,7 @@
 FX_BOOL Field::buttonPosition(IJS_Context* cc,
                               CJS_PropValue& vp,
                               CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -697,7 +701,7 @@
     if (m_bDelay) {
       AddDelay_Int(FP_BUTTONPOSITION, nVP);
     } else {
-      Field::SetButtonPosition(m_pDocument.Get(), m_FieldName,
+      Field::SetButtonPosition(m_pFormFillEnv.Get(), m_FieldName,
                                m_nFormControlIndex, nVP);
     }
   } else {
@@ -718,7 +722,7 @@
   return TRUE;
 }
 
-void Field::SetButtonPosition(CPDFSDK_Document* pDocument,
+void Field::SetButtonPosition(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                               const CFX_WideString& swFieldName,
                               int nControlIndex,
                               int number) {
@@ -728,7 +732,7 @@
 FX_BOOL Field::buttonScaleHow(IJS_Context* cc,
                               CJS_PropValue& vp,
                               CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -740,7 +744,7 @@
     if (m_bDelay) {
       AddDelay_Int(FP_BUTTONSCALEHOW, nVP);
     } else {
-      Field::SetButtonScaleHow(m_pDocument.Get(), m_FieldName,
+      Field::SetButtonScaleHow(m_pFormFillEnv.Get(), m_FieldName,
                                m_nFormControlIndex, nVP);
     }
   } else {
@@ -766,7 +770,7 @@
   return TRUE;
 }
 
-void Field::SetButtonScaleHow(CPDFSDK_Document* pDocument,
+void Field::SetButtonScaleHow(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                               const CFX_WideString& swFieldName,
                               int nControlIndex,
                               int number) {
@@ -776,7 +780,7 @@
 FX_BOOL Field::buttonScaleWhen(IJS_Context* cc,
                                CJS_PropValue& vp,
                                CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -788,7 +792,7 @@
     if (m_bDelay) {
       AddDelay_Int(FP_BUTTONSCALEWHEN, nVP);
     } else {
-      Field::SetButtonScaleWhen(m_pDocument.Get(), m_FieldName,
+      Field::SetButtonScaleWhen(m_pFormFillEnv.Get(), m_FieldName,
                                 m_nFormControlIndex, nVP);
     }
   } else {
@@ -825,7 +829,7 @@
   return TRUE;
 }
 
-void Field::SetButtonScaleWhen(CPDFSDK_Document* pDocument,
+void Field::SetButtonScaleWhen(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                const CFX_WideString& swFieldName,
                                int nControlIndex,
                                int number) {
@@ -835,7 +839,7 @@
 FX_BOOL Field::calcOrderIndex(IJS_Context* cc,
                               CJS_PropValue& vp,
                               CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -847,7 +851,7 @@
     if (m_bDelay) {
       AddDelay_Int(FP_CALCORDERINDEX, nVP);
     } else {
-      Field::SetCalcOrderIndex(m_pDocument.Get(), m_FieldName,
+      Field::SetCalcOrderIndex(m_pFormFillEnv.Get(), m_FieldName,
                                m_nFormControlIndex, nVP);
     }
   } else {
@@ -861,7 +865,8 @@
       return FALSE;
     }
 
-    CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
+    CPDFSDK_InterForm* pRDInterForm =
+        m_pFormFillEnv->GetSDKDocument()->GetInterForm();
     CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
     vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField);
   }
@@ -869,7 +874,7 @@
   return TRUE;
 }
 
-void Field::SetCalcOrderIndex(CPDFSDK_Document* pDocument,
+void Field::SetCalcOrderIndex(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                               const CFX_WideString& swFieldName,
                               int nControlIndex,
                               int number) {
@@ -879,7 +884,7 @@
 FX_BOOL Field::charLimit(IJS_Context* cc,
                          CJS_PropValue& vp,
                          CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -891,8 +896,8 @@
     if (m_bDelay) {
       AddDelay_Int(FP_CHARLIMIT, nVP);
     } else {
-      Field::SetCharLimit(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
-                          nVP);
+      Field::SetCharLimit(m_pFormFillEnv.Get(), m_FieldName,
+                          m_nFormControlIndex, nVP);
     }
   } else {
     std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
@@ -908,7 +913,7 @@
   return TRUE;
 }
 
-void Field::SetCharLimit(CPDFSDK_Document* pDocument,
+void Field::SetCharLimit(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                          const CFX_WideString& swFieldName,
                          int nControlIndex,
                          int number) {
@@ -918,7 +923,7 @@
 FX_BOOL Field::comb(IJS_Context* cc,
                     CJS_PropValue& vp,
                     CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -930,7 +935,8 @@
     if (m_bDelay) {
       AddDelay_Bool(FP_COMB, bVP);
     } else {
-      Field::SetComb(m_pDocument.Get(), m_FieldName, m_nFormControlIndex, bVP);
+      Field::SetComb(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
+                     bVP);
     }
   } else {
     std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
@@ -950,7 +956,7 @@
   return TRUE;
 }
 
-void Field::SetComb(CPDFSDK_Document* pDocument,
+void Field::SetComb(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                     const CFX_WideString& swFieldName,
                     int nControlIndex,
                     bool b) {
@@ -960,7 +966,7 @@
 FX_BOOL Field::commitOnSelChange(IJS_Context* cc,
                                  CJS_PropValue& vp,
                                  CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -972,7 +978,7 @@
     if (m_bDelay) {
       AddDelay_Bool(FP_COMMITONSELCHANGE, bVP);
     } else {
-      Field::SetCommitOnSelChange(m_pDocument.Get(), m_FieldName,
+      Field::SetCommitOnSelChange(m_pFormFillEnv.Get(), m_FieldName,
                                   m_nFormControlIndex, bVP);
     }
   } else {
@@ -995,7 +1001,7 @@
   return TRUE;
 }
 
-void Field::SetCommitOnSelChange(CPDFSDK_Document* pDocument,
+void Field::SetCommitOnSelChange(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                  const CFX_WideString& swFieldName,
                                  int nControlIndex,
                                  bool b) {
@@ -1031,7 +1037,7 @@
     if (m_bDelay) {
       AddDelay_WordArray(FP_CURRENTVALUEINDICES, array);
     } else {
-      Field::SetCurrentValueIndices(m_pDocument.Get(), m_FieldName,
+      Field::SetCurrentValueIndices(m_pFormFillEnv.Get(), m_FieldName,
                                     m_nFormControlIndex, array);
     }
   } else {
@@ -1062,13 +1068,13 @@
   return TRUE;
 }
 
-void Field::SetCurrentValueIndices(CPDFSDK_Document* pDocument,
+void Field::SetCurrentValueIndices(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                    const CFX_WideString& swFieldName,
                                    int nControlIndex,
                                    const std::vector<uint32_t>& array) {
-  ASSERT(pDocument);
+  ASSERT(pFormFillEnv);
   std::vector<CPDF_FormField*> FieldArray =
-      GetFormFields(pDocument, swFieldName);
+      GetFormFields(pFormFillEnv, swFieldName);
 
   for (CPDF_FormField* pFormField : FieldArray) {
     int nFieldType = pFormField->GetFieldType();
@@ -1083,7 +1089,7 @@
           pFormField->SetItemSelection(array[i], TRUE);
         }
       }
-      UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
+      UpdateFormField(pFormFillEnv, pFormField, TRUE, TRUE, TRUE);
     }
   }
 }
@@ -1094,7 +1100,7 @@
   return FALSE;
 }
 
-void Field::SetDefaultStyle(CPDFSDK_Document* pDocument,
+void Field::SetDefaultStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                             const CFX_WideString& swFieldName,
                             int nControlIndex) {
   // Not supported.
@@ -1103,7 +1109,7 @@
 FX_BOOL Field::defaultValue(IJS_Context* cc,
                             CJS_PropValue& vp,
                             CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -1115,7 +1121,7 @@
     if (m_bDelay) {
       AddDelay_WideString(FP_DEFAULTVALUE, WideStr);
     } else {
-      Field::SetDefaultValue(m_pDocument.Get(), m_FieldName,
+      Field::SetDefaultValue(m_pFormFillEnv.Get(), m_FieldName,
                              m_nFormControlIndex, WideStr);
     }
   } else {
@@ -1134,7 +1140,7 @@
   return TRUE;
 }
 
-void Field::SetDefaultValue(CPDFSDK_Document* pDocument,
+void Field::SetDefaultValue(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                             const CFX_WideString& swFieldName,
                             int nControlIndex,
                             const CFX_WideString& string) {
@@ -1144,7 +1150,7 @@
 FX_BOOL Field::doNotScroll(IJS_Context* cc,
                            CJS_PropValue& vp,
                            CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -1156,8 +1162,8 @@
     if (m_bDelay) {
       AddDelay_Bool(FP_DONOTSCROLL, bVP);
     } else {
-      Field::SetDoNotScroll(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
-                            bVP);
+      Field::SetDoNotScroll(m_pFormFillEnv.Get(), m_FieldName,
+                            m_nFormControlIndex, bVP);
     }
   } else {
     std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
@@ -1177,7 +1183,7 @@
   return TRUE;
 }
 
-void Field::SetDoNotScroll(CPDFSDK_Document* pDocument,
+void Field::SetDoNotScroll(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                            const CFX_WideString& swFieldName,
                            int nControlIndex,
                            bool b) {
@@ -1187,7 +1193,7 @@
 FX_BOOL Field::doNotSpellCheck(IJS_Context* cc,
                                CJS_PropValue& vp,
                                CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -1254,7 +1260,7 @@
     if (m_bDelay) {
       AddDelay_Int(FP_DISPLAY, nVP);
     } else {
-      Field::SetDisplay(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
+      Field::SetDisplay(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
                         nVP);
     }
   } else {
@@ -1264,7 +1270,8 @@
 
     CPDF_FormField* pFormField = FieldArray[0];
     ASSERT(pFormField);
-    CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
+    CPDFSDK_InterForm* pInterForm =
+        m_pFormFillEnv->GetSDKDocument()->GetInterForm();
     CPDFSDK_Widget* pWidget =
         pInterForm->GetWidget(GetSmartFieldControl(pFormField), true);
     if (!pWidget)
@@ -1290,13 +1297,14 @@
   return TRUE;
 }
 
-void Field::SetDisplay(CPDFSDK_Document* pDocument,
+void Field::SetDisplay(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                        const CFX_WideString& swFieldName,
                        int nControlIndex,
                        int number) {
-  CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm();
+  CPDFSDK_InterForm* pInterForm =
+      pFormFillEnv->GetSDKDocument()->GetInterForm();
   std::vector<CPDF_FormField*> FieldArray =
-      GetFormFields(pDocument, swFieldName);
+      GetFormFields(pFormFillEnv, swFieldName);
   for (CPDF_FormField* pFormField : FieldArray) {
     if (nControlIndex < 0) {
       bool bAnySet = false;
@@ -1310,7 +1318,7 @@
       }
 
       if (bAnySet)
-        UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
+        UpdateFormField(pFormFillEnv, pFormField, TRUE, FALSE, TRUE);
     } else {
       if (nControlIndex >= pFormField->CountControls())
         return;
@@ -1321,7 +1329,7 @@
 
       CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl, true);
       if (SetWidgetDisplayStatus(pWidget, number))
-        UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE);
+        UpdateFormControl(pFormFillEnv, pFormControl, TRUE, FALSE, TRUE);
     }
   }
 }
@@ -1457,8 +1465,8 @@
     if (m_bDelay) {
       AddDelay_Color(FP_FILLCOLOR, color);
     } else {
-      Field::SetFillColor(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
-                          color);
+      Field::SetFillColor(m_pFormFillEnv.Get(), m_FieldName,
+                          m_nFormControlIndex, color);
     }
   } else {
     CPDF_FormField* pFormField = FieldArray[0];
@@ -1498,7 +1506,7 @@
   return TRUE;
 }
 
-void Field::SetFillColor(CPDFSDK_Document* pDocument,
+void Field::SetFillColor(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                          const CFX_WideString& swFieldName,
                          int nControlIndex,
                          const CPWL_Color& color) {
@@ -1518,7 +1526,7 @@
     if (m_bDelay) {
       AddDelay_Bool(FP_HIDDEN, bVP);
     } else {
-      Field::SetHidden(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
+      Field::SetHidden(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
                        bVP);
     }
   } else {
@@ -1528,7 +1536,8 @@
 
     CPDF_FormField* pFormField = FieldArray[0];
     ASSERT(pFormField);
-    CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
+    CPDFSDK_InterForm* pInterForm =
+        m_pFormFillEnv->GetSDKDocument()->GetInterForm();
     CPDFSDK_Widget* pWidget =
         pInterForm->GetWidget(GetSmartFieldControl(pFormField), false);
     if (!pWidget)
@@ -1545,18 +1554,18 @@
   return TRUE;
 }
 
-void Field::SetHidden(CPDFSDK_Document* pDocument,
+void Field::SetHidden(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                       const CFX_WideString& swFieldName,
                       int nControlIndex,
                       bool b) {
   int display = b ? 1 /*Hidden*/ : 0 /*Visible*/;
-  SetDisplay(pDocument, swFieldName, nControlIndex, display);
+  SetDisplay(pFormFillEnv, swFieldName, nControlIndex, display);
 }
 
 FX_BOOL Field::highlight(IJS_Context* cc,
                          CJS_PropValue& vp,
                          CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -1568,8 +1577,8 @@
     if (m_bDelay) {
       AddDelay_String(FP_HIGHLIGHT, strMode);
     } else {
-      Field::SetHighlight(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
-                          strMode);
+      Field::SetHighlight(m_pFormFillEnv.Get(), m_FieldName,
+                          m_nFormControlIndex, strMode);
     }
   } else {
     std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
@@ -1607,7 +1616,7 @@
   return TRUE;
 }
 
-void Field::SetHighlight(CPDFSDK_Document* pDocument,
+void Field::SetHighlight(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                          const CFX_WideString& swFieldName,
                          int nControlIndex,
                          const CFX_ByteString& string) {
@@ -1627,8 +1636,8 @@
     if (m_bDelay) {
       AddDelay_Int(FP_LINEWIDTH, iWidth);
     } else {
-      Field::SetLineWidth(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
-                          iWidth);
+      Field::SetLineWidth(m_pFormFillEnv.Get(), m_FieldName,
+                          m_nFormControlIndex, iWidth);
     }
   } else {
     std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
@@ -1641,7 +1650,8 @@
     if (!pFormControl)
       return FALSE;
 
-    CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
+    CPDFSDK_InterForm* pInterForm =
+        m_pFormFillEnv->GetSDKDocument()->GetInterForm();
     if (!pFormField->CountControls())
       return FALSE;
 
@@ -1656,13 +1666,14 @@
   return TRUE;
 }
 
-void Field::SetLineWidth(CPDFSDK_Document* pDocument,
+void Field::SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                          const CFX_WideString& swFieldName,
                          int nControlIndex,
                          int number) {
-  CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm();
+  CPDFSDK_InterForm* pInterForm =
+      pFormFillEnv->GetSDKDocument()->GetInterForm();
   std::vector<CPDF_FormField*> FieldArray =
-      GetFormFields(pDocument, swFieldName);
+      GetFormFields(pFormFillEnv, swFieldName);
   for (CPDF_FormField* pFormField : FieldArray) {
     if (nControlIndex < 0) {
       FX_BOOL bSet = FALSE;
@@ -1679,7 +1690,7 @@
         }
       }
       if (bSet)
-        UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
+        UpdateFormField(pFormFillEnv, pFormField, TRUE, TRUE, TRUE);
     } else {
       if (nControlIndex >= pFormField->CountControls())
         return;
@@ -1689,7 +1700,7 @@
                 pInterForm->GetWidget(pFormControl, false)) {
           if (number != pWidget->GetBorderWidth()) {
             pWidget->SetBorderWidth(number);
-            UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
+            UpdateFormControl(pFormFillEnv, pFormControl, TRUE, TRUE, TRUE);
           }
         }
       }
@@ -1700,7 +1711,7 @@
 FX_BOOL Field::multiline(IJS_Context* cc,
                          CJS_PropValue& vp,
                          CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -1712,8 +1723,8 @@
     if (m_bDelay) {
       AddDelay_Bool(FP_MULTILINE, bVP);
     } else {
-      Field::SetMultiline(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
-                          bVP);
+      Field::SetMultiline(m_pFormFillEnv.Get(), m_FieldName,
+                          m_nFormControlIndex, bVP);
     }
   } else {
     std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
@@ -1733,7 +1744,7 @@
   return TRUE;
 }
 
-void Field::SetMultiline(CPDFSDK_Document* pDocument,
+void Field::SetMultiline(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                          const CFX_WideString& swFieldName,
                          int nControlIndex,
                          bool b) {
@@ -1743,7 +1754,7 @@
 FX_BOOL Field::multipleSelection(IJS_Context* cc,
                                  CJS_PropValue& vp,
                                  CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -1755,7 +1766,7 @@
     if (m_bDelay) {
       AddDelay_Bool(FP_MULTIPLESELECTION, bVP);
     } else {
-      Field::SetMultipleSelection(m_pDocument.Get(), m_FieldName,
+      Field::SetMultipleSelection(m_pFormFillEnv.Get(), m_FieldName,
                                   m_nFormControlIndex, bVP);
     }
   } else {
@@ -1776,7 +1787,7 @@
   return TRUE;
 }
 
-void Field::SetMultipleSelection(CPDFSDK_Document* pDocument,
+void Field::SetMultipleSelection(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                  const CFX_WideString& swFieldName,
                                  int nControlIndex,
                                  bool b) {
@@ -1833,7 +1844,8 @@
     return FALSE;
 
   std::vector<CPDFSDK_Widget*> widgets;
-  m_pDocument->GetInterForm()->GetWidgets(pFormField, &widgets);
+  m_pFormFillEnv->GetSDKDocument()->GetInterForm()->GetWidgets(pFormField,
+                                                               &widgets);
 
   if (widgets.empty()) {
     vp << (int32_t)-1;
@@ -1858,7 +1870,7 @@
 FX_BOOL Field::password(IJS_Context* cc,
                         CJS_PropValue& vp,
                         CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -1870,7 +1882,7 @@
     if (m_bDelay) {
       AddDelay_Bool(FP_PASSWORD, bVP);
     } else {
-      Field::SetPassword(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
+      Field::SetPassword(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
                          bVP);
     }
   } else {
@@ -1891,7 +1903,7 @@
   return TRUE;
 }
 
-void Field::SetPassword(CPDFSDK_Document* pDocument,
+void Field::SetPassword(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                         const CFX_WideString& swFieldName,
                         int nControlIndex,
                         bool b) {
@@ -1901,7 +1913,8 @@
 FX_BOOL Field::print(IJS_Context* cc,
                      CJS_PropValue& vp,
                      CFX_WideString& sError) {
-  CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
+  CPDFSDK_InterForm* pInterForm =
+      m_pFormFillEnv->GetSDKDocument()->GetInterForm();
   std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
   if (FieldArray.empty())
     return FALSE;
@@ -1933,7 +1946,7 @@
         }
 
         if (bSet)
-          UpdateFormField(m_pDocument.Get(), pFormField, TRUE, FALSE, TRUE);
+          UpdateFormField(m_pFormFillEnv.Get(), pFormField, TRUE, FALSE, TRUE);
       } else {
         if (m_nFormControlIndex >= pFormField->CountControls())
           return FALSE;
@@ -1949,7 +1962,7 @@
 
             if (dwFlags != pWidget->GetFlags()) {
               pWidget->SetFlags(dwFlags);
-              UpdateFormControl(m_pDocument.Get(),
+              UpdateFormControl(m_pFormFillEnv.Get(),
                                 pFormField->GetControl(m_nFormControlIndex),
                                 TRUE, FALSE, TRUE);
             }
@@ -2058,7 +2071,7 @@
     if (m_bDelay) {
       AddDelay_Rect(FP_RECT, crRect);
     } else {
-      Field::SetRect(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
+      Field::SetRect(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
                      crRect);
     }
   } else {
@@ -2067,7 +2080,8 @@
       return FALSE;
 
     CPDF_FormField* pFormField = FieldArray[0];
-    CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
+    CPDFSDK_InterForm* pInterForm =
+        m_pFormFillEnv->GetSDKDocument()->GetInterForm();
     CPDFSDK_Widget* pWidget =
         pInterForm->GetWidget(GetSmartFieldControl(pFormField), true);
     if (!pWidget)
@@ -2089,13 +2103,14 @@
   return TRUE;
 }
 
-void Field::SetRect(CPDFSDK_Document* pDocument,
+void Field::SetRect(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                     const CFX_WideString& swFieldName,
                     int nControlIndex,
                     const CFX_FloatRect& rect) {
-  CPDFSDK_InterForm* pInterForm = pDocument->GetInterForm();
+  CPDFSDK_InterForm* pInterForm =
+      pFormFillEnv->GetSDKDocument()->GetInterForm();
   std::vector<CPDF_FormField*> FieldArray =
-      GetFormFields(pDocument, swFieldName);
+      GetFormFields(pFormFillEnv, swFieldName);
   for (CPDF_FormField* pFormField : FieldArray) {
     if (nControlIndex < 0) {
       FX_BOOL bSet = FALSE;
@@ -2122,7 +2137,7 @@
       }
 
       if (bSet)
-        UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
+        UpdateFormField(pFormFillEnv, pFormField, TRUE, TRUE, TRUE);
     } else {
       if (nControlIndex >= pFormField->CountControls())
         return;
@@ -2140,7 +2155,7 @@
             if (crRect.left != rcOld.left || crRect.right != rcOld.right ||
                 crRect.top != rcOld.top || crRect.bottom != rcOld.bottom) {
               pWidget->SetRect(crRect);
-              UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
+              UpdateFormControl(pFormFillEnv, pFormControl, TRUE, TRUE, TRUE);
             }
           }
         }
@@ -2180,7 +2195,7 @@
 FX_BOOL Field::richText(IJS_Context* cc,
                         CJS_PropValue& vp,
                         CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -2219,7 +2234,7 @@
 FX_BOOL Field::rotation(IJS_Context* cc,
                         CJS_PropValue& vp,
                         CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -2231,7 +2246,7 @@
     if (m_bDelay) {
       AddDelay_Int(FP_ROTATION, nVP);
     } else {
-      Field::SetRotation(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
+      Field::SetRotation(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
                          nVP);
     }
   } else {
@@ -2250,7 +2265,7 @@
   return TRUE;
 }
 
-void Field::SetRotation(CPDFSDK_Document* pDocument,
+void Field::SetRotation(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                         const CFX_WideString& swFieldName,
                         int nControlIndex,
                         int number) {
@@ -2278,8 +2293,8 @@
     if (m_bDelay) {
       AddDelay_Color(FP_STROKECOLOR, color);
     } else {
-      Field::SetStrokeColor(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
-                            color);
+      Field::SetStrokeColor(m_pFormFillEnv.Get(), m_FieldName,
+                            m_nFormControlIndex, color);
     }
   } else {
     std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
@@ -2320,7 +2335,7 @@
   return TRUE;
 }
 
-void Field::SetStrokeColor(CPDFSDK_Document* pDocument,
+void Field::SetStrokeColor(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                            const CFX_WideString& swFieldName,
                            int nControlIndex,
                            const CPWL_Color& color) {
@@ -2330,7 +2345,7 @@
 FX_BOOL Field::style(IJS_Context* cc,
                      CJS_PropValue& vp,
                      CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -2342,7 +2357,7 @@
     if (m_bDelay) {
       AddDelay_String(FP_STYLE, csBCaption);
     } else {
-      Field::SetStyle(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
+      Field::SetStyle(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
                       csBCaption);
     }
   } else {
@@ -2389,7 +2404,7 @@
   return TRUE;
 }
 
-void Field::SetStyle(CPDFSDK_Document* pDocument,
+void Field::SetStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                      const CFX_WideString& swFieldName,
                      int nControlIndex,
                      const CFX_ByteString& string) {
@@ -2423,8 +2438,8 @@
     if (m_bDelay) {
       AddDelay_Color(FP_TEXTCOLOR, color);
     } else {
-      Field::SetTextColor(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
-                          color);
+      Field::SetTextColor(m_pFormFillEnv.Get(), m_FieldName,
+                          m_nFormControlIndex, color);
     }
   } else {
     std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
@@ -2456,7 +2471,7 @@
   return TRUE;
 }
 
-void Field::SetTextColor(CPDFSDK_Document* pDocument,
+void Field::SetTextColor(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                          const CFX_WideString& swFieldName,
                          int nControlIndex,
                          const CPWL_Color& color) {
@@ -2466,7 +2481,7 @@
 FX_BOOL Field::textFont(IJS_Context* cc,
                         CJS_PropValue& vp,
                         CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -2480,7 +2495,7 @@
     if (m_bDelay) {
       AddDelay_String(FP_TEXTFONT, csFontName);
     } else {
-      Field::SetTextFont(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
+      Field::SetTextFont(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
                          csFontName);
     }
   } else {
@@ -2512,7 +2527,7 @@
   return TRUE;
 }
 
-void Field::SetTextFont(CPDFSDK_Document* pDocument,
+void Field::SetTextFont(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                         const CFX_WideString& swFieldName,
                         int nControlIndex,
                         const CFX_ByteString& string) {
@@ -2522,7 +2537,7 @@
 FX_BOOL Field::textSize(IJS_Context* cc,
                         CJS_PropValue& vp,
                         CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -2534,7 +2549,7 @@
     if (m_bDelay) {
       AddDelay_Int(FP_TEXTSIZE, nVP);
     } else {
-      Field::SetTextSize(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
+      Field::SetTextSize(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
                          nVP);
     }
   } else {
@@ -2561,7 +2576,7 @@
   return TRUE;
 }
 
-void Field::SetTextSize(CPDFSDK_Document* pDocument,
+void Field::SetTextSize(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                         const CFX_WideString& swFieldName,
                         int nControlIndex,
                         int number) {
@@ -2615,7 +2630,7 @@
 FX_BOOL Field::userName(IJS_Context* cc,
                         CJS_PropValue& vp,
                         CFX_WideString& sError) {
-  ASSERT(m_pDocument);
+  ASSERT(m_pFormFillEnv);
 
   if (vp.IsSetting()) {
     if (!m_bCanSet)
@@ -2627,7 +2642,7 @@
     if (m_bDelay) {
       AddDelay_WideString(FP_USERNAME, swName);
     } else {
-      Field::SetUserName(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
+      Field::SetUserName(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
                          swName);
     }
   } else {
@@ -2642,7 +2657,7 @@
   return TRUE;
 }
 
-void Field::SetUserName(CPDFSDK_Document* pDocument,
+void Field::SetUserName(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                         const CFX_WideString& swFieldName,
                         int nControlIndex,
                         const CFX_WideString& string) {
@@ -2676,7 +2691,7 @@
     if (m_bDelay) {
       AddDelay_WideStringArray(FP_VALUE, strArray);
     } else {
-      Field::SetValue(m_pDocument.Get(), m_FieldName, m_nFormControlIndex,
+      Field::SetValue(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex,
                       strArray);
     }
   } else {
@@ -2735,16 +2750,16 @@
   return TRUE;
 }
 
-void Field::SetValue(CPDFSDK_Document* pDocument,
+void Field::SetValue(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                      const CFX_WideString& swFieldName,
                      int nControlIndex,
                      const std::vector<CFX_WideString>& strArray) {
-  ASSERT(pDocument);
+  ASSERT(pFormFillEnv);
   if (strArray.empty())
     return;
 
   std::vector<CPDF_FormField*> FieldArray =
-      GetFormFields(pDocument, swFieldName);
+      GetFormFields(pFormFillEnv, swFieldName);
 
   for (CPDF_FormField* pFormField : FieldArray) {
     if (pFormField->GetFullName().Compare(swFieldName) != 0)
@@ -2755,14 +2770,14 @@
       case FIELDTYPE_COMBOBOX:
         if (pFormField->GetValue() != strArray[0]) {
           pFormField->SetValue(strArray[0], TRUE);
-          UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
+          UpdateFormField(pFormFillEnv, pFormField, TRUE, FALSE, TRUE);
         }
         break;
       case FIELDTYPE_CHECKBOX:
       case FIELDTYPE_RADIOBUTTON: {
         if (pFormField->GetValue() != strArray[0]) {
           pFormField->SetValue(strArray[0], TRUE);
-          UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
+          UpdateFormField(pFormFillEnv, pFormField, TRUE, FALSE, TRUE);
         }
       } break;
       case FIELDTYPE_LISTBOX: {
@@ -2780,7 +2795,7 @@
             if (!pFormField->IsItemSelected(index))
               pFormField->SetItemSelection(index, TRUE, TRUE);
           }
-          UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
+          UpdateFormField(pFormFillEnv, pFormField, TRUE, FALSE, TRUE);
         }
       } break;
       default:
@@ -2840,13 +2855,12 @@
     return FALSE;
 
   CPDF_FormField* pFormField = FieldArray[0];
-  CPDFSDK_FormFillEnvironment* pApp = m_pDocument->GetEnv();
   if ((pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT) &&
       (pFormField->GetFieldType() == FIELDTYPE_TEXTFIELD)) {
-    CFX_WideString wsFileName = pApp->JS_fieldBrowse();
+    CFX_WideString wsFileName = m_pFormFillEnv->JS_fieldBrowse();
     if (!wsFileName.IsEmpty()) {
       pFormField->SetValue(wsFileName);
-      UpdateFormField(m_pDocument.Get(), pFormField, TRUE, TRUE, TRUE);
+      UpdateFormField(m_pFormFillEnv.Get(), pFormField, TRUE, TRUE, TRUE);
     }
     return TRUE;
   }
@@ -2990,7 +3004,7 @@
   else
     pFormField->CheckControl(nWidget, bCheckit, true);
 
-  UpdateFormField(m_pDocument.Get(), pFormField, TRUE, TRUE, TRUE);
+  UpdateFormField(m_pFormFillEnv.Get(), pFormField, TRUE, TRUE, TRUE);
   return TRUE;
 }
 
@@ -3202,18 +3216,19 @@
   if (nCount < 1)
     return FALSE;
 
-  CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
+  CPDFSDK_InterForm* pInterForm =
+      m_pFormFillEnv->GetSDKDocument()->GetInterForm();
   CPDFSDK_Widget* pWidget = nullptr;
   if (nCount == 1) {
     pWidget = pInterForm->GetWidget(pFormField->GetControl(0), false);
   } else {
-    CPDFSDK_FormFillEnvironment* pEnv = m_pDocument->GetEnv();
-    UnderlyingPageType* pPage = UnderlyingFromFPDFPage(
-        pEnv->GetCurrentPage(m_pDocument->GetUnderlyingDocument()));
+    UnderlyingPageType* pPage =
+        UnderlyingFromFPDFPage(m_pFormFillEnv->GetCurrentPage(
+            m_pFormFillEnv->GetUnderlyingDocument()));
     if (!pPage)
       return FALSE;
     if (CPDFSDK_PageView* pCurPageView =
-            m_pDocument->GetPageView(pPage, true)) {
+            m_pFormFillEnv->GetSDKDocument()->GetPageView(pPage, true)) {
       for (int32_t i = 0; i < nCount; i++) {
         if (CPDFSDK_Widget* pTempWidget =
                 pInterForm->GetWidget(pFormField->GetControl(i), false)) {
@@ -3228,7 +3243,7 @@
 
   if (pWidget) {
     CPDFSDK_Annot::ObservedPtr pObserved(pWidget);
-    m_pDocument->SetFocusAnnot(&pObserved);
+    m_pFormFillEnv->GetSDKDocument()->SetFocusAnnot(&pObserved);
   }
 
   return TRUE;
@@ -3358,103 +3373,104 @@
   m_pJSDoc->AddDelayData(pNewData);
 }
 
-void Field::DoDelay(CPDFSDK_Document* pDocument, CJS_DelayData* pData) {
-  ASSERT(pDocument);
+void Field::DoDelay(CPDFSDK_FormFillEnvironment* pFormFillEnv,
+                    CJS_DelayData* pData) {
+  ASSERT(pFormFillEnv);
   switch (pData->eProp) {
     case FP_ALIGNMENT:
-      Field::SetAlignment(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetAlignment(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                           pData->string);
       break;
     case FP_BORDERSTYLE:
-      Field::SetBorderStyle(pDocument, pData->sFieldName, pData->nControlIndex,
-                            pData->string);
+      Field::SetBorderStyle(pFormFillEnv, pData->sFieldName,
+                            pData->nControlIndex, pData->string);
       break;
     case FP_BUTTONALIGNX:
-      Field::SetButtonAlignX(pDocument, pData->sFieldName, pData->nControlIndex,
-                             pData->num);
+      Field::SetButtonAlignX(pFormFillEnv, pData->sFieldName,
+                             pData->nControlIndex, pData->num);
       break;
     case FP_BUTTONALIGNY:
-      Field::SetButtonAlignY(pDocument, pData->sFieldName, pData->nControlIndex,
-                             pData->num);
+      Field::SetButtonAlignY(pFormFillEnv, pData->sFieldName,
+                             pData->nControlIndex, pData->num);
       break;
     case FP_BUTTONFITBOUNDS:
-      Field::SetButtonFitBounds(pDocument, pData->sFieldName,
+      Field::SetButtonFitBounds(pFormFillEnv, pData->sFieldName,
                                 pData->nControlIndex, pData->b);
       break;
     case FP_BUTTONPOSITION:
-      Field::SetButtonPosition(pDocument, pData->sFieldName,
+      Field::SetButtonPosition(pFormFillEnv, pData->sFieldName,
                                pData->nControlIndex, pData->num);
       break;
     case FP_BUTTONSCALEHOW:
-      Field::SetButtonScaleHow(pDocument, pData->sFieldName,
+      Field::SetButtonScaleHow(pFormFillEnv, pData->sFieldName,
                                pData->nControlIndex, pData->num);
       break;
     case FP_BUTTONSCALEWHEN:
-      Field::SetButtonScaleWhen(pDocument, pData->sFieldName,
+      Field::SetButtonScaleWhen(pFormFillEnv, pData->sFieldName,
                                 pData->nControlIndex, pData->num);
       break;
     case FP_CALCORDERINDEX:
-      Field::SetCalcOrderIndex(pDocument, pData->sFieldName,
+      Field::SetCalcOrderIndex(pFormFillEnv, pData->sFieldName,
                                pData->nControlIndex, pData->num);
       break;
     case FP_CHARLIMIT:
-      Field::SetCharLimit(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetCharLimit(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                           pData->num);
       break;
     case FP_COMB:
-      Field::SetComb(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetComb(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                      pData->b);
       break;
     case FP_COMMITONSELCHANGE:
-      Field::SetCommitOnSelChange(pDocument, pData->sFieldName,
+      Field::SetCommitOnSelChange(pFormFillEnv, pData->sFieldName,
                                   pData->nControlIndex, pData->b);
       break;
     case FP_CURRENTVALUEINDICES:
-      Field::SetCurrentValueIndices(pDocument, pData->sFieldName,
+      Field::SetCurrentValueIndices(pFormFillEnv, pData->sFieldName,
                                     pData->nControlIndex, pData->wordarray);
       break;
     case FP_DEFAULTVALUE:
-      Field::SetDefaultValue(pDocument, pData->sFieldName, pData->nControlIndex,
-                             pData->widestring);
+      Field::SetDefaultValue(pFormFillEnv, pData->sFieldName,
+                             pData->nControlIndex, pData->widestring);
       break;
     case FP_DONOTSCROLL:
-      Field::SetDoNotScroll(pDocument, pData->sFieldName, pData->nControlIndex,
-                            pData->b);
+      Field::SetDoNotScroll(pFormFillEnv, pData->sFieldName,
+                            pData->nControlIndex, pData->b);
       break;
     case FP_DISPLAY:
-      Field::SetDisplay(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetDisplay(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                         pData->num);
       break;
     case FP_FILLCOLOR:
-      Field::SetFillColor(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetFillColor(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                           pData->color);
       break;
     case FP_HIDDEN:
-      Field::SetHidden(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetHidden(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                        pData->b);
       break;
     case FP_HIGHLIGHT:
-      Field::SetHighlight(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetHighlight(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                           pData->string);
       break;
     case FP_LINEWIDTH:
-      Field::SetLineWidth(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetLineWidth(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                           pData->num);
       break;
     case FP_MULTILINE:
-      Field::SetMultiline(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetMultiline(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                           pData->b);
       break;
     case FP_MULTIPLESELECTION:
-      Field::SetMultipleSelection(pDocument, pData->sFieldName,
+      Field::SetMultipleSelection(pFormFillEnv, pData->sFieldName,
                                   pData->nControlIndex, pData->b);
       break;
     case FP_PASSWORD:
-      Field::SetPassword(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetPassword(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                          pData->b);
       break;
     case FP_RECT:
-      Field::SetRect(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetRect(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                      pData->rect);
       break;
     case FP_RICHTEXT:
@@ -3463,41 +3479,41 @@
     case FP_RICHVALUE:
       break;
     case FP_ROTATION:
-      Field::SetRotation(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetRotation(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                          pData->num);
       break;
     case FP_STROKECOLOR:
-      Field::SetStrokeColor(pDocument, pData->sFieldName, pData->nControlIndex,
-                            pData->color);
+      Field::SetStrokeColor(pFormFillEnv, pData->sFieldName,
+                            pData->nControlIndex, pData->color);
       break;
     case FP_STYLE:
-      Field::SetStyle(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetStyle(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                       pData->string);
       break;
     case FP_TEXTCOLOR:
-      Field::SetTextColor(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetTextColor(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                           pData->color);
       break;
     case FP_TEXTFONT:
-      Field::SetTextFont(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetTextFont(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                          pData->string);
       break;
     case FP_TEXTSIZE:
-      Field::SetTextSize(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetTextSize(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                          pData->num);
       break;
     case FP_USERNAME:
-      Field::SetUserName(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetUserName(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                          pData->widestring);
       break;
     case FP_VALUE:
-      Field::SetValue(pDocument, pData->sFieldName, pData->nControlIndex,
+      Field::SetValue(pFormFillEnv, pData->sFieldName, pData->nControlIndex,
                       pData->widestringarray);
       break;
   }
 }
 
-void Field::AddField(CPDFSDK_Document* pDocument,
+void Field::AddField(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                      int nPageIndex,
                      int nFieldType,
                      const CFX_WideString& sName,
diff --git a/fpdfsdk/javascript/Field.h b/fpdfsdk/javascript/Field.h
index 7d1867c..cdff091 100644
--- a/fpdfsdk/javascript/Field.h
+++ b/fpdfsdk/javascript/Field.h
@@ -11,7 +11,7 @@
 #include <vector>
 
 #include "core/fxcrt/cfx_observable.h"
-#include "fpdfsdk/cpdfsdk_document.h"
+#include "fpdfsdk/cpdfsdk_formfillenvironment.h"
 #include "fpdfsdk/javascript/JS_Define.h"
 #include "fpdfsdk/pdfwindow/PWL_Wnd.h"  // For CPWL_Color.
 
@@ -277,163 +277,164 @@
                             CJS_Value& vRet,
                             CFX_WideString& sError);
 
-  static void SetAlignment(CPDFSDK_Document* pDocument,
+  static void SetAlignment(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                            const CFX_WideString& swFieldName,
                            int nControlIndex,
                            const CFX_ByteString& string);
-  static void SetBorderStyle(CPDFSDK_Document* pDocument,
+  static void SetBorderStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                              const CFX_WideString& swFieldName,
                              int nControlIndex,
                              const CFX_ByteString& string);
-  static void SetButtonAlignX(CPDFSDK_Document* pDocument,
+  static void SetButtonAlignX(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                               const CFX_WideString& swFieldName,
                               int nControlIndex,
                               int number);
-  static void SetButtonAlignY(CPDFSDK_Document* pDocument,
+  static void SetButtonAlignY(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                               const CFX_WideString& swFieldName,
                               int nControlIndex,
                               int number);
-  static void SetButtonFitBounds(CPDFSDK_Document* pDocument,
+  static void SetButtonFitBounds(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                  const CFX_WideString& swFieldName,
                                  int nControlIndex,
                                  bool b);
-  static void SetButtonPosition(CPDFSDK_Document* pDocument,
+  static void SetButtonPosition(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                 const CFX_WideString& swFieldName,
                                 int nControlIndex,
                                 int number);
-  static void SetButtonScaleHow(CPDFSDK_Document* pDocument,
+  static void SetButtonScaleHow(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                 const CFX_WideString& swFieldName,
                                 int nControlIndex,
                                 int number);
-  static void SetButtonScaleWhen(CPDFSDK_Document* pDocument,
+  static void SetButtonScaleWhen(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                  const CFX_WideString& swFieldName,
                                  int nControlIndex,
                                  int number);
-  static void SetCalcOrderIndex(CPDFSDK_Document* pDocument,
+  static void SetCalcOrderIndex(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                 const CFX_WideString& swFieldName,
                                 int nControlIndex,
                                 int number);
-  static void SetCharLimit(CPDFSDK_Document* pDocument,
+  static void SetCharLimit(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                            const CFX_WideString& swFieldName,
                            int nControlIndex,
                            int number);
-  static void SetComb(CPDFSDK_Document* pDocument,
+  static void SetComb(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                       const CFX_WideString& swFieldName,
                       int nControlIndex,
                       bool b);
-  static void SetCommitOnSelChange(CPDFSDK_Document* pDocument,
+  static void SetCommitOnSelChange(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                    const CFX_WideString& swFieldName,
                                    int nControlIndex,
                                    bool b);
-  static void SetCurrentValueIndices(CPDFSDK_Document* pDocument,
+  static void SetCurrentValueIndices(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                      const CFX_WideString& swFieldName,
                                      int nControlIndex,
                                      const std::vector<uint32_t>& array);
-  static void SetDefaultStyle(CPDFSDK_Document* pDocument,
+  static void SetDefaultStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                               const CFX_WideString& swFieldName,
                               int nControlIndex);
-  static void SetDefaultValue(CPDFSDK_Document* pDocument,
+  static void SetDefaultValue(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                               const CFX_WideString& swFieldName,
                               int nControlIndex,
                               const CFX_WideString& string);
-  static void SetDoNotScroll(CPDFSDK_Document* pDocument,
+  static void SetDoNotScroll(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                              const CFX_WideString& swFieldName,
                              int nControlIndex,
                              bool b);
-  static void SetDisplay(CPDFSDK_Document* pDocument,
+  static void SetDisplay(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                          const CFX_WideString& swFieldName,
                          int nControlIndex,
                          int number);
-  static void SetFillColor(CPDFSDK_Document* pDocument,
+  static void SetFillColor(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                            const CFX_WideString& swFieldName,
                            int nControlIndex,
                            const CPWL_Color& color);
-  static void SetHidden(CPDFSDK_Document* pDocument,
+  static void SetHidden(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                         const CFX_WideString& swFieldName,
                         int nControlIndex,
                         bool b);
-  static void SetHighlight(CPDFSDK_Document* pDocument,
+  static void SetHighlight(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                            const CFX_WideString& swFieldName,
                            int nControlIndex,
                            const CFX_ByteString& string);
-  static void SetLineWidth(CPDFSDK_Document* pDocument,
+  static void SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                            const CFX_WideString& swFieldName,
                            int nControlIndex,
                            int number);
-  static void SetMultiline(CPDFSDK_Document* pDocument,
+  static void SetMultiline(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                            const CFX_WideString& swFieldName,
                            int nControlIndex,
                            bool b);
-  static void SetMultipleSelection(CPDFSDK_Document* pDocument,
+  static void SetMultipleSelection(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                    const CFX_WideString& swFieldName,
                                    int nControlIndex,
                                    bool b);
-  static void SetPassword(CPDFSDK_Document* pDocument,
+  static void SetPassword(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                           const CFX_WideString& swFieldName,
                           int nControlIndex,
                           bool b);
-  static void SetRect(CPDFSDK_Document* pDocument,
+  static void SetRect(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                       const CFX_WideString& swFieldName,
                       int nControlIndex,
                       const CFX_FloatRect& rect);
-  static void SetRotation(CPDFSDK_Document* pDocument,
+  static void SetRotation(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                           const CFX_WideString& swFieldName,
                           int nControlIndex,
                           int number);
-  static void SetStrokeColor(CPDFSDK_Document* pDocument,
+  static void SetStrokeColor(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                              const CFX_WideString& swFieldName,
                              int nControlIndex,
                              const CPWL_Color& color);
-  static void SetStyle(CPDFSDK_Document* pDocument,
+  static void SetStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                        const CFX_WideString& swFieldName,
                        int nControlIndex,
                        const CFX_ByteString& string);
-  static void SetTextColor(CPDFSDK_Document* pDocument,
+  static void SetTextColor(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                            const CFX_WideString& swFieldName,
                            int nControlIndex,
                            const CPWL_Color& color);
-  static void SetTextFont(CPDFSDK_Document* pDocument,
+  static void SetTextFont(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                           const CFX_WideString& swFieldName,
                           int nControlIndex,
                           const CFX_ByteString& string);
-  static void SetTextSize(CPDFSDK_Document* pDocument,
+  static void SetTextSize(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                           const CFX_WideString& swFieldName,
                           int nControlIndex,
                           int number);
-  static void SetUserName(CPDFSDK_Document* pDocument,
+  static void SetUserName(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                           const CFX_WideString& swFieldName,
                           int nControlIndex,
                           const CFX_WideString& string);
-  static void SetValue(CPDFSDK_Document* pDocument,
+  static void SetValue(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                        const CFX_WideString& swFieldName,
                        int nControlIndex,
                        const std::vector<CFX_WideString>& strArray);
 
-  static void AddField(CPDFSDK_Document* pDocument,
+  static void AddField(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                        int nPageIndex,
                        int nFieldType,
                        const CFX_WideString& sName,
                        const CFX_FloatRect& rcCoords);
 
-  static void UpdateFormField(CPDFSDK_Document* pDocument,
+  static void UpdateFormField(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                               CPDF_FormField* pFormField,
                               FX_BOOL bChangeMark,
                               FX_BOOL bResetAP,
                               FX_BOOL bRefresh);
-  static void UpdateFormControl(CPDFSDK_Document* pDocument,
+  static void UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                 CPDF_FormControl* pFormControl,
                                 FX_BOOL bChangeMark,
                                 FX_BOOL bResetAP,
                                 FX_BOOL bRefresh);
 
-  static CPDFSDK_Widget* GetWidget(CPDFSDK_Document* pDocument,
+  static CPDFSDK_Widget* GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv,
                                    CPDF_FormControl* pFormControl,
                                    bool createIfNeeded);
   static std::vector<CPDF_FormField*> GetFormFields(
-      CPDFSDK_Document* pDocument,
+      CPDFSDK_FormFillEnvironment* pFormFillEnv,
       const CFX_WideString& csFieldName);
 
-  static void DoDelay(CPDFSDK_Document* pDocument, CJS_DelayData* pData);
+  static void DoDelay(CPDFSDK_FormFillEnvironment* pFormFillEnv,
+                      CJS_DelayData* pData);
 
   FX_BOOL AttachField(Document* pDocument, const CFX_WideString& csFieldName);
   void SetDelay(FX_BOOL bDelay);
@@ -461,7 +462,7 @@
 
  public:
   Document* m_pJSDoc;
-  CPDFSDK_Document::ObservedPtr m_pDocument;
+  CPDFSDK_FormFillEnvironment::ObservedPtr m_pFormFillEnv;
   CFX_WideString m_FieldName;
   int m_nFormControlIndex;
   FX_BOOL m_bCanSet;