diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp
index 02cf82b..d556872 100644
--- a/fpdfsdk/javascript/Document.cpp
+++ b/fpdfsdk/javascript/Document.cpp
@@ -46,10 +46,9 @@
 }
 
 // static
-void CJS_PrintParamsObj::DefineJSObjects(CFXJS_Engine* pEngine,
-                                         FXJSOBJTYPE eObjType) {
+void CJS_PrintParamsObj::DefineJSObjects(CFXJS_Engine* pEngine) {
   ObjDefnID =
-      pEngine->DefineObj("PrintParamsObj", eObjType,
+      pEngine->DefineObj("PrintParamsObj", FXJSOBJTYPE_DYNAMIC,
                          JSConstructor<CJS_PrintParamsObj, PrintParamsObj>,
                          JSDestructor<CJS_PrintParamsObj>);
 }
@@ -159,9 +158,8 @@
 }
 
 // static
-void CJS_Document::DefineJSObjects(CFXJS_Engine* pEngine,
-                                   FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("Document", eObjType,
+void CJS_Document::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID = pEngine->DefineObj("Document", FXJSOBJTYPE_GLOBAL,
                                  JSConstructor<CJS_Document, Document>,
                                  JSDestructor<CJS_Document>);
   DefineProps(pEngine, ObjDefnID, PropertySpecs);
diff --git a/fpdfsdk/javascript/Document.h b/fpdfsdk/javascript/Document.h
index 9219983..043e6be 100644
--- a/fpdfsdk/javascript/Document.h
+++ b/fpdfsdk/javascript/Document.h
@@ -35,7 +35,7 @@
 class CJS_PrintParamsObj : public CJS_Object {
  public:
   static int GetObjDefnID();
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_PrintParamsObj(v8::Local<v8::Object> pObject)
       : CJS_Object(pObject) {}
@@ -268,7 +268,7 @@
 class CJS_Document : public CJS_Object {
  public:
   static int GetObjDefnID();
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Document(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Document() override {}
diff --git a/fpdfsdk/javascript/Field.cpp b/fpdfsdk/javascript/Field.cpp
index 2c49859..a3bde1c 100644
--- a/fpdfsdk/javascript/Field.cpp
+++ b/fpdfsdk/javascript/Field.cpp
@@ -173,10 +173,10 @@
 }
 
 // static
-void CJS_Field::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID =
-      pEngine->DefineObj("Field", eObjType, JSConstructor<CJS_Field, Field>,
-                         JSDestructor<CJS_Field>);
+void CJS_Field::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID = pEngine->DefineObj("Field", FXJSOBJTYPE_DYNAMIC,
+                                 JSConstructor<CJS_Field, Field>,
+                                 JSDestructor<CJS_Field>);
   DefineProps(pEngine, ObjDefnID, PropertySpecs);
   DefineMethods(pEngine, ObjDefnID, MethodSpecs);
 }
diff --git a/fpdfsdk/javascript/Field.h b/fpdfsdk/javascript/Field.h
index 75a00e6..6c16c5e 100644
--- a/fpdfsdk/javascript/Field.h
+++ b/fpdfsdk/javascript/Field.h
@@ -360,7 +360,7 @@
 class CJS_Field : public CJS_Object {
  public:
   static int GetObjDefnID();
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Field(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Field() override {}
diff --git a/fpdfsdk/javascript/Icon.cpp b/fpdfsdk/javascript/Icon.cpp
index e096e3a..df7561e 100644
--- a/fpdfsdk/javascript/Icon.cpp
+++ b/fpdfsdk/javascript/Icon.cpp
@@ -22,9 +22,10 @@
 }
 
 // static
-void CJS_Icon::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj(
-      "Icon", eObjType, JSConstructor<CJS_Icon, Icon>, JSDestructor<CJS_Icon>);
+void CJS_Icon::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID =
+      pEngine->DefineObj("Icon", FXJSOBJTYPE_DYNAMIC,
+                         JSConstructor<CJS_Icon, Icon>, JSDestructor<CJS_Icon>);
   DefineProps(pEngine, ObjDefnID, PropertySpecs);
 }
 
diff --git a/fpdfsdk/javascript/Icon.h b/fpdfsdk/javascript/Icon.h
index fdfb36d..9f63661 100644
--- a/fpdfsdk/javascript/Icon.h
+++ b/fpdfsdk/javascript/Icon.h
@@ -29,7 +29,7 @@
 class CJS_Icon : public CJS_Object {
  public:
   static int GetObjDefnID();
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Icon(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Icon() override {}
diff --git a/fpdfsdk/javascript/app.cpp b/fpdfsdk/javascript/app.cpp
index 0c55ee6..148b71f 100644
--- a/fpdfsdk/javascript/app.cpp
+++ b/fpdfsdk/javascript/app.cpp
@@ -150,9 +150,8 @@
 }
 
 // static
-void CJS_TimerObj::DefineJSObjects(CFXJS_Engine* pEngine,
-                                   FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("TimerObj", eObjType,
+void CJS_TimerObj::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID = pEngine->DefineObj("TimerObj", FXJSOBJTYPE_DYNAMIC,
                                  JSConstructor<CJS_TimerObj, TimerObj>,
                                  JSDestructor<CJS_TimerObj>);
 }
@@ -220,9 +219,10 @@
 int CJS_App::ObjDefnID = -1;
 
 // static
-void CJS_App::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("app", eObjType, JSConstructor<CJS_App, app>,
-                                 JSDestructor<CJS_App>);
+void CJS_App::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID =
+      pEngine->DefineObj("app", FXJSOBJTYPE_STATIC, JSConstructor<CJS_App, app>,
+                         JSDestructor<CJS_App>);
   DefineProps(pEngine, ObjDefnID, PropertySpecs);
   DefineMethods(pEngine, ObjDefnID, MethodSpecs);
 }
diff --git a/fpdfsdk/javascript/app.h b/fpdfsdk/javascript/app.h
index 7307a73..ea95398 100644
--- a/fpdfsdk/javascript/app.h
+++ b/fpdfsdk/javascript/app.h
@@ -31,7 +31,7 @@
 class CJS_TimerObj : public CJS_Object {
  public:
   static int GetObjDefnID();
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_TimerObj(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_TimerObj() override {}
@@ -144,7 +144,7 @@
 
 class CJS_App : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_App(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_App() override {}
diff --git a/fpdfsdk/javascript/cjs_annot.cpp b/fpdfsdk/javascript/cjs_annot.cpp
index 29601cd..84c8007 100644
--- a/fpdfsdk/javascript/cjs_annot.cpp
+++ b/fpdfsdk/javascript/cjs_annot.cpp
@@ -33,10 +33,10 @@
 }
 
 // static
-void CJS_Annot::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID =
-      pEngine->DefineObj("Annot", eObjType, JSConstructor<CJS_Annot, Annot>,
-                         JSDestructor<CJS_Annot>);
+void CJS_Annot::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID = pEngine->DefineObj("Annot", FXJSOBJTYPE_DYNAMIC,
+                                 JSConstructor<CJS_Annot, Annot>,
+                                 JSDestructor<CJS_Annot>);
   DefineProps(pEngine, ObjDefnID, PropertySpecs);
 }
 
diff --git a/fpdfsdk/javascript/cjs_annot.h b/fpdfsdk/javascript/cjs_annot.h
index d61b503..966e583 100644
--- a/fpdfsdk/javascript/cjs_annot.h
+++ b/fpdfsdk/javascript/cjs_annot.h
@@ -33,7 +33,7 @@
 class CJS_Annot : public CJS_Object {
  public:
   static int GetObjDefnID();
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Annot(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Annot() override {}
diff --git a/fpdfsdk/javascript/cjs_border.cpp b/fpdfsdk/javascript/cjs_border.cpp
index c1f72cd..f418aee 100644
--- a/fpdfsdk/javascript/cjs_border.cpp
+++ b/fpdfsdk/javascript/cjs_border.cpp
@@ -17,7 +17,8 @@
 int CJS_Border::ObjDefnID = -1;
 
 // static
-void CJS_Border::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("border", eObjType, nullptr, nullptr);
+void CJS_Border::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID =
+      pEngine->DefineObj("border", FXJSOBJTYPE_STATIC, nullptr, nullptr);
   DefineConsts(pEngine, ObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_border.h b/fpdfsdk/javascript/cjs_border.h
index 732ecd8..5a1d6b7 100644
--- a/fpdfsdk/javascript/cjs_border.h
+++ b/fpdfsdk/javascript/cjs_border.h
@@ -11,7 +11,7 @@
 
 class CJS_Border : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Border(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Border() override {}
diff --git a/fpdfsdk/javascript/cjs_display.cpp b/fpdfsdk/javascript/cjs_display.cpp
index 329675d..391f090 100644
--- a/fpdfsdk/javascript/cjs_display.cpp
+++ b/fpdfsdk/javascript/cjs_display.cpp
@@ -16,7 +16,8 @@
 int CJS_Display::ObjDefnID = -1;
 
 // static
-void CJS_Display::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("display", eObjType, nullptr, nullptr);
+void CJS_Display::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID =
+      pEngine->DefineObj("display", FXJSOBJTYPE_STATIC, nullptr, nullptr);
   DefineConsts(pEngine, ObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_display.h b/fpdfsdk/javascript/cjs_display.h
index 53975e6..b0f9f70 100644
--- a/fpdfsdk/javascript/cjs_display.h
+++ b/fpdfsdk/javascript/cjs_display.h
@@ -11,7 +11,7 @@
 
 class CJS_Display : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Display(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Display() override {}
diff --git a/fpdfsdk/javascript/cjs_font.cpp b/fpdfsdk/javascript/cjs_font.cpp
index 403da40..580b115 100644
--- a/fpdfsdk/javascript/cjs_font.cpp
+++ b/fpdfsdk/javascript/cjs_font.cpp
@@ -26,7 +26,7 @@
 int CJS_Font::ObjDefnID = -1;
 
 // static
-void CJS_Font::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("font", eObjType, nullptr, nullptr);
+void CJS_Font::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID = pEngine->DefineObj("font", FXJSOBJTYPE_STATIC, nullptr, nullptr);
   DefineConsts(pEngine, ObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_font.h b/fpdfsdk/javascript/cjs_font.h
index 680a3e8..069410a 100644
--- a/fpdfsdk/javascript/cjs_font.h
+++ b/fpdfsdk/javascript/cjs_font.h
@@ -11,7 +11,7 @@
 
 class CJS_Font : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Font(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Font() override {}
diff --git a/fpdfsdk/javascript/cjs_global.cpp b/fpdfsdk/javascript/cjs_global.cpp
index d38455d..658cc86 100644
--- a/fpdfsdk/javascript/cjs_global.cpp
+++ b/fpdfsdk/javascript/cjs_global.cpp
@@ -224,8 +224,8 @@
 }
 
 // static
-void CJS_Global::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("global", eObjType,
+void CJS_Global::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID = pEngine->DefineObj("global", FXJSOBJTYPE_STATIC,
                                  JSConstructor<CJS_Global, JSGlobalAlternate>,
                                  JSDestructor<CJS_Global>);
   DefineMethods(pEngine, ObjDefnID, MethodSpecs);
diff --git a/fpdfsdk/javascript/cjs_global.h b/fpdfsdk/javascript/cjs_global.h
index b99b071..ddb67b9 100644
--- a/fpdfsdk/javascript/cjs_global.h
+++ b/fpdfsdk/javascript/cjs_global.h
@@ -11,7 +11,7 @@
 
 class CJS_Global : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
   static void DefineAllProperties(CFXJS_Engine* pEngine);
 
   static void queryprop_static(
diff --git a/fpdfsdk/javascript/cjs_highlight.cpp b/fpdfsdk/javascript/cjs_highlight.cpp
index 167e059..bc206af 100644
--- a/fpdfsdk/javascript/cjs_highlight.cpp
+++ b/fpdfsdk/javascript/cjs_highlight.cpp
@@ -16,8 +16,8 @@
 int CJS_Highlight::ObjDefnID = -1;
 
 // static
-void CJS_Highlight::DefineJSObjects(CFXJS_Engine* pEngine,
-                                    FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("highlight", eObjType, nullptr, nullptr);
+void CJS_Highlight::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID =
+      pEngine->DefineObj("highlight", FXJSOBJTYPE_STATIC, nullptr, nullptr);
   DefineConsts(pEngine, ObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_highlight.h b/fpdfsdk/javascript/cjs_highlight.h
index 3e71187..71b88ad 100644
--- a/fpdfsdk/javascript/cjs_highlight.h
+++ b/fpdfsdk/javascript/cjs_highlight.h
@@ -11,7 +11,7 @@
 
 class CJS_Highlight : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Highlight(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Highlight() override {}
diff --git a/fpdfsdk/javascript/cjs_position.cpp b/fpdfsdk/javascript/cjs_position.cpp
index d53c514..744f159 100644
--- a/fpdfsdk/javascript/cjs_position.cpp
+++ b/fpdfsdk/javascript/cjs_position.cpp
@@ -19,8 +19,8 @@
 int CJS_Position::ObjDefnID = -1;
 
 // static
-void CJS_Position::DefineJSObjects(CFXJS_Engine* pEngine,
-                                   FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("position", eObjType, nullptr, nullptr);
+void CJS_Position::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID =
+      pEngine->DefineObj("position", FXJSOBJTYPE_STATIC, nullptr, nullptr);
   DefineConsts(pEngine, ObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_position.h b/fpdfsdk/javascript/cjs_position.h
index fda2b6c..07971f1 100644
--- a/fpdfsdk/javascript/cjs_position.h
+++ b/fpdfsdk/javascript/cjs_position.h
@@ -11,7 +11,7 @@
 
 class CJS_Position : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Position(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Position() override {}
diff --git a/fpdfsdk/javascript/cjs_runtime.cpp b/fpdfsdk/javascript/cjs_runtime.cpp
index 1b566b1..57dfffe 100644
--- a/fpdfsdk/javascript/cjs_runtime.cpp
+++ b/fpdfsdk/javascript/cjs_runtime.cpp
@@ -116,34 +116,34 @@
 
   // The call order determines the "ObjDefID" assigned to each class.
   // ObjDefIDs 0 - 2
-  CJS_Border::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
-  CJS_Display::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
-  CJS_Font::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
+  CJS_Border::DefineJSObjects(this);
+  CJS_Display::DefineJSObjects(this);
+  CJS_Font::DefineJSObjects(this);
 
   // ObjDefIDs 3 - 5
-  CJS_Highlight::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
-  CJS_Position::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
-  CJS_ScaleHow::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
+  CJS_Highlight::DefineJSObjects(this);
+  CJS_Position::DefineJSObjects(this);
+  CJS_ScaleHow::DefineJSObjects(this);
 
   // ObjDefIDs 6 - 8
-  CJS_ScaleWhen::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
-  CJS_Style::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
-  CJS_Zoomtype::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
+  CJS_ScaleWhen::DefineJSObjects(this);
+  CJS_Style::DefineJSObjects(this);
+  CJS_Zoomtype::DefineJSObjects(this);
 
   // ObjDefIDs 9 - 11
-  CJS_App::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
-  CJS_Color::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
-  CJS_Console::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
+  CJS_App::DefineJSObjects(this);
+  CJS_Color::DefineJSObjects(this);
+  CJS_Console::DefineJSObjects(this);
 
   // ObjDefIDs 12 - 14
-  CJS_Document::DefineJSObjects(this, FXJSOBJTYPE_GLOBAL);
-  CJS_Event::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
-  CJS_Field::DefineJSObjects(this, FXJSOBJTYPE_DYNAMIC);
+  CJS_Document::DefineJSObjects(this);
+  CJS_Event::DefineJSObjects(this);
+  CJS_Field::DefineJSObjects(this);
 
   // ObjDefIDs 15 - 17
-  CJS_Global::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
-  CJS_Icon::DefineJSObjects(this, FXJSOBJTYPE_DYNAMIC);
-  CJS_Util::DefineJSObjects(this, FXJSOBJTYPE_STATIC);
+  CJS_Global::DefineJSObjects(this);
+  CJS_Icon::DefineJSObjects(this);
+  CJS_Util::DefineJSObjects(this);
 
   // ObjDefIDs 18 - 20 (these can't fail, return void).
   CJS_PublicMethods::DefineJSObjects(this);
@@ -151,9 +151,9 @@
   CJS_GlobalArrays::DefineJSObjects(this);
 
   // ObjDefIDs 21 - 23.
-  CJS_TimerObj::DefineJSObjects(this, FXJSOBJTYPE_DYNAMIC);
-  CJS_PrintParamsObj::DefineJSObjects(this, FXJSOBJTYPE_DYNAMIC);
-  CJS_Annot::DefineJSObjects(this, FXJSOBJTYPE_DYNAMIC);
+  CJS_TimerObj::DefineJSObjects(this);
+  CJS_PrintParamsObj::DefineJSObjects(this);
+  CJS_Annot::DefineJSObjects(this);
 }
 
 IJS_EventContext* CJS_Runtime::NewEventContext() {
diff --git a/fpdfsdk/javascript/cjs_scalehow.cpp b/fpdfsdk/javascript/cjs_scalehow.cpp
index 0da304b..cd1b663 100644
--- a/fpdfsdk/javascript/cjs_scalehow.cpp
+++ b/fpdfsdk/javascript/cjs_scalehow.cpp
@@ -14,8 +14,8 @@
 int CJS_ScaleHow::ObjDefnID = -1;
 
 // static
-void CJS_ScaleHow::DefineJSObjects(CFXJS_Engine* pEngine,
-                                   FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("scaleHow", eObjType, nullptr, nullptr);
+void CJS_ScaleHow::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID =
+      pEngine->DefineObj("scaleHow", FXJSOBJTYPE_STATIC, nullptr, nullptr);
   DefineConsts(pEngine, ObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_scalehow.h b/fpdfsdk/javascript/cjs_scalehow.h
index 4ddf943..e9272fb 100644
--- a/fpdfsdk/javascript/cjs_scalehow.h
+++ b/fpdfsdk/javascript/cjs_scalehow.h
@@ -11,7 +11,7 @@
 
 class CJS_ScaleHow : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_ScaleHow(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_ScaleHow() override {}
diff --git a/fpdfsdk/javascript/cjs_scalewhen.cpp b/fpdfsdk/javascript/cjs_scalewhen.cpp
index 95314a2..b27f1f4 100644
--- a/fpdfsdk/javascript/cjs_scalewhen.cpp
+++ b/fpdfsdk/javascript/cjs_scalewhen.cpp
@@ -16,8 +16,8 @@
 int CJS_ScaleWhen::ObjDefnID = -1;
 
 // static
-void CJS_ScaleWhen::DefineJSObjects(CFXJS_Engine* pEngine,
-                                    FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("scaleWhen", eObjType, nullptr, nullptr);
+void CJS_ScaleWhen::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID =
+      pEngine->DefineObj("scaleWhen", FXJSOBJTYPE_STATIC, nullptr, nullptr);
   DefineConsts(pEngine, ObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_scalewhen.h b/fpdfsdk/javascript/cjs_scalewhen.h
index 50a723b..ec296d4 100644
--- a/fpdfsdk/javascript/cjs_scalewhen.h
+++ b/fpdfsdk/javascript/cjs_scalewhen.h
@@ -11,7 +11,7 @@
 
 class CJS_ScaleWhen : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_ScaleWhen(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_ScaleWhen() override {}
diff --git a/fpdfsdk/javascript/cjs_style.cpp b/fpdfsdk/javascript/cjs_style.cpp
index 03e3f6d..26f97d1 100644
--- a/fpdfsdk/javascript/cjs_style.cpp
+++ b/fpdfsdk/javascript/cjs_style.cpp
@@ -18,7 +18,7 @@
 int CJS_Style::ObjDefnID = -1;
 
 // static
-void CJS_Style::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("style", eObjType, nullptr, nullptr);
+void CJS_Style::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID = pEngine->DefineObj("style", FXJSOBJTYPE_STATIC, nullptr, nullptr);
   DefineConsts(pEngine, ObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_style.h b/fpdfsdk/javascript/cjs_style.h
index a7f3999..20a987f 100644
--- a/fpdfsdk/javascript/cjs_style.h
+++ b/fpdfsdk/javascript/cjs_style.h
@@ -11,7 +11,7 @@
 
 class CJS_Style : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Style(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Style() override {}
diff --git a/fpdfsdk/javascript/cjs_zoomtype.cpp b/fpdfsdk/javascript/cjs_zoomtype.cpp
index 682308c..dbd5406 100644
--- a/fpdfsdk/javascript/cjs_zoomtype.cpp
+++ b/fpdfsdk/javascript/cjs_zoomtype.cpp
@@ -19,8 +19,8 @@
 int CJS_Zoomtype::ObjDefnID = -1;
 
 // static
-void CJS_Zoomtype::DefineJSObjects(CFXJS_Engine* pEngine,
-                                   FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("zoomtype", eObjType, nullptr, nullptr);
+void CJS_Zoomtype::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID =
+      pEngine->DefineObj("zoomtype", FXJSOBJTYPE_STATIC, nullptr, nullptr);
   DefineConsts(pEngine, ObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_zoomtype.h b/fpdfsdk/javascript/cjs_zoomtype.h
index 84cecee..5bc5520 100644
--- a/fpdfsdk/javascript/cjs_zoomtype.h
+++ b/fpdfsdk/javascript/cjs_zoomtype.h
@@ -11,7 +11,7 @@
 
 class CJS_Zoomtype : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Zoomtype(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Zoomtype() override {}
diff --git a/fpdfsdk/javascript/color.cpp b/fpdfsdk/javascript/color.cpp
index 300565b..cb6503a 100644
--- a/fpdfsdk/javascript/color.cpp
+++ b/fpdfsdk/javascript/color.cpp
@@ -37,10 +37,10 @@
 int CJS_Color::ObjDefnID = -1;
 
 // static
-void CJS_Color::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID =
-      pEngine->DefineObj("color", eObjType, JSConstructor<CJS_Color, color>,
-                         JSDestructor<CJS_Color>);
+void CJS_Color::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID = pEngine->DefineObj("color", FXJSOBJTYPE_STATIC,
+                                 JSConstructor<CJS_Color, color>,
+                                 JSDestructor<CJS_Color>);
   DefineProps(pEngine, ObjDefnID, PropertySpecs);
   DefineMethods(pEngine, ObjDefnID, MethodSpecs);
 }
diff --git a/fpdfsdk/javascript/color.h b/fpdfsdk/javascript/color.h
index 7fc0a60..4a5aa5f 100644
--- a/fpdfsdk/javascript/color.h
+++ b/fpdfsdk/javascript/color.h
@@ -85,7 +85,7 @@
 
 class CJS_Color : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Color(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Color() override {}
diff --git a/fpdfsdk/javascript/console.cpp b/fpdfsdk/javascript/console.cpp
index adfbb44..c3cb8b7 100644
--- a/fpdfsdk/javascript/console.cpp
+++ b/fpdfsdk/javascript/console.cpp
@@ -23,8 +23,8 @@
 int CJS_Console::ObjDefnID = -1;
 
 // static
-void CJS_Console::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj("console", eObjType,
+void CJS_Console::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID = pEngine->DefineObj("console", FXJSOBJTYPE_STATIC,
                                  JSConstructor<CJS_Console, console>,
                                  JSDestructor<CJS_Console>);
   DefineMethods(pEngine, ObjDefnID, MethodSpecs);
diff --git a/fpdfsdk/javascript/console.h b/fpdfsdk/javascript/console.h
index 78743e6..d06c443 100644
--- a/fpdfsdk/javascript/console.h
+++ b/fpdfsdk/javascript/console.h
@@ -29,7 +29,7 @@
 
 class CJS_Console : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Console(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Console() override {}
diff --git a/fpdfsdk/javascript/event.cpp b/fpdfsdk/javascript/event.cpp
index 07e439be..fcb5b04 100644
--- a/fpdfsdk/javascript/event.cpp
+++ b/fpdfsdk/javascript/event.cpp
@@ -39,10 +39,10 @@
 int CJS_Event::ObjDefnID = -1;
 
 // static
-void CJS_Event::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID =
-      pEngine->DefineObj("event", eObjType, JSConstructor<CJS_Event, event>,
-                         JSDestructor<CJS_Event>);
+void CJS_Event::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID = pEngine->DefineObj("event", FXJSOBJTYPE_STATIC,
+                                 JSConstructor<CJS_Event, event>,
+                                 JSDestructor<CJS_Event>);
   DefineProps(pEngine, ObjDefnID, PropertySpecs);
 }
 
diff --git a/fpdfsdk/javascript/event.h b/fpdfsdk/javascript/event.h
index 2041efc..8aa7c0e 100644
--- a/fpdfsdk/javascript/event.h
+++ b/fpdfsdk/javascript/event.h
@@ -77,7 +77,7 @@
 
 class CJS_Event : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Event(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Event() override {}
diff --git a/fpdfsdk/javascript/util.cpp b/fpdfsdk/javascript/util.cpp
index 4493a47..4b0db62 100644
--- a/fpdfsdk/javascript/util.cpp
+++ b/fpdfsdk/javascript/util.cpp
@@ -66,10 +66,11 @@
 int CJS_Util::ObjDefnID = -1;
 
 // static
-void CJS_Util::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  ObjDefnID = pEngine->DefineObj(
-      "util", eObjType, JSConstructor<CJS_Util, util>, JSDestructor<CJS_Util>);
-  CJS_Object::DefineMethods(pEngine, ObjDefnID, MethodSpecs);
+void CJS_Util::DefineJSObjects(CFXJS_Engine* pEngine) {
+  ObjDefnID =
+      pEngine->DefineObj("util", FXJSOBJTYPE_STATIC,
+                         JSConstructor<CJS_Util, util>, JSDestructor<CJS_Util>);
+  DefineMethods(pEngine, ObjDefnID, MethodSpecs);
 }
 
 util::util(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {}
diff --git a/fpdfsdk/javascript/util.h b/fpdfsdk/javascript/util.h
index 68f82e7..269b89e 100644
--- a/fpdfsdk/javascript/util.h
+++ b/fpdfsdk/javascript/util.h
@@ -44,7 +44,7 @@
 
 class CJS_Util : public CJS_Object {
  public:
-  static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
+  static void DefineJSObjects(CFXJS_Engine* pEngine);
 
   explicit CJS_Util(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Util() override {}
