diff --git a/fpdfsdk/cpdfsdk_actionhandler.cpp b/fpdfsdk/cpdfsdk_actionhandler.cpp
index 1bef33f..9f4d2fb 100644
--- a/fpdfsdk/cpdfsdk_actionhandler.cpp
+++ b/fpdfsdk/cpdfsdk_actionhandler.cpp
@@ -382,51 +382,49 @@
     CPDFSDK_FormFillEnvironment* pFormFillEnv,
     const WideString& sScriptName,
     const WideString& script) {
-  RunScript(pFormFillEnv, script,
-            [pFormFillEnv, sScriptName](IJS_EventContext* context) {
-              context->OnDoc_Open(pFormFillEnv, sScriptName);
-            });
+  RunScript(pFormFillEnv, script, [sScriptName](IJS_EventContext* context) {
+    context->OnDoc_Open(sScriptName);
+  });
 }
 
 void CPDFSDK_ActionHandler::RunDocumentPageJavaScript(
     CPDFSDK_FormFillEnvironment* pFormFillEnv,
     CPDF_AAction::AActionType type,
     const WideString& script) {
-  RunScript(pFormFillEnv, script,
-            [type, pFormFillEnv](IJS_EventContext* context) {
-              switch (type) {
-                case CPDF_AAction::kOpenPage:
-                  context->OnPage_Open(pFormFillEnv);
-                  break;
-                case CPDF_AAction::kClosePage:
-                  context->OnPage_Close(pFormFillEnv);
-                  break;
-                case CPDF_AAction::kCloseDocument:
-                  context->OnDoc_WillClose(pFormFillEnv);
-                  break;
-                case CPDF_AAction::kSaveDocument:
-                  context->OnDoc_WillSave(pFormFillEnv);
-                  break;
-                case CPDF_AAction::kDocumentSaved:
-                  context->OnDoc_DidSave(pFormFillEnv);
-                  break;
-                case CPDF_AAction::kPrintDocument:
-                  context->OnDoc_WillPrint(pFormFillEnv);
-                  break;
-                case CPDF_AAction::kDocumentPrinted:
-                  context->OnDoc_DidPrint(pFormFillEnv);
-                  break;
-                case CPDF_AAction::kPageVisible:
-                  context->OnPage_InView(pFormFillEnv);
-                  break;
-                case CPDF_AAction::kPageInvisible:
-                  context->OnPage_OutView(pFormFillEnv);
-                  break;
-                default:
-                  NOTREACHED();
-                  break;
-              }
-            });
+  RunScript(pFormFillEnv, script, [type](IJS_EventContext* context) {
+    switch (type) {
+      case CPDF_AAction::kOpenPage:
+        context->OnPage_Open();
+        break;
+      case CPDF_AAction::kClosePage:
+        context->OnPage_Close();
+        break;
+      case CPDF_AAction::kCloseDocument:
+        context->OnDoc_WillClose();
+        break;
+      case CPDF_AAction::kSaveDocument:
+        context->OnDoc_WillSave();
+        break;
+      case CPDF_AAction::kDocumentSaved:
+        context->OnDoc_DidSave();
+        break;
+      case CPDF_AAction::kPrintDocument:
+        context->OnDoc_WillPrint();
+        break;
+      case CPDF_AAction::kDocumentPrinted:
+        context->OnDoc_DidPrint();
+        break;
+      case CPDF_AAction::kPageVisible:
+        context->OnPage_InView();
+        break;
+      case CPDF_AAction::kPageInvisible:
+        context->OnPage_OutView();
+        break;
+      default:
+        NOTREACHED();
+        break;
+    }
+  });
 }
 
 bool CPDFSDK_ActionHandler::DoAction_Hide(
diff --git a/fxjs/cjs_event_context.cpp b/fxjs/cjs_event_context.cpp
index 3cec037..c957d3c 100644
--- a/fxjs/cjs_event_context.cpp
+++ b/fxjs/cjs_event_context.cpp
@@ -16,7 +16,8 @@
 
 CJS_EventContext::CJS_EventContext(CJS_Runtime* pRuntime)
     : m_pRuntime(pRuntime),
-      m_pEventRecorder(std::make_unique<CJS_EventRecorder>()) {
+      m_pEventRecorder(
+          std::make_unique<CJS_EventRecorder>(m_pRuntime->GetFormFillEnv())) {
   DCHECK(pRuntime);
 }
 
@@ -112,52 +113,44 @@
   m_pEventRecorder->OnApp_Init();
 }
 
-void CJS_EventContext::OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                                  const WideString& strTargetName) {
-  m_pEventRecorder->OnDoc_Open(pFormFillEnv, strTargetName);
+void CJS_EventContext::OnDoc_Open(const WideString& strTargetName) {
+  m_pEventRecorder->OnDoc_Open(strTargetName);
 }
 
-void CJS_EventContext::OnDoc_WillPrint(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
-  m_pEventRecorder->OnDoc_WillPrint(pFormFillEnv);
+void CJS_EventContext::OnDoc_WillPrint() {
+  m_pEventRecorder->OnDoc_WillPrint();
 }
 
-void CJS_EventContext::OnDoc_DidPrint(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
-  m_pEventRecorder->OnDoc_DidPrint(pFormFillEnv);
+void CJS_EventContext::OnDoc_DidPrint() {
+  m_pEventRecorder->OnDoc_DidPrint();
 }
 
-void CJS_EventContext::OnDoc_WillSave(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
-  m_pEventRecorder->OnDoc_WillSave(pFormFillEnv);
+void CJS_EventContext::OnDoc_WillSave() {
+  m_pEventRecorder->OnDoc_WillSave();
 }
 
-void CJS_EventContext::OnDoc_DidSave(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
-  m_pEventRecorder->OnDoc_DidSave(pFormFillEnv);
+void CJS_EventContext::OnDoc_DidSave() {
+  m_pEventRecorder->OnDoc_DidSave();
 }
 
-void CJS_EventContext::OnDoc_WillClose(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
-  m_pEventRecorder->OnDoc_WillClose(pFormFillEnv);
+void CJS_EventContext::OnDoc_WillClose() {
+  m_pEventRecorder->OnDoc_WillClose();
 }
 
-void CJS_EventContext::OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) {
-  m_pEventRecorder->OnPage_Open(pFormFillEnv);
+void CJS_EventContext::OnPage_Open() {
+  m_pEventRecorder->OnPage_Open();
 }
 
-void CJS_EventContext::OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv) {
-  m_pEventRecorder->OnPage_Close(pFormFillEnv);
+void CJS_EventContext::OnPage_Close() {
+  m_pEventRecorder->OnPage_Close();
 }
 
-void CJS_EventContext::OnPage_InView(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
-  m_pEventRecorder->OnPage_InView(pFormFillEnv);
+void CJS_EventContext::OnPage_InView() {
+  m_pEventRecorder->OnPage_InView();
 }
 
-void CJS_EventContext::OnPage_OutView(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
-  m_pEventRecorder->OnPage_OutView(pFormFillEnv);
+void CJS_EventContext::OnPage_OutView() {
+  m_pEventRecorder->OnPage_OutView();
 }
 
 void CJS_EventContext::OnField_MouseDown(bool bModifier,
@@ -303,9 +296,8 @@
   m_pEventRecorder->OnBookmark_MouseUp(pBookMark);
 }
 
-void CJS_EventContext::OnLink_MouseUp(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
-  m_pEventRecorder->OnLink_MouseUp(pFormFillEnv);
+void CJS_EventContext::OnLink_MouseUp() {
+  m_pEventRecorder->OnLink_MouseUp();
 }
 
 void CJS_EventContext::OnConsole_Exec() {
@@ -316,11 +308,10 @@
   m_pEventRecorder->OnExternal_Exec();
 }
 
-void CJS_EventContext::OnBatchExec(CPDFSDK_FormFillEnvironment* pFormFillEnv) {
-  m_pEventRecorder->OnBatchExec(pFormFillEnv);
+void CJS_EventContext::OnBatch_Exec() {
+  m_pEventRecorder->OnBatchExec();
 }
 
-void CJS_EventContext::OnMenu_Exec(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                                   const WideString& strTargetName) {
-  m_pEventRecorder->OnMenu_Exec(pFormFillEnv, strTargetName);
+void CJS_EventContext::OnMenu_Exec(const WideString& strTargetName) {
+  m_pEventRecorder->OnMenu_Exec(strTargetName);
 }
diff --git a/fxjs/cjs_event_context.h b/fxjs/cjs_event_context.h
index 6a953e6..3598845 100644
--- a/fxjs/cjs_event_context.h
+++ b/fxjs/cjs_event_context.h
@@ -27,17 +27,16 @@
   // IJS_EventContext
   Optional<IJS_Runtime::JS_Error> RunScript(const WideString& script) override;
   void OnApp_Init() override;
-  void OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                  const WideString& strTargetName) override;
-  void OnDoc_WillPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override;
-  void OnDoc_DidPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override;
-  void OnDoc_WillSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override;
-  void OnDoc_DidSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override;
-  void OnDoc_WillClose(CPDFSDK_FormFillEnvironment* pFormFillEnv) override;
-  void OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) override;
-  void OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv) override;
-  void OnPage_InView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override;
-  void OnPage_OutView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override;
+  void OnDoc_Open(const WideString& strTargetName) override;
+  void OnDoc_WillPrint() override;
+  void OnDoc_DidPrint() override;
+  void OnDoc_WillSave() override;
+  void OnDoc_DidSave() override;
+  void OnDoc_WillClose() override;
+  void OnPage_Open() override;
+  void OnPage_Close() override;
+  void OnPage_InView() override;
+  void OnPage_OutView() override;
   void OnField_MouseDown(bool bModifier,
                          bool bShift,
                          CPDF_FormField* pTarget) override;
@@ -114,10 +113,9 @@
                         bool bShift,
                         CPDFSDK_Annot* pScreen) override;
   void OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) override;
-  void OnLink_MouseUp(CPDFSDK_FormFillEnvironment* pFormFillEnv) override;
-  void OnMenu_Exec(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                   const WideString& strTargetName) override;
-  void OnBatchExec(CPDFSDK_FormFillEnvironment* pFormFillEnv) override;
+  void OnLink_MouseUp() override;
+  void OnMenu_Exec(const WideString& strTargetName) override;
+  void OnBatch_Exec() override;
   void OnConsole_Exec() override;
   void OnExternal_Exec() override;
 
@@ -129,7 +127,7 @@
 
  private:
   UnownedPtr<CJS_Runtime> const m_pRuntime;
-  std::unique_ptr<CJS_EventRecorder> m_pEventRecorder;
+  std::unique_ptr<CJS_EventRecorder> const m_pEventRecorder;
   bool m_bBusy = false;
 };
 
diff --git a/fxjs/cjs_event_context_stub.h b/fxjs/cjs_event_context_stub.h
index 6614f9a..6b824b0 100644
--- a/fxjs/cjs_event_context_stub.h
+++ b/fxjs/cjs_event_context_stub.h
@@ -18,17 +18,16 @@
   Optional<IJS_Runtime::JS_Error> RunScript(const WideString& script) override;
 
   void OnApp_Init() override {}
-  void OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                  const WideString& strTargetName) override {}
-  void OnDoc_WillPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
-  void OnDoc_DidPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
-  void OnDoc_WillSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
-  void OnDoc_DidSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
-  void OnDoc_WillClose(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
-  void OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
-  void OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
-  void OnPage_InView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
-  void OnPage_OutView(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
+  void OnDoc_Open(const WideString& strTargetName) override {}
+  void OnDoc_WillPrint() override {}
+  void OnDoc_DidPrint() override {}
+  void OnDoc_WillSave() override {}
+  void OnDoc_DidSave() override {}
+  void OnDoc_WillClose() override {}
+  void OnPage_Open() override {}
+  void OnPage_Close() override {}
+  void OnPage_InView() override {}
+  void OnPage_OutView() override {}
   void OnField_MouseDown(bool bModifier,
                          bool bShift,
                          CPDF_FormField* pTarget) override {}
@@ -105,10 +104,9 @@
                         bool bShift,
                         CPDFSDK_Annot* pScreen) override {}
   void OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) override {}
-  void OnLink_MouseUp(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
-  void OnMenu_Exec(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                   const WideString&) override {}
-  void OnBatchExec(CPDFSDK_FormFillEnvironment* pFormFillEnv) override {}
+  void OnLink_MouseUp() override {}
+  void OnMenu_Exec(const WideString&) override {}
+  void OnBatch_Exec() override {}
   void OnConsole_Exec() override {}
   void OnExternal_Exec() override {}
 };
diff --git a/fxjs/cjs_eventrecorder.cpp b/fxjs/cjs_eventrecorder.cpp
index 74a25d6..dffbc06 100644
--- a/fxjs/cjs_eventrecorder.cpp
+++ b/fxjs/cjs_eventrecorder.cpp
@@ -10,7 +10,8 @@
 #include "core/fpdfdoc/cpdf_formfield.h"
 #include "third_party/base/check.h"
 
-CJS_EventRecorder::CJS_EventRecorder() = default;
+CJS_EventRecorder::CJS_EventRecorder(CPDFSDK_FormFillEnvironment* pFormFillEnv)
+    : m_pFormFillEnv(pFormFillEnv) {}
 
 CJS_EventRecorder::~CJS_EventRecorder() = default;
 
@@ -18,74 +19,53 @@
   Initialize(JET_APP_INIT);
 }
 
-void CJS_EventRecorder::OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                                   const WideString& strTargetName) {
+void CJS_EventRecorder::OnDoc_Open(const WideString& strTargetName) {
   Initialize(JET_DOC_OPEN);
-  m_pTargetFormFillEnv.Reset(pFormFillEnv);
   m_strTargetName = strTargetName;
 }
 
-void CJS_EventRecorder::OnDoc_WillPrint(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
+void CJS_EventRecorder::OnDoc_WillPrint() {
   Initialize(JET_DOC_WILLPRINT);
-  m_pTargetFormFillEnv.Reset(pFormFillEnv);
 }
 
-void CJS_EventRecorder::OnDoc_DidPrint(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
+void CJS_EventRecorder::OnDoc_DidPrint() {
   Initialize(JET_DOC_DIDPRINT);
-  m_pTargetFormFillEnv.Reset(pFormFillEnv);
 }
 
-void CJS_EventRecorder::OnDoc_WillSave(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
+void CJS_EventRecorder::OnDoc_WillSave() {
   Initialize(JET_DOC_WILLSAVE);
-  m_pTargetFormFillEnv.Reset(pFormFillEnv);
 }
 
-void CJS_EventRecorder::OnDoc_DidSave(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
+void CJS_EventRecorder::OnDoc_DidSave() {
   Initialize(JET_DOC_DIDSAVE);
-  m_pTargetFormFillEnv.Reset(pFormFillEnv);
 }
 
-void CJS_EventRecorder::OnDoc_WillClose(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
+void CJS_EventRecorder::OnDoc_WillClose() {
   Initialize(JET_DOC_WILLCLOSE);
-  m_pTargetFormFillEnv.Reset(pFormFillEnv);
 }
 
-void CJS_EventRecorder::OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) {
+void CJS_EventRecorder::OnPage_Open() {
   Initialize(JET_PAGE_OPEN);
-  m_pTargetFormFillEnv.Reset(pFormFillEnv);
 }
 
-void CJS_EventRecorder::OnPage_Close(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
+void CJS_EventRecorder::OnPage_Close() {
   Initialize(JET_PAGE_CLOSE);
-  m_pTargetFormFillEnv.Reset(pFormFillEnv);
 }
 
-void CJS_EventRecorder::OnPage_InView(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
+void CJS_EventRecorder::OnPage_InView() {
   Initialize(JET_PAGE_INVIEW);
-  m_pTargetFormFillEnv.Reset(pFormFillEnv);
 }
 
-void CJS_EventRecorder::OnPage_OutView(
-    CPDFSDK_FormFillEnvironment* pFormFillEnv) {
+void CJS_EventRecorder::OnPage_OutView() {
   Initialize(JET_PAGE_OUTVIEW);
-  m_pTargetFormFillEnv.Reset(pFormFillEnv);
 }
 
 void CJS_EventRecorder::OnField_MouseEnter(bool bModifier,
                                            bool bShift,
                                            CPDF_FormField* pTarget) {
   Initialize(JET_FIELD_MOUSEENTER);
-
   m_bModifier = bModifier;
   m_bShift = bShift;
-
   m_strTargetName = pTarget->GetFullName();
 }
 
@@ -93,7 +73,6 @@
                                           bool bShift,
                                           CPDF_FormField* pTarget) {
   Initialize(JET_FIELD_MOUSEEXIT);
-
   m_bModifier = bModifier;
   m_bShift = bShift;
   m_strTargetName = pTarget->GetFullName();
@@ -328,10 +307,8 @@
   m_pTargetAnnot.Reset(pScreen);
 }
 
-void CJS_EventRecorder::OnLink_MouseUp(
-    CPDFSDK_FormFillEnvironment* pTargetFormFillEnv) {
+void CJS_EventRecorder::OnLink_MouseUp() {
   Initialize(JET_LINK_MOUSEUP);
-  m_pTargetFormFillEnv.Reset(pTargetFormFillEnv);
 }
 
 void CJS_EventRecorder::OnBookmark_MouseUp(const CPDF_Bookmark* pBookMark) {
@@ -340,10 +317,8 @@
 }
 
 void CJS_EventRecorder::OnMenu_Exec(
-    CPDFSDK_FormFillEnvironment* pTargetFormFillEnv,
     const WideString& strTargetName) {
   Initialize(JET_MENU_EXEC);
-  m_pTargetFormFillEnv.Reset(pTargetFormFillEnv);
   m_strTargetName = strTargetName;
 }
 
@@ -351,10 +326,8 @@
   Initialize(JET_EXTERNAL_EXEC);
 }
 
-void CJS_EventRecorder::OnBatchExec(
-    CPDFSDK_FormFillEnvironment* pTargetFormFillEnv) {
+void CJS_EventRecorder::OnBatchExec() {
   Initialize(JET_BATCH_EXEC);
-  m_pTargetFormFillEnv.Reset(pTargetFormFillEnv);
 }
 
 void CJS_EventRecorder::OnConsole_Exec() {
@@ -382,7 +355,6 @@
   m_pbRc = nullptr;
   m_bRcDu = false;
   m_pTargetBookMark = nullptr;
-  m_pTargetFormFillEnv.Reset();
   m_pTargetAnnot.Reset();
   m_bValid = true;
 }
diff --git a/fxjs/cjs_eventrecorder.h b/fxjs/cjs_eventrecorder.h
index 69f6410..5163822 100644
--- a/fxjs/cjs_eventrecorder.h
+++ b/fxjs/cjs_eventrecorder.h
@@ -59,23 +59,22 @@
 
 class CJS_EventRecorder {
  public:
-  CJS_EventRecorder();
+  explicit CJS_EventRecorder(CPDFSDK_FormFillEnvironment* pFormFillEnv);
   ~CJS_EventRecorder();
 
   void OnApp_Init();
 
-  void OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                  const WideString& strTargetName);
-  void OnDoc_WillPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv);
-  void OnDoc_DidPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv);
-  void OnDoc_WillSave(CPDFSDK_FormFillEnvironment* pFormFillEnv);
-  void OnDoc_DidSave(CPDFSDK_FormFillEnvironment* pFormFillEnv);
-  void OnDoc_WillClose(CPDFSDK_FormFillEnvironment* pFormFillEnv);
+  void OnDoc_Open(const WideString& strTargetName);
+  void OnDoc_WillPrint();
+  void OnDoc_DidPrint();
+  void OnDoc_WillSave();
+  void OnDoc_DidSave();
+  void OnDoc_WillClose();
 
-  void OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv);
-  void OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv);
-  void OnPage_InView(CPDFSDK_FormFillEnvironment* pFormFillEnv);
-  void OnPage_OutView(CPDFSDK_FormFillEnvironment* pFormFillEnv);
+  void OnPage_Open();
+  void OnPage_Close();
+  void OnPage_InView();
+  void OnPage_OutView();
 
   void OnField_Calculate(CPDF_FormField* pSource,
                          CPDF_FormField* pTarget,
@@ -127,11 +126,10 @@
   void OnScreen_OutView(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen);
 
   void OnBookmark_MouseUp(const CPDF_Bookmark* pBookMark);
-  void OnLink_MouseUp(CPDFSDK_FormFillEnvironment* pFormFillEnv);
+  void OnLink_MouseUp();
 
-  void OnMenu_Exec(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                   const WideString& strTargetName);
-  void OnBatchExec(CPDFSDK_FormFillEnvironment* pFormFillEnv);
+  void OnMenu_Exec(const WideString& strTargetName);
+  void OnBatchExec();
   void OnConsole_Exec();
   void OnExternal_Exec();
 
@@ -160,7 +158,7 @@
   WideString& Value() { return *m_pValue; }
   bool WillCommit() const { return m_bWillCommit; }
   CPDFSDK_FormFillEnvironment* GetFormFillEnvironment() const {
-    return m_pTargetFormFillEnv.Get();
+    return m_pFormFillEnv.Get();
   }
 
   void SetValueForTest(WideString* pStr) { m_pValue = pStr; }
@@ -194,7 +192,7 @@
   bool m_bRcDu = false;
   UnownedPtr<bool> m_pbRc;
   UnownedPtr<const CPDF_Bookmark> m_pTargetBookMark;
-  ObservedPtr<CPDFSDK_FormFillEnvironment> m_pTargetFormFillEnv;
+  ObservedPtr<CPDFSDK_FormFillEnvironment> m_pFormFillEnv;
   ObservedPtr<CPDFSDK_Annot> m_pTargetAnnot;
 };
 
diff --git a/fxjs/ijs_event_context.h b/fxjs/ijs_event_context.h
index e2c6407..e2b4806 100644
--- a/fxjs/ijs_event_context.h
+++ b/fxjs/ijs_event_context.h
@@ -15,7 +15,6 @@
 class CPDF_Bookmark;
 class CPDF_FormField;
 class CPDFSDK_Annot;
-class CPDFSDK_FormFillEnvironment;
 
 // Records the details of an event and triggers JS execution for it. There
 // can be more than one of these at any given time, as JS callbacks to C++
@@ -29,18 +28,17 @@
 
   virtual void OnApp_Init() = 0;
 
-  virtual void OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                          const WideString& strTargetName) = 0;
-  virtual void OnDoc_WillPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
-  virtual void OnDoc_DidPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
-  virtual void OnDoc_WillSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
-  virtual void OnDoc_DidSave(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
-  virtual void OnDoc_WillClose(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
+  virtual void OnDoc_Open(const WideString& strTargetName) = 0;
+  virtual void OnDoc_WillPrint() = 0;
+  virtual void OnDoc_DidPrint() = 0;
+  virtual void OnDoc_WillSave() = 0;
+  virtual void OnDoc_DidSave() = 0;
+  virtual void OnDoc_WillClose() = 0;
 
-  virtual void OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
-  virtual void OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
-  virtual void OnPage_InView(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
-  virtual void OnPage_OutView(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
+  virtual void OnPage_Open() = 0;
+  virtual void OnPage_Close() = 0;
+  virtual void OnPage_InView() = 0;
+  virtual void OnPage_OutView() = 0;
 
   virtual void OnField_MouseDown(bool bModifier,
                                  bool bShift,
@@ -120,11 +118,10 @@
                                 CPDFSDK_Annot* pScreen) = 0;
 
   virtual void OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) = 0;
-  virtual void OnLink_MouseUp(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
+  virtual void OnLink_MouseUp() = 0;
 
-  virtual void OnMenu_Exec(CPDFSDK_FormFillEnvironment* pFormFillEnv,
-                           const WideString&) = 0;
-  virtual void OnBatchExec(CPDFSDK_FormFillEnvironment* pFormFillEnv) = 0;
+  virtual void OnMenu_Exec(const WideString&) = 0;
+  virtual void OnBatch_Exec() = 0;
   virtual void OnConsole_Exec() = 0;
   virtual void OnExternal_Exec() = 0;
 };
