Make CJS_Objects track CJS_Runtime (and hence the document itself)

Precursor to removing some more v8::Context slot dependency.

There's a cost to maintaining the set of observers, but since these
objects are tied to V8 lifetimes, not C++ lifetimes, we want to be
very wary of the document going away unexpectedly.

Change-Id: I579f58a460aa50b88cb861227c9aca9a8a83ce12
Reviewed-on: https://pdfium-review.googlesource.com/33471
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
diff --git a/fxjs/cjs_field.cpp b/fxjs/cjs_field.cpp
index 1e9e389..b9bc8cb 100644
--- a/fxjs/cjs_field.cpp
+++ b/fxjs/cjs_field.cpp
@@ -171,18 +171,11 @@
   DefineMethods(pEngine, ObjDefnID, MethodSpecs, FX_ArraySize(MethodSpecs));
 }
 
-CJS_Field::CJS_Field(v8::Local<v8::Object> pObject)
-    : CJS_Object(pObject),
-      m_pJSDoc(nullptr),
-      m_pFormFillEnv(nullptr),
-      m_nFormControlIndex(-1),
-      m_bCanSet(false),
-      m_bDelay(false) {}
+CJS_Field::CJS_Field(v8::Local<v8::Object> pObject, CJS_Runtime* pRuntime)
+    : CJS_Object(pObject, pRuntime) {}
 
 CJS_Field::~CJS_Field() = default;
 
-void CJS_Field::InitInstance(IJS_Runtime* pIRuntime) {}
-
 // note: iControlNo = -1, means not a widget.
 void CJS_Field::ParseFieldName(const std::wstring& strFieldNameParsed,
                                std::wstring& strFieldName,