Make code compile with clang_use_chrome_plugin (part IV)

This change mainly contains files in fpdfsdk/ directory.
This is part of the efforts to make PDFium code compilable
by Clang chromium style plugins.

The changes are mainly the following:
-- move inline constructor/destructor of complex class/struct out-of-line;
-- add constructor/destructor of complex class/struct if not
 explicitly defined;
-- add explicit out-of-line copy constructor when needed;
-- move inline virtual functions out-of-line;
-- Properly mark virtual functions with 'override';
-- some minor cleanups plus removing an unused file and splitting
cxfa_eventparam out from fxfa.h

BUG=pdfium:469

Review-Url: https://codereview.chromium.org/2062313002
diff --git a/fpdfsdk/javascript/Field.cpp b/fpdfsdk/javascript/Field.cpp
index ecf4f5a..8d7fe1b 100644
--- a/fpdfsdk/javascript/Field.cpp
+++ b/fpdfsdk/javascript/Field.cpp
@@ -114,6 +114,13 @@
 
 IMPLEMENT_JS_CLASS(CJS_Field, Field)
 
+CJS_DelayData::CJS_DelayData(FIELD_PROP prop,
+                             int idx,
+                             const CFX_WideString& name)
+    : eProp(prop), nControlIndex(idx), sFieldName(name) {}
+
+CJS_DelayData::~CJS_DelayData() {}
+
 void CJS_Field::InitInstance(IJS_Runtime* pIRuntime) {
   CJS_Runtime* pRuntime = static_cast<CJS_Runtime*>(pIRuntime);
   Field* pField = static_cast<Field*>(GetEmbedObject());
diff --git a/fpdfsdk/javascript/Field.h b/fpdfsdk/javascript/Field.h
index f5a7e1b..84bba68 100644
--- a/fpdfsdk/javascript/Field.h
+++ b/fpdfsdk/javascript/Field.h
@@ -54,8 +54,8 @@
 };
 
 struct CJS_DelayData {
-  CJS_DelayData(FIELD_PROP prop, int idx, const CFX_WideString& name)
-      : eProp(prop), nControlIndex(idx), sFieldName(name) {}
+  CJS_DelayData(FIELD_PROP prop, int idx, const CFX_WideString& name);
+  ~CJS_DelayData();
 
   FIELD_PROP eProp;
   int nControlIndex;
diff --git a/fpdfsdk/javascript/JS_GlobalData.cpp b/fpdfsdk/javascript/JS_GlobalData.cpp
index aaa25ff..14c3653 100644
--- a/fpdfsdk/javascript/JS_GlobalData.cpp
+++ b/fpdfsdk/javascript/JS_GlobalData.cpp
@@ -453,3 +453,7 @@
       break;
   }
 }
+
+CJS_KeyValue::CJS_KeyValue() {}
+
+CJS_KeyValue::~CJS_KeyValue() {}
diff --git a/fpdfsdk/javascript/JS_GlobalData.h b/fpdfsdk/javascript/JS_GlobalData.h
index d9f4f09..8273c08 100644
--- a/fpdfsdk/javascript/JS_GlobalData.h
+++ b/fpdfsdk/javascript/JS_GlobalData.h
@@ -39,8 +39,8 @@
 
 class CJS_KeyValue {
  public:
-  CJS_KeyValue() {}
-  virtual ~CJS_KeyValue() {}
+  CJS_KeyValue();
+  virtual ~CJS_KeyValue();
 
   CFX_ByteString sKey;
   int nType;  // 0:int 1:bool 2:string 3:obj
diff --git a/fpdfsdk/javascript/JS_Object.cpp b/fpdfsdk/javascript/JS_Object.cpp
index 6339bb7..0d190a7 100644
--- a/fpdfsdk/javascript/JS_Object.cpp
+++ b/fpdfsdk/javascript/JS_Object.cpp
@@ -75,6 +75,18 @@
   m_pV8Object.Reset();
 }
 
+FX_BOOL CJS_Object::IsType(const FX_CHAR* sClassName) {
+  return TRUE;
+}
+
+CFX_ByteString CJS_Object::GetClassName() {
+  return "";
+}
+
+void CJS_Object::InitInstance(IJS_Runtime* pIRuntime) {}
+
+void CJS_Object::ExitInstance() {}
+
 int CJS_Object::MsgBox(CPDFDoc_Environment* pApp,
                        const FX_WCHAR* swMsg,
                        const FX_WCHAR* swTitle,
diff --git a/fpdfsdk/javascript/JS_Object.h b/fpdfsdk/javascript/JS_Object.h
index 49c078d..908645c 100644
--- a/fpdfsdk/javascript/JS_Object.h
+++ b/fpdfsdk/javascript/JS_Object.h
@@ -46,11 +46,11 @@
   void MakeWeak();
   void Dispose();
 
-  virtual FX_BOOL IsType(const FX_CHAR* sClassName) { return TRUE; }
-  virtual CFX_ByteString GetClassName() { return ""; }
+  virtual FX_BOOL IsType(const FX_CHAR* sClassName);
+  virtual CFX_ByteString GetClassName();
 
-  virtual void InitInstance(IJS_Runtime* pIRuntime) {}
-  virtual void ExitInstance() {}
+  virtual void InitInstance(IJS_Runtime* pIRuntime);
+  virtual void ExitInstance();
 
   v8::Local<v8::Object> ToV8Object() { return m_pV8Object.Get(m_pIsolate); }
 
diff --git a/fpdfsdk/javascript/JS_Value.cpp b/fpdfsdk/javascript/JS_Value.cpp
index 1b8964b..53d6d59 100644
--- a/fpdfsdk/javascript/JS_Value.cpp
+++ b/fpdfsdk/javascript/JS_Value.cpp
@@ -82,6 +82,8 @@
 
 CJS_Value::~CJS_Value() {}
 
+CJS_Value::CJS_Value(const CJS_Value& other) = default;
+
 void CJS_Value::Attach(v8::Local<v8::Value> pValue, Type t) {
   m_pValue = pValue;
   m_eType = t;
@@ -410,6 +412,8 @@
 
 CJS_Array::~CJS_Array() {}
 
+CJS_Array::CJS_Array(const CJS_Array& other) = default;
+
 void CJS_Array::Attach(v8::Local<v8::Array> pArray) {
   m_pArray = pArray;
 }
diff --git a/fpdfsdk/javascript/JS_Value.h b/fpdfsdk/javascript/JS_Value.h
index 8adec4b..958c5e0 100644
--- a/fpdfsdk/javascript/JS_Value.h
+++ b/fpdfsdk/javascript/JS_Value.h
@@ -46,6 +46,7 @@
   CJS_Value(CJS_Runtime* pRuntime, CJS_Array& array);
 
   ~CJS_Value();
+  CJS_Value(const CJS_Value& other);
 
   void SetNull();
   void Attach(v8::Local<v8::Value> pValue, Type t);
@@ -137,6 +138,7 @@
  public:
   CJS_Array(CJS_Runtime* pRuntime);
   virtual ~CJS_Array();
+  CJS_Array(const CJS_Array& other);
 
   void Attach(v8::Local<v8::Array> pArray);
   void GetElement(unsigned index, CJS_Value& value);
diff --git a/fpdfsdk/javascript/cjs_context.cpp b/fpdfsdk/javascript/cjs_context.cpp
index b844dc6..3833b16 100644
--- a/fpdfsdk/javascript/cjs_context.cpp
+++ b/fpdfsdk/javascript/cjs_context.cpp
@@ -268,6 +268,10 @@
   m_pEventHandler->OnExternal_Exec();
 }
 
+void CJS_Context::EnableMessageBox(FX_BOOL bEnable) {
+  m_bMsgBoxEnable = bEnable;
+}
+
 void CJS_Context::OnBatchExec(CPDFSDK_Document* pTarget) {
   m_pEventHandler->OnBatchExec(pTarget);
 }
diff --git a/fpdfsdk/javascript/cjs_context.h b/fpdfsdk/javascript/cjs_context.h
index 64b97d6..84fdf1d 100644
--- a/fpdfsdk/javascript/cjs_context.h
+++ b/fpdfsdk/javascript/cjs_context.h
@@ -119,13 +119,13 @@
   void OnBatchExec(CPDFSDK_Document* pTarget) override;
   void OnConsole_Exec() override;
   void OnExternal_Exec() override;
-  void EnableMessageBox(FX_BOOL bEnable) override { m_bMsgBoxEnable = bEnable; }
+  void EnableMessageBox(FX_BOOL bEnable) override;
 
   FX_BOOL IsMsgBoxEnabled() const { return m_bMsgBoxEnable; }
-
-  CPDFDoc_Environment* GetReaderApp();
   CJS_Runtime* GetJSRuntime() const { return m_pRuntime; }
   CJS_EventHandler* GetEventHandler() const { return m_pEventHandler; }
+
+  CPDFDoc_Environment* GetReaderApp();
   CPDFSDK_Document* GetReaderDocument();
 
  private:
diff --git a/fpdfsdk/javascript/cjs_runtime.cpp b/fpdfsdk/javascript/cjs_runtime.cpp
index 020472e..2bcdc22 100644
--- a/fpdfsdk/javascript/cjs_runtime.cpp
+++ b/fpdfsdk/javascript/cjs_runtime.cpp
@@ -210,6 +210,10 @@
   }
 }
 
+CPDFSDK_Document* CJS_Runtime::GetReaderDocument() {
+  return m_pDocument;
+}
+
 int CJS_Runtime::Execute(const CFX_WideString& script, CFX_WideString* info) {
   FXJSErr error = {};
   int nRet = FXJS_Execute(m_isolate, script, &error);
diff --git a/fpdfsdk/javascript/cjs_runtime.h b/fpdfsdk/javascript/cjs_runtime.h
index 4181bd2..2668367 100644
--- a/fpdfsdk/javascript/cjs_runtime.h
+++ b/fpdfsdk/javascript/cjs_runtime.h
@@ -42,7 +42,7 @@
   void ReleaseContext(IJS_Context* pContext) override;
   IJS_Context* GetCurrentContext() override;
   void SetReaderDocument(CPDFSDK_Document* pReaderDoc) override;
-  CPDFSDK_Document* GetReaderDocument() override { return m_pDocument; }
+  CPDFSDK_Document* GetReaderDocument() override;
   int Execute(const CFX_WideString& script, CFX_WideString* info) override;
 
   CPDFDoc_Environment* GetReaderApp() const { return m_pApp; }
diff --git a/fpdfsdk/javascript/global.cpp b/fpdfsdk/javascript/global.cpp
index 32498e4..c3fc548 100644
--- a/fpdfsdk/javascript/global.cpp
+++ b/fpdfsdk/javascript/global.cpp
@@ -93,6 +93,18 @@
   pGlobal->Initial(pRuntime->GetReaderApp());
 }
 
+JSGlobalData::JSGlobalData()
+    : nType(0),
+      dData(0),
+      bData(FALSE),
+      sData(""),
+      bPersistent(FALSE),
+      bDeleted(FALSE) {}
+
+JSGlobalData::~JSGlobalData() {
+  pData.Reset();
+}
+
 JSGlobalAlternate::JSGlobalAlternate(CJS_Object* pJSObject)
     : CJS_EmbedObj(pJSObject), m_pApp(nullptr) {}
 
diff --git a/fpdfsdk/javascript/global.h b/fpdfsdk/javascript/global.h
index 02c51d9..eca9aa1 100644
--- a/fpdfsdk/javascript/global.h
+++ b/fpdfsdk/javascript/global.h
@@ -17,16 +17,9 @@
 class CJS_KeyValue;
 
 struct JSGlobalData {
-  JSGlobalData() {
-    nType = 0;
-    dData = 0;
-    bData = FALSE;
-    sData = "";
-    bPersistent = FALSE;
-    bDeleted = FALSE;
-  }
+  JSGlobalData();
+  ~JSGlobalData();
 
-  ~JSGlobalData() { pData.Reset(); }
   int nType;  // 0:int 1:bool 2:string 3:obj
   double dData;
   bool bData;