From f743552fbdb17f974c9b1675af81210fe0ffcc50 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Mon, 5 Feb 2018 22:27:22 +0000 Subject: Fold CJS_EmbedObj classes into CJS_Object classes This CL removes the CJS_EmbedObj class and various subclasses and folds the subclasses into their CJS_Object counterparts. Change-Id: If6b882a4995c0b1bf83ac783f5c27ba9216c2d5c Reviewed-on: https://pdfium-review.googlesource.com/25410 Commit-Queue: dsinclair Reviewed-by: Tom Sepez --- fxjs/JS_Define.h | 20 +- fxjs/cjs_annot.cpp | 29 +-- fxjs/cjs_annot.h | 40 ++-- fxjs/cjs_app.cpp | 200 ++++++++-------- fxjs/cjs_app.h | 110 ++++----- fxjs/cjs_color.cpp | 124 +++++----- fxjs/cjs_color.h | 59 ++--- fxjs/cjs_console.cpp | 28 +-- fxjs/cjs_console.h | 36 ++- fxjs/cjs_document.cpp | 408 ++++++++++++++++--------------- fxjs/cjs_document.h | 203 ++++++++-------- fxjs/cjs_embedobj.cpp | 13 - fxjs/cjs_embedobj.h | 25 -- fxjs/cjs_event.cpp | 121 +++++----- fxjs/cjs_event.h | 67 +++--- fxjs/cjs_eventhandler.cpp | 28 +-- fxjs/cjs_eventhandler.h | 6 +- fxjs/cjs_field.cpp | 572 +++++++++++++++++++++++--------------------- fxjs/cjs_field.h | 308 ++++++++++++------------ fxjs/cjs_global.cpp | 187 +++++---------- fxjs/cjs_global.h | 53 +++- fxjs/cjs_icon.cpp | 17 +- fxjs/cjs_icon.h | 28 +-- fxjs/cjs_object.h | 5 - fxjs/cjs_printparamsobj.cpp | 16 +- fxjs/cjs_printparamsobj.h | 36 +-- fxjs/cjs_publicmethods.cpp | 13 +- fxjs/cjs_report.cpp | 22 +- fxjs/cjs_report.h | 24 +- fxjs/cjs_runtime.cpp | 6 +- fxjs/cjs_timerobj.cpp | 11 +- fxjs/cjs_timerobj.h | 19 +- fxjs/cjs_util.cpp | 38 ++- fxjs/cjs_util.h | 52 ++-- fxjs/cjs_util_unittest.cpp | 2 +- fxjs/global_timer.cpp | 12 +- fxjs/global_timer.h | 4 +- 37 files changed, 1415 insertions(+), 1527 deletions(-) delete mode 100644 fxjs/cjs_embedobj.cpp delete mode 100644 fxjs/cjs_embedobj.h (limited to 'fxjs') diff --git a/fxjs/JS_Define.h b/fxjs/JS_Define.h index 540746afd5..61ad9efc1f 100644 --- a/fxjs/JS_Define.h +++ b/fxjs/JS_Define.h @@ -72,7 +72,7 @@ void JSPropGetter(const char* prop_name_string, if (!pJSObj) return; - C* pObj = reinterpret_cast(pJSObj->GetEmbedObject()); + C* pObj = static_cast(pJSObj); CJS_Return result = (pObj->*M)(pRuntime); if (result.HasError()) { pRuntime->Error(JSFormatErrorString(class_name_string, prop_name_string, @@ -99,7 +99,7 @@ void JSPropSetter(const char* prop_name_string, if (!pJSObj) return; - C* pObj = reinterpret_cast(pJSObj->GetEmbedObject()); + C* pObj = static_cast(pJSObj); CJS_Return result = (pObj->*M)(pRuntime, value); if (result.HasError()) { pRuntime->Error(JSFormatErrorString(class_name_string, prop_name_string, @@ -126,7 +126,7 @@ void JSMethod(const char* method_name_string, for (unsigned int i = 0; i < (unsigned int)info.Length(); i++) parameters.push_back(info[i]); - C* pObj = reinterpret_cast(pJSObj->GetEmbedObject()); + C* pObj = static_cast(pJSObj); CJS_Return result = (pObj->*M)(pRuntime, parameters); if (result.HasError()) { pRuntime->Error(JSFormatErrorString(class_name_string, method_name_string, @@ -143,20 +143,20 @@ void JSMethod(const char* method_name_string, v8::Local property, \ const v8::PropertyCallbackInfo& info) { \ JSPropGetter( \ - #err_name, #class_name, property, info); \ + #err_name, class_name::kName, property, info); \ } \ static void set_##prop_name##_static( \ v8::Local property, v8::Local value, \ const v8::PropertyCallbackInfo& info) { \ JSPropSetter( \ - #err_name, #class_name, property, value, info); \ + #err_name, class_name::kName, property, value, info); \ } -#define JS_STATIC_METHOD(method_name, class_name) \ - static void method_name##_static( \ - const v8::FunctionCallbackInfo& info) { \ - JSMethod(#method_name, #class_name, \ - info); \ +#define JS_STATIC_METHOD(method_name, class_name) \ + static void method_name##_static( \ + const v8::FunctionCallbackInfo& info) { \ + JSMethod(#method_name, \ + class_name::kName, info); \ } #endif // FXJS_JS_DEFINE_H_ diff --git a/fxjs/cjs_annot.cpp b/fxjs/cjs_annot.cpp index 34084a9091..fc38e11c2f 100644 --- a/fxjs/cjs_annot.cpp +++ b/fxjs/cjs_annot.cpp @@ -26,6 +26,8 @@ const JSPropertySpec CJS_Annot::PropertySpecs[] = { int CJS_Annot::ObjDefnID = -1; +const char CJS_Annot::kName[] = "Annot"; + // static int CJS_Annot::GetObjDefnID() { return ObjDefnID; @@ -33,20 +35,16 @@ int CJS_Annot::GetObjDefnID() { // static void CJS_Annot::DefineJSObjects(CFXJS_Engine* pEngine) { - ObjDefnID = pEngine->DefineObj("Annot", FXJSOBJTYPE_DYNAMIC, + ObjDefnID = pEngine->DefineObj(CJS_Annot::kName, FXJSOBJTYPE_DYNAMIC, JSConstructor, JSDestructor); DefineProps(pEngine, ObjDefnID, PropertySpecs, FX_ArraySize(PropertySpecs)); } -CJS_Annot::CJS_Annot(v8::Local pObject) : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} - -Annot::Annot(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {} +CJS_Annot::CJS_Annot(v8::Local pObject) : CJS_Object(pObject) {} -Annot::~Annot() = default; +CJS_Annot::~CJS_Annot() = default; -CJS_Return Annot::get_hidden(CJS_Runtime* pRuntime) { +CJS_Return CJS_Annot::get_hidden(CJS_Runtime* pRuntime) { if (!m_pAnnot) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -55,7 +53,8 @@ CJS_Return Annot::get_hidden(CJS_Runtime* pRuntime) { CPDF_Annot::IsAnnotationHidden(pPDFAnnot->GetAnnotDict()))); } -CJS_Return Annot::set_hidden(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Annot::set_hidden(CJS_Runtime* pRuntime, + v8::Local vp) { // May invalidate m_pAnnot. bool bHidden = pRuntime->ToBoolean(vp); if (!m_pAnnot) @@ -78,14 +77,14 @@ CJS_Return Annot::set_hidden(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(true); } -CJS_Return Annot::get_name(CJS_Runtime* pRuntime) { +CJS_Return CJS_Annot::get_name(CJS_Runtime* pRuntime) { if (!m_pAnnot) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); return CJS_Return( pRuntime->NewString(ToBAAnnot(m_pAnnot.Get())->GetAnnotName().c_str())); } -CJS_Return Annot::set_name(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Annot::set_name(CJS_Runtime* pRuntime, v8::Local vp) { // May invalidate m_pAnnot. WideString annotName = pRuntime->ToWideString(vp); if (!m_pAnnot) @@ -95,7 +94,7 @@ CJS_Return Annot::set_name(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(true); } -CJS_Return Annot::get_type(CJS_Runtime* pRuntime) { +CJS_Return CJS_Annot::get_type(CJS_Runtime* pRuntime) { if (!m_pAnnot) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); return CJS_Return(pRuntime->NewString( @@ -105,10 +104,6 @@ CJS_Return Annot::get_type(CJS_Runtime* pRuntime) { .c_str())); } -CJS_Return Annot::set_type(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Annot::set_type(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(JSGetStringFromID(JSMessage::kReadOnlyError)); } - -void Annot::SetSDKAnnot(CPDFSDK_BAAnnot* annot) { - m_pAnnot.Reset(annot); -} diff --git a/fxjs/cjs_annot.h b/fxjs/cjs_annot.h index 9f0d771a44..bbcf4ac178 100644 --- a/fxjs/cjs_annot.h +++ b/fxjs/cjs_annot.h @@ -10,10 +10,24 @@ #include "fpdfsdk/cpdfsdk_baannot.h" #include "fxjs/JS_Define.h" -class Annot : public CJS_EmbedObj { +class CJS_Annot : public CJS_Object { public: - explicit Annot(CJS_Object* pJSObject); - ~Annot() override; + static int GetObjDefnID(); + static void DefineJSObjects(CFXJS_Engine* pEngine); + + explicit CJS_Annot(v8::Local pObject); + ~CJS_Annot() override; + + void SetSDKAnnot(CPDFSDK_BAAnnot* annot) { m_pAnnot.Reset(annot); } + + JS_STATIC_PROP(hidden, hidden, CJS_Annot); + JS_STATIC_PROP(name, name, CJS_Annot); + JS_STATIC_PROP(type, type, CJS_Annot); + + private: + static int ObjDefnID; + static const char kName[]; + static const JSPropertySpec PropertySpecs[]; CJS_Return get_hidden(CJS_Runtime* pRuntime); CJS_Return set_hidden(CJS_Runtime* pRuntime, v8::Local vp); @@ -24,27 +38,7 @@ class Annot : public CJS_EmbedObj { CJS_Return get_type(CJS_Runtime* pRuntime); CJS_Return set_type(CJS_Runtime* pRuntime, v8::Local vp); - void SetSDKAnnot(CPDFSDK_BAAnnot* annot); - - private: CPDFSDK_Annot::ObservedPtr m_pAnnot; }; -class CJS_Annot : public CJS_Object { - public: - static int GetObjDefnID(); - static void DefineJSObjects(CFXJS_Engine* pEngine); - - explicit CJS_Annot(v8::Local pObject); - ~CJS_Annot() override = default; - - JS_STATIC_PROP(hidden, hidden, Annot); - JS_STATIC_PROP(name, name, Annot); - JS_STATIC_PROP(type, type, Annot); - - private: - static int ObjDefnID; - static const JSPropertySpec PropertySpecs[]; -}; - #endif // FXJS_CJS_ANNOT_H_ diff --git a/fxjs/cjs_app.cpp b/fxjs/cjs_app.cpp index 6a540f9beb..1df0146a58 100644 --- a/fxjs/cjs_app.cpp +++ b/fxjs/cjs_app.cpp @@ -75,24 +75,22 @@ const JSMethodSpec CJS_App::MethodSpecs[] = { int CJS_App::ObjDefnID = -1; +const char CJS_App::kName[] = "app"; + // static void CJS_App::DefineJSObjects(CFXJS_Engine* pEngine) { - ObjDefnID = pEngine->DefineObj("app", FXJSOBJTYPE_STATIC, + ObjDefnID = pEngine->DefineObj(CJS_App::kName, FXJSOBJTYPE_STATIC, JSConstructor, JSDestructor); DefineProps(pEngine, ObjDefnID, PropertySpecs, FX_ArraySize(PropertySpecs)); DefineMethods(pEngine, ObjDefnID, MethodSpecs, FX_ArraySize(MethodSpecs)); } -CJS_App::CJS_App(v8::Local pObject) : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} - -app::app(CJS_Object* pJSObject) - : CJS_EmbedObj(pJSObject), m_bCalculate(true), m_bRuntimeHighLight(false) {} +CJS_App::CJS_App(v8::Local pObject) + : CJS_Object(pObject), m_bCalculate(true), m_bRuntimeHighLight(false) {} -app::~app() = default; +CJS_App::~CJS_App() = default; -CJS_Return app::get_active_docs(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_active_docs(CJS_Runtime* pRuntime) { CJS_Document* pJSDocument = nullptr; v8::Local pObj = pRuntime->GetThisObj(); if (CFXJS_Engine::GetObjDefnID(pObj) == CJS_Document::GetObjDefnID()) @@ -108,49 +106,50 @@ CJS_Return app::get_active_docs(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewUndefined()); } -CJS_Return app::set_active_docs(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_App::set_active_docs(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return app::get_calculate(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_calculate(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewBoolean(m_bCalculate)); } -CJS_Return app::set_calculate(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_App::set_calculate(CJS_Runtime* pRuntime, + v8::Local vp) { m_bCalculate = pRuntime->ToBoolean(vp); pRuntime->GetFormFillEnv()->GetInterForm()->EnableCalculate(m_bCalculate); return CJS_Return(true); } -CJS_Return app::get_forms_version(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_forms_version(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(JS_NUM_FORMSVERSION)); } -CJS_Return app::set_forms_version(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_App::set_forms_version(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return app::get_viewer_type(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_viewer_type(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(JS_STR_VIEWERTYPE)); } -CJS_Return app::set_viewer_type(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_App::set_viewer_type(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return app::get_viewer_variation(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_viewer_variation(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(JS_STR_VIEWERVARIATION)); } -CJS_Return app::set_viewer_variation(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_App::set_viewer_variation(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return app::get_viewer_version(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_viewer_version(CJS_Runtime* pRuntime) { #ifdef PDF_ENABLE_XFA CPDFXFA_Context* pXFAContext = pRuntime->GetFormFillEnv()->GetXFAContext(); if (pXFAContext->ContainsXFAForm()) @@ -159,12 +158,12 @@ CJS_Return app::get_viewer_version(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(JS_NUM_VIEWERVERSION)); } -CJS_Return app::set_viewer_version(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_App::set_viewer_version(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return app::get_platform(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_platform(CJS_Runtime* pRuntime) { #ifdef PDF_ENABLE_XFA CPDFSDK_FormFillEnvironment* pFormFillEnv = pRuntime->GetFormFillEnv(); if (!pFormFillEnv) @@ -177,11 +176,12 @@ CJS_Return app::get_platform(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(JS_STR_PLATFORM)); } -CJS_Return app::set_platform(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_App::set_platform(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return app::get_language(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_language(CJS_Runtime* pRuntime) { #ifdef PDF_ENABLE_XFA CPDFSDK_FormFillEnvironment* pFormFillEnv = pRuntime->GetFormFillEnv(); if (!pFormFillEnv) @@ -194,7 +194,8 @@ CJS_Return app::get_language(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(JS_STR_LANGUAGE)); } -CJS_Return app::set_language(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_App::set_language(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } @@ -202,8 +203,8 @@ CJS_Return app::set_language(CJS_Runtime* pRuntime, v8::Local vp) { // comment: need reader support // note: // CFDF_Document * CPDFSDK_FormFillEnvironment::NewFDF(); -CJS_Return app::newFDF(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::newFDF(CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } @@ -214,13 +215,13 @@ CJS_Return app::newFDF(CJS_Runtime* pRuntime, // CFDF_Document * CPDFSDK_FormFillEnvironment::OpenFDF(string strPath,bool // bUserConv); -CJS_Return app::openFDF(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::openFDF(CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } -CJS_Return app::alert(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::alert(CJS_Runtime* pRuntime, + const std::vector>& params) { std::vector> newParams = ExpandKeywordParams( pRuntime, params, 4, L"cMsg", L"nIcon", L"nType", L"cTitle"); @@ -270,8 +271,8 @@ CJS_Return app::alert(CJS_Runtime* pRuntime, return CJS_Return(ret); } -CJS_Return app::beep(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::beep(CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() == 1) { pRuntime->GetFormFillEnv()->JS_appBeep(pRuntime->ToInt32(params[0])); return CJS_Return(true); @@ -279,26 +280,29 @@ CJS_Return app::beep(CJS_Runtime* pRuntime, return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); } -CJS_Return app::findComponent(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::findComponent( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } -CJS_Return app::popUpMenuEx(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::popUpMenuEx( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(false); } -CJS_Return app::get_fs(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_fs(CJS_Runtime* pRuntime) { return CJS_Return(false); } -CJS_Return app::set_fs(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_App::set_fs(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(false); } -CJS_Return app::setInterval(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::setInterval( + CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() > 2 || params.size() == 0) return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); @@ -319,14 +323,13 @@ CJS_Return app::setInterval(CJS_Runtime* pRuntime, CJS_TimerObj* pJS_TimerObj = static_cast(pRuntime->GetObjectPrivate(pRetObj)); - TimerObj* pTimerObj = static_cast(pJS_TimerObj->GetEmbedObject()); - pTimerObj->SetTimer(timerRef); - + pJS_TimerObj->SetTimer(timerRef); return CJS_Return(pRetObj); } -CJS_Return app::setTimeOut(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::setTimeOut( + CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() > 2 || params.size() == 0) return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); @@ -347,31 +350,33 @@ CJS_Return app::setTimeOut(CJS_Runtime* pRuntime, CJS_TimerObj* pJS_TimerObj = static_cast(pRuntime->GetObjectPrivate(pRetObj)); - TimerObj* pTimerObj = static_cast(pJS_TimerObj->GetEmbedObject()); - pTimerObj->SetTimer(timerRef); + pJS_TimerObj->SetTimer(timerRef); return CJS_Return(pRetObj); } -CJS_Return app::clearTimeOut(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::clearTimeOut( + CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() != 1) return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); - app::ClearTimerCommon(pRuntime, params[0]); + CJS_App::ClearTimerCommon(pRuntime, params[0]); return CJS_Return(true); } -CJS_Return app::clearInterval(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::clearInterval( + CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() != 1) return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); - app::ClearTimerCommon(pRuntime, params[0]); + CJS_App::ClearTimerCommon(pRuntime, params[0]); return CJS_Return(true); } -void app::ClearTimerCommon(CJS_Runtime* pRuntime, v8::Local param) { +void CJS_App::ClearTimerCommon(CJS_Runtime* pRuntime, + v8::Local param) { if (!param->IsObject()) return; @@ -383,29 +388,27 @@ void app::ClearTimerCommon(CJS_Runtime* pRuntime, v8::Local param) { if (!pJSObj) return; - TimerObj* pTimerObj = static_cast(pJSObj->GetEmbedObject()); - if (!pTimerObj) - return; - - GlobalTimer::Cancel(pTimerObj->GetTimerID()); + CJS_TimerObj* pJS_TimerObj = static_cast(pJSObj); + GlobalTimer::Cancel(pJS_TimerObj->GetTimerID()); } -CJS_Return app::execMenuItem(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::execMenuItem( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(false); } -void app::TimerProc(GlobalTimer* pTimer) { +void CJS_App::TimerProc(GlobalTimer* pTimer) { CJS_Runtime* pRuntime = pTimer->GetRuntime(); if (pRuntime && (!pTimer->IsOneShot() || pTimer->GetTimeOut() > 0)) RunJsScript(pRuntime, pTimer->GetJScript()); } -void app::CancelProc(GlobalTimer* pTimer) { +void CJS_App::CancelProc(GlobalTimer* pTimer) { m_Timers.erase(pdfium::FakeUniquePtr(pTimer)); } -void app::RunJsScript(CJS_Runtime* pRuntime, const WideString& wsScript) { +void CJS_App::RunJsScript(CJS_Runtime* pRuntime, const WideString& wsScript) { if (!pRuntime->IsBlocking()) { IJS_EventContext* pContext = pRuntime->NewEventContext(); pContext->OnExternal_Exec(); @@ -415,20 +418,20 @@ void app::RunJsScript(CJS_Runtime* pRuntime, const WideString& wsScript) { } } -CJS_Return app::goBack(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::goBack(CJS_Runtime* pRuntime, + const std::vector>& params) { // Not supported. return CJS_Return(true); } -CJS_Return app::goForward(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::goForward(CJS_Runtime* pRuntime, + const std::vector>& params) { // Not supported. return CJS_Return(true); } -CJS_Return app::mailMsg(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::mailMsg(CJS_Runtime* pRuntime, + const std::vector>& params) { std::vector> newParams = ExpandKeywordParams(pRuntime, params, 6, L"bUI", L"cTo", L"cCc", L"cBcc", L"cSubject", L"cMsg"); @@ -470,42 +473,44 @@ CJS_Return app::mailMsg(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return app::launchURL(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::launchURL(CJS_Runtime* pRuntime, + const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return app::get_runtime_highlight(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_runtime_highlight(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewBoolean(m_bRuntimeHighLight)); } -CJS_Return app::set_runtime_highlight(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_App::set_runtime_highlight(CJS_Runtime* pRuntime, + v8::Local vp) { m_bRuntimeHighLight = pRuntime->ToBoolean(vp); return CJS_Return(true); } -CJS_Return app::get_fullscreen(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_fullscreen(CJS_Runtime* pRuntime) { return CJS_Return(false); } -CJS_Return app::set_fullscreen(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_App::set_fullscreen(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return app::popUpMenu(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::popUpMenu(CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(false); } -CJS_Return app::browseForDoc(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::browseForDoc( + CJS_Runtime* pRuntime, + const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -WideString app::SysPathToPDFPath(const WideString& sOldPath) { +WideString CJS_App::SysPathToPDFPath(const WideString& sOldPath) { WideString sRet = L"/"; for (const wchar_t& c : sOldPath) { if (c != L':') @@ -514,18 +519,18 @@ WideString app::SysPathToPDFPath(const WideString& sOldPath) { return sRet; } -CJS_Return app::newDoc(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::newDoc(CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(false); } -CJS_Return app::openDoc(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::openDoc(CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(false); } -CJS_Return app::response(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::response(CJS_Runtime* pRuntime, + const std::vector>& params) { std::vector> newParams = ExpandKeywordParams(pRuntime, params, 5, L"cQuestion", L"cTitle", L"cDefault", L"bPassword", L"cLabel"); @@ -565,15 +570,16 @@ CJS_Return app::response(CJS_Runtime* pRuntime, .c_str())); } -CJS_Return app::get_media(CJS_Runtime* pRuntime) { +CJS_Return CJS_App::get_media(CJS_Runtime* pRuntime) { return CJS_Return(false); } -CJS_Return app::set_media(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_App::set_media(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(false); } -CJS_Return app::execDialog(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_App::execDialog( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } diff --git a/fxjs/cjs_app.h b/fxjs/cjs_app.h index 33b61a017b..e195c6db24 100644 --- a/fxjs/cjs_app.h +++ b/fxjs/cjs_app.h @@ -16,10 +16,58 @@ class CJS_Runtime; class GlobalTimer; -class app : public CJS_EmbedObj { +class CJS_App : public CJS_Object { public: - explicit app(CJS_Object* pJSObject); - ~app() override; + static void DefineJSObjects(CFXJS_Engine* pEngine); + + explicit CJS_App(v8::Local pObject); + ~CJS_App() override; + + void TimerProc(GlobalTimer* pTimer); + void CancelProc(GlobalTimer* pTimer); + + static WideString SysPathToPDFPath(const WideString& sOldPath); + + JS_STATIC_PROP(activeDocs, active_docs, CJS_App); + JS_STATIC_PROP(calculate, calculate, CJS_App); + JS_STATIC_PROP(formsVersion, forms_version, CJS_App); + JS_STATIC_PROP(fs, fs, CJS_App); + JS_STATIC_PROP(fullscreen, fullscreen, CJS_App); + JS_STATIC_PROP(language, language, CJS_App); + JS_STATIC_PROP(media, media, CJS_App); + JS_STATIC_PROP(platform, platform, CJS_App); + JS_STATIC_PROP(runtimeHighlight, runtime_highlight, CJS_App); + JS_STATIC_PROP(viewerType, viewer_type, CJS_App); + JS_STATIC_PROP(viewerVariation, viewer_variation, CJS_App); + JS_STATIC_PROP(viewerVersion, viewer_version, CJS_App); + + JS_STATIC_METHOD(alert, CJS_App); + JS_STATIC_METHOD(beep, CJS_App); + JS_STATIC_METHOD(browseForDoc, CJS_App); + JS_STATIC_METHOD(clearInterval, CJS_App); + JS_STATIC_METHOD(clearTimeOut, CJS_App); + JS_STATIC_METHOD(execDialog, CJS_App); + JS_STATIC_METHOD(execMenuItem, CJS_App); + JS_STATIC_METHOD(findComponent, CJS_App); + JS_STATIC_METHOD(goBack, CJS_App); + JS_STATIC_METHOD(goForward, CJS_App); + JS_STATIC_METHOD(launchURL, CJS_App); + JS_STATIC_METHOD(mailMsg, CJS_App); + JS_STATIC_METHOD(newFDF, CJS_App); + JS_STATIC_METHOD(newDoc, CJS_App); + JS_STATIC_METHOD(openDoc, CJS_App); + JS_STATIC_METHOD(openFDF, CJS_App); + JS_STATIC_METHOD(popUpMenuEx, CJS_App); + JS_STATIC_METHOD(popUpMenu, CJS_App); + JS_STATIC_METHOD(response, CJS_App); + JS_STATIC_METHOD(setInterval, CJS_App); + JS_STATIC_METHOD(setTimeOut, CJS_App); + + private: + static int ObjDefnID; + static const char kName[]; + static const JSPropertySpec PropertySpecs[]; + static const JSMethodSpec MethodSpecs[]; CJS_Return get_active_docs(CJS_Runtime* pRuntime); CJS_Return set_active_docs(CJS_Runtime* pRuntime, v8::Local vp); @@ -102,15 +150,7 @@ class app : public CJS_EmbedObj { CJS_Return setTimeOut(CJS_Runtime* pRuntime, const std::vector>& params); - void TimerProc(GlobalTimer* pTimer); - void CancelProc(GlobalTimer* pTimer); - - static WideString SysPathToPDFPath(const WideString& sOldPath); - - private: - // CJS_EmbedObj void RunJsScript(CJS_Runtime* pRuntime, const WideString& wsScript); - void ClearTimerCommon(CJS_Runtime* pRuntime, v8::Local param); bool m_bCalculate; @@ -118,52 +158,4 @@ class app : public CJS_EmbedObj { std::set> m_Timers; }; -class CJS_App : public CJS_Object { - public: - static void DefineJSObjects(CFXJS_Engine* pEngine); - - explicit CJS_App(v8::Local pObject); - ~CJS_App() override = default; - - JS_STATIC_PROP(activeDocs, active_docs, app); - JS_STATIC_PROP(calculate, calculate, app); - JS_STATIC_PROP(formsVersion, forms_version, app); - JS_STATIC_PROP(fs, fs, app); - JS_STATIC_PROP(fullscreen, fullscreen, app); - JS_STATIC_PROP(language, language, app); - JS_STATIC_PROP(media, media, app); - JS_STATIC_PROP(platform, platform, app); - JS_STATIC_PROP(runtimeHighlight, runtime_highlight, app); - JS_STATIC_PROP(viewerType, viewer_type, app); - JS_STATIC_PROP(viewerVariation, viewer_variation, app); - JS_STATIC_PROP(viewerVersion, viewer_version, app); - - JS_STATIC_METHOD(alert, app); - JS_STATIC_METHOD(beep, app); - JS_STATIC_METHOD(browseForDoc, app); - JS_STATIC_METHOD(clearInterval, app); - JS_STATIC_METHOD(clearTimeOut, app); - JS_STATIC_METHOD(execDialog, app); - JS_STATIC_METHOD(execMenuItem, app); - JS_STATIC_METHOD(findComponent, app); - JS_STATIC_METHOD(goBack, app); - JS_STATIC_METHOD(goForward, app); - JS_STATIC_METHOD(launchURL, app); - JS_STATIC_METHOD(mailMsg, app); - JS_STATIC_METHOD(newFDF, app); - JS_STATIC_METHOD(newDoc, app); - JS_STATIC_METHOD(openDoc, app); - JS_STATIC_METHOD(openFDF, app); - JS_STATIC_METHOD(popUpMenuEx, app); - JS_STATIC_METHOD(popUpMenu, app); - JS_STATIC_METHOD(response, app); - JS_STATIC_METHOD(setInterval, app); - JS_STATIC_METHOD(setTimeOut, app); - - private: - static int ObjDefnID; - static const JSPropertySpec PropertySpecs[]; - static const JSMethodSpec MethodSpecs[]; -}; - #endif // FXJS_CJS_APP_H_ diff --git a/fxjs/cjs_color.cpp b/fxjs/cjs_color.cpp index 35747f91dc..a0cb02a99c 100644 --- a/fxjs/cjs_color.cpp +++ b/fxjs/cjs_color.cpp @@ -32,22 +32,19 @@ const JSMethodSpec CJS_Color::MethodSpecs[] = {{"convert", convert_static}, {"equal", equal_static}}; int CJS_Color::ObjDefnID = -1; +const char CJS_Color::kName[] = "color"; // static void CJS_Color::DefineJSObjects(CFXJS_Engine* pEngine) { - ObjDefnID = pEngine->DefineObj("color", FXJSOBJTYPE_STATIC, + ObjDefnID = pEngine->DefineObj(CJS_Color::kName, FXJSOBJTYPE_STATIC, JSConstructor, JSDestructor); DefineProps(pEngine, ObjDefnID, PropertySpecs, FX_ArraySize(PropertySpecs)); DefineMethods(pEngine, ObjDefnID, MethodSpecs, FX_ArraySize(MethodSpecs)); } -CJS_Color::CJS_Color(v8::Local pObject) : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} - // static -v8::Local color::ConvertPWLColorToArray(CJS_Runtime* pRuntime, - const CFX_Color& color) { +v8::Local CJS_Color::ConvertPWLColorToArray(CJS_Runtime* pRuntime, + const CFX_Color& color) { v8::Local array; switch (color.nColorType) { case CFX_Color::kTransparent: @@ -79,8 +76,8 @@ v8::Local color::ConvertPWLColorToArray(CJS_Runtime* pRuntime, } // static -CFX_Color color::ConvertArrayToPWLColor(CJS_Runtime* pRuntime, - v8::Local array) { +CFX_Color CJS_Color::ConvertArrayToPWLColor(CJS_Runtime* pRuntime, + v8::Local array) { int nArrayLen = pRuntime->GetArrayLength(array); if (nArrayLen < 1) return CFX_Color(); @@ -124,132 +121,137 @@ CFX_Color color::ConvertArrayToPWLColor(CJS_Runtime* pRuntime, return CFX_Color(); } -color::color(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) { - m_crTransparent = CFX_Color(CFX_Color::kTransparent); - m_crBlack = CFX_Color(CFX_Color::kGray, 0); - m_crWhite = CFX_Color(CFX_Color::kGray, 1); - m_crRed = CFX_Color(CFX_Color::kRGB, 1, 0, 0); - m_crGreen = CFX_Color(CFX_Color::kRGB, 0, 1, 0); - m_crBlue = CFX_Color(CFX_Color::kRGB, 0, 0, 1); - m_crCyan = CFX_Color(CFX_Color::kCMYK, 1, 0, 0, 0); - m_crMagenta = CFX_Color(CFX_Color::kCMYK, 0, 1, 0, 0); - m_crYellow = CFX_Color(CFX_Color::kCMYK, 0, 0, 1, 0); - m_crDKGray = CFX_Color(CFX_Color::kGray, 0.25); - m_crGray = CFX_Color(CFX_Color::kGray, 0.5); - m_crLTGray = CFX_Color(CFX_Color::kGray, 0.75); -} - -color::~color() {} - -CJS_Return color::get_transparent(CJS_Runtime* pRuntime) { +CJS_Color::CJS_Color(v8::Local pObject) + : CJS_Object(pObject), + m_crTransparent(CFX_Color::kTransparent), + m_crBlack(CFX_Color::kGray, 0), + m_crWhite(CFX_Color::kGray, 1), + m_crRed(CFX_Color::kRGB, 1, 0, 0), + m_crGreen(CFX_Color::kRGB, 0, 1, 0), + m_crBlue(CFX_Color::kRGB, 0, 0, 1), + m_crCyan(CFX_Color::kCMYK, 1, 0, 0, 0), + m_crMagenta(CFX_Color::kCMYK, 0, 1, 0, 0), + m_crYellow(CFX_Color::kCMYK, 0, 0, 1, 0), + m_crDKGray(CFX_Color::kGray, 0.25), + m_crGray(CFX_Color::kGray, 0.5), + m_crLTGray(CFX_Color::kGray, 0.75) {} + +CJS_Color::~CJS_Color() = default; + +CJS_Return CJS_Color::get_transparent(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crTransparent); } -CJS_Return color::set_transparent(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Color::set_transparent(CJS_Runtime* pRuntime, + v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crTransparent); } -CJS_Return color::get_black(CJS_Runtime* pRuntime) { +CJS_Return CJS_Color::get_black(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crBlack); } -CJS_Return color::set_black(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Color::set_black(CJS_Runtime* pRuntime, + v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crBlack); } -CJS_Return color::get_white(CJS_Runtime* pRuntime) { +CJS_Return CJS_Color::get_white(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crWhite); } -CJS_Return color::set_white(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Color::set_white(CJS_Runtime* pRuntime, + v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crWhite); } -CJS_Return color::get_red(CJS_Runtime* pRuntime) { +CJS_Return CJS_Color::get_red(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crRed); } -CJS_Return color::set_red(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Color::set_red(CJS_Runtime* pRuntime, v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crRed); } -CJS_Return color::get_green(CJS_Runtime* pRuntime) { +CJS_Return CJS_Color::get_green(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crGreen); } -CJS_Return color::set_green(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Color::set_green(CJS_Runtime* pRuntime, + v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crGreen); } -CJS_Return color::get_blue(CJS_Runtime* pRuntime) { +CJS_Return CJS_Color::get_blue(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crBlue); } -CJS_Return color::set_blue(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Color::set_blue(CJS_Runtime* pRuntime, v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crBlue); } -CJS_Return color::get_cyan(CJS_Runtime* pRuntime) { +CJS_Return CJS_Color::get_cyan(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crCyan); } -CJS_Return color::set_cyan(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Color::set_cyan(CJS_Runtime* pRuntime, v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crCyan); } -CJS_Return color::get_magenta(CJS_Runtime* pRuntime) { +CJS_Return CJS_Color::get_magenta(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crMagenta); } -CJS_Return color::set_magenta(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Color::set_magenta(CJS_Runtime* pRuntime, + v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crMagenta); } -CJS_Return color::get_yellow(CJS_Runtime* pRuntime) { +CJS_Return CJS_Color::get_yellow(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crYellow); } -CJS_Return color::set_yellow(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Color::set_yellow(CJS_Runtime* pRuntime, + v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crYellow); } -CJS_Return color::get_dark_gray(CJS_Runtime* pRuntime) { +CJS_Return CJS_Color::get_dark_gray(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crDKGray); } -CJS_Return color::set_dark_gray(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Color::set_dark_gray(CJS_Runtime* pRuntime, + v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crDKGray); } -CJS_Return color::get_gray(CJS_Runtime* pRuntime) { +CJS_Return CJS_Color::get_gray(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crGray); } -CJS_Return color::set_gray(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Color::set_gray(CJS_Runtime* pRuntime, v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crGray); } -CJS_Return color::get_light_gray(CJS_Runtime* pRuntime) { +CJS_Return CJS_Color::get_light_gray(CJS_Runtime* pRuntime) { return GetPropertyHelper(pRuntime, &m_crLTGray); } -CJS_Return color::set_light_gray(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Color::set_light_gray(CJS_Runtime* pRuntime, + v8::Local vp) { return SetPropertyHelper(pRuntime, vp, &m_crLTGray); } -CJS_Return color::GetPropertyHelper(CJS_Runtime* pRuntime, CFX_Color* var) { +CJS_Return CJS_Color::GetPropertyHelper(CJS_Runtime* pRuntime, CFX_Color* var) { v8::Local array = ConvertPWLColorToArray(pRuntime, *var); if (array.IsEmpty()) return CJS_Return(pRuntime->NewArray()); return CJS_Return(array); } -CJS_Return color::SetPropertyHelper(CJS_Runtime* pRuntime, - v8::Local vp, - CFX_Color* var) { +CJS_Return CJS_Color::SetPropertyHelper(CJS_Runtime* pRuntime, + v8::Local vp, + CFX_Color* var) { if (vp.IsEmpty() || !vp->IsArray()) return CJS_Return(false); @@ -257,8 +259,8 @@ CJS_Return color::SetPropertyHelper(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return color::convert(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Color::convert(CJS_Runtime* pRuntime, + const std::vector>& params) { int iSize = params.size(); if (iSize < 2) return CJS_Return(false); @@ -286,8 +288,8 @@ CJS_Return color::convert(CJS_Runtime* pRuntime, return CJS_Return(array); } -CJS_Return color::equal(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Color::equal(CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() < 2) return CJS_Return(false); if (params[0].IsEmpty() || !params[0]->IsArray() || params[1].IsEmpty() || diff --git a/fxjs/cjs_color.h b/fxjs/cjs_color.h index fab035db21..667a13c21a 100644 --- a/fxjs/cjs_color.h +++ b/fxjs/cjs_color.h @@ -12,15 +12,38 @@ #include "fpdfsdk/pwl/cpwl_wnd.h" #include "fxjs/JS_Define.h" -class color : public CJS_EmbedObj { +class CJS_Color : public CJS_Object { public: + static void DefineJSObjects(CFXJS_Engine* pEngine); static v8::Local ConvertPWLColorToArray(CJS_Runtime* pRuntime, const CFX_Color& color); static CFX_Color ConvertArrayToPWLColor(CJS_Runtime* pRuntime, v8::Local array); - explicit color(CJS_Object* pJSObject); - ~color() override; + explicit CJS_Color(v8::Local pObject); + ~CJS_Color() override; + + JS_STATIC_PROP(black, black, CJS_Color); + JS_STATIC_PROP(blue, blue, CJS_Color); + JS_STATIC_PROP(cyan, cyan, CJS_Color); + JS_STATIC_PROP(dkGray, dark_gray, CJS_Color); + JS_STATIC_PROP(gray, gray, CJS_Color); + JS_STATIC_PROP(green, green, CJS_Color); + JS_STATIC_PROP(ltGray, light_gray, CJS_Color); + JS_STATIC_PROP(magenta, magenta, CJS_Color); + JS_STATIC_PROP(red, red, CJS_Color); + JS_STATIC_PROP(transparent, transparent, CJS_Color); + JS_STATIC_PROP(white, white, CJS_Color); + JS_STATIC_PROP(yellow, yellow, CJS_Color); + + JS_STATIC_METHOD(convert, CJS_Color); + JS_STATIC_METHOD(equal, CJS_Color); + + private: + static int ObjDefnID; + static const char kName[]; + static const JSPropertySpec PropertySpecs[]; + static const JSMethodSpec MethodSpecs[]; CJS_Return get_black(CJS_Runtime* pRuntime); CJS_Return set_black(CJS_Runtime* pRuntime, v8::Local vp); @@ -63,7 +86,6 @@ class color : public CJS_EmbedObj { CJS_Return equal(CJS_Runtime* pRuntime, const std::vector>& params); - private: CJS_Return GetPropertyHelper(CJS_Runtime* pRuntime, CFX_Color* val); CJS_Return SetPropertyHelper(CJS_Runtime* pRuntime, v8::Local vp, @@ -83,33 +105,4 @@ class color : public CJS_EmbedObj { CFX_Color m_crLTGray; }; -class CJS_Color : public CJS_Object { - public: - static void DefineJSObjects(CFXJS_Engine* pEngine); - - explicit CJS_Color(v8::Local pObject); - ~CJS_Color() override = default; - - JS_STATIC_PROP(black, black, color); - JS_STATIC_PROP(blue, blue, color); - JS_STATIC_PROP(cyan, cyan, color); - JS_STATIC_PROP(dkGray, dark_gray, color); - JS_STATIC_PROP(gray, gray, color); - JS_STATIC_PROP(green, green, color); - JS_STATIC_PROP(ltGray, light_gray, color); - JS_STATIC_PROP(magenta, magenta, color); - JS_STATIC_PROP(red, red, color); - JS_STATIC_PROP(transparent, transparent, color); - JS_STATIC_PROP(white, white, color); - JS_STATIC_PROP(yellow, yellow, color); - - JS_STATIC_METHOD(convert, color); - JS_STATIC_METHOD(equal, color); - - private: - static int ObjDefnID; - static const JSPropertySpec PropertySpecs[]; - static const JSMethodSpec MethodSpecs[]; -}; - #endif // FXJS_CJS_COLOR_H_ diff --git a/fxjs/cjs_console.cpp b/fxjs/cjs_console.cpp index 2b4dd27977..2b7c84ad78 100644 --- a/fxjs/cjs_console.cpp +++ b/fxjs/cjs_console.cpp @@ -19,38 +19,36 @@ const JSMethodSpec CJS_Console::MethodSpecs[] = {{"clear", clear_static}, {"show", show_static}}; int CJS_Console::ObjDefnID = -1; +const char CJS_Console::kName[] = "console"; // static void CJS_Console::DefineJSObjects(CFXJS_Engine* pEngine) { - ObjDefnID = pEngine->DefineObj("console", FXJSOBJTYPE_STATIC, + ObjDefnID = pEngine->DefineObj(CJS_Console::kName, FXJSOBJTYPE_STATIC, JSConstructor, JSDestructor); DefineMethods(pEngine, ObjDefnID, MethodSpecs, FX_ArraySize(MethodSpecs)); } -CJS_Console::CJS_Console(v8::Local pObject) : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} - -console::console(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {} +CJS_Console::CJS_Console(v8::Local pObject) : CJS_Object(pObject) {} -console::~console() = default; +CJS_Console::~CJS_Console() = default; -CJS_Return console::clear(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Console::clear(CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } -CJS_Return console::hide(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Console::hide(CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } -CJS_Return console::println(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Console::println( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(params.size() > 0); } -CJS_Return console::show(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Console::show(CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } diff --git a/fxjs/cjs_console.h b/fxjs/cjs_console.h index 22c18dec12..56243cf6a5 100644 --- a/fxjs/cjs_console.h +++ b/fxjs/cjs_console.h @@ -11,37 +11,31 @@ #include "fxjs/JS_Define.h" -class console : public CJS_EmbedObj { - public: - explicit console(CJS_Object* pJSObject); - ~console() override; - - public: - CJS_Return clear(CJS_Runtime* pRuntime, - const std::vector>& params); - CJS_Return hide(CJS_Runtime* pRuntime, - const std::vector>& params); - CJS_Return println(CJS_Runtime* pRuntime, - const std::vector>& params); - CJS_Return show(CJS_Runtime* pRuntime, - const std::vector>& params); -}; - class CJS_Console : public CJS_Object { public: static void DefineJSObjects(CFXJS_Engine* pEngine); explicit CJS_Console(v8::Local pObject); - ~CJS_Console() override = default; + ~CJS_Console() override; - JS_STATIC_METHOD(clear, console); - JS_STATIC_METHOD(hide, console); - JS_STATIC_METHOD(println, console); - JS_STATIC_METHOD(show, console); + JS_STATIC_METHOD(clear, CJS_Console); + JS_STATIC_METHOD(hide, CJS_Console); + JS_STATIC_METHOD(println, CJS_Console); + JS_STATIC_METHOD(show, CJS_Console); private: static int ObjDefnID; + static const char kName[]; static const JSMethodSpec MethodSpecs[]; + + CJS_Return clear(CJS_Runtime* pRuntime, + const std::vector>& params); + CJS_Return hide(CJS_Runtime* pRuntime, + const std::vector>& params); + CJS_Return println(CJS_Runtime* pRuntime, + const std::vector>& params); + CJS_Return show(CJS_Runtime* pRuntime, + const std::vector>& params); }; #endif // FXJS_CJS_CONSOLE_H_ diff --git a/fxjs/cjs_document.cpp b/fxjs/cjs_document.cpp index f8bdecda79..c4a5ff4091 100644 --- a/fxjs/cjs_document.cpp +++ b/fxjs/cjs_document.cpp @@ -108,6 +108,7 @@ const JSMethodSpec CJS_Document::MethodSpecs[] = { {"mailDoc", mailDoc_static}}; int CJS_Document::ObjDefnID = -1; +const char CJS_Document::kName[] = "Document"; // static int CJS_Document::GetObjDefnID() { @@ -116,33 +117,27 @@ int CJS_Document::GetObjDefnID() { // static void CJS_Document::DefineJSObjects(CFXJS_Engine* pEngine) { - ObjDefnID = pEngine->DefineObj("Document", FXJSOBJTYPE_GLOBAL, + ObjDefnID = pEngine->DefineObj(CJS_Document::kName, FXJSOBJTYPE_GLOBAL, JSConstructor, JSDestructor); DefineProps(pEngine, ObjDefnID, PropertySpecs, FX_ArraySize(PropertySpecs)); DefineMethods(pEngine, ObjDefnID, MethodSpecs, FX_ArraySize(MethodSpecs)); } CJS_Document::CJS_Document(v8::Local pObject) - : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} - -void CJS_Document::InitInstance(IJS_Runtime* pIRuntime) { - CJS_Runtime* pRuntime = static_cast(pIRuntime); - Document* pDoc = static_cast(GetEmbedObject()); - pDoc->SetFormFillEnv(pRuntime->GetFormFillEnv()); -} - -Document::Document(CJS_Object* pJSObject) - : CJS_EmbedObj(pJSObject), + : CJS_Object(pObject), m_pFormFillEnv(nullptr), m_cwBaseURL(L""), m_bDelay(false) {} -Document::~Document() = default; +CJS_Document::~CJS_Document() = default; + +void CJS_Document::InitInstance(IJS_Runtime* pIRuntime) { + CJS_Runtime* pRuntime = static_cast(pIRuntime); + SetFormFillEnv(pRuntime->GetFormFillEnv()); +} // The total number of fields in document. -CJS_Return Document::get_num_fields(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_num_fields(CJS_Runtime* pRuntime) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -152,18 +147,19 @@ CJS_Return Document::get_num_fields(CJS_Runtime* pRuntime) { static_cast(pPDFForm->CountFields(WideString())))); } -CJS_Return Document::set_num_fields(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_num_fields(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(JSGetStringFromID(JSMessage::kReadOnlyError)); } -CJS_Return Document::get_dirty(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_dirty(CJS_Runtime* pRuntime) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); return CJS_Return(pRuntime->NewBoolean(!!m_pFormFillEnv->GetChangeMark())); } -CJS_Return Document::set_dirty(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Document::set_dirty(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -172,15 +168,16 @@ CJS_Return Document::set_dirty(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::get_ADBE(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_ADBE(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewUndefined()); } -CJS_Return Document::set_ADBE(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Document::set_ADBE(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::get_page_num(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_page_num(CJS_Runtime* pRuntime) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -190,8 +187,8 @@ CJS_Return Document::get_page_num(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(pPageView->GetPageIndex())); } -CJS_Return Document::set_page_num(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_page_num(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -207,41 +204,44 @@ CJS_Return Document::set_page_num(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return Document::addAnnot(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::addAnnot( + CJS_Runtime* pRuntime, + const std::vector>& params) { // Not supported. return CJS_Return(true); } -CJS_Return Document::addField(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::addField( + CJS_Runtime* pRuntime, + const std::vector>& params) { // Not supported. return CJS_Return(true); } -CJS_Return Document::exportAsText( +CJS_Return CJS_Document::exportAsText( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Document::exportAsFDF( +CJS_Return CJS_Document::exportAsFDF( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Document::exportAsXFDF( +CJS_Return CJS_Document::exportAsXFDF( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Document::getField(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::getField( + CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() < 1) return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); if (!m_pFormFillEnv) @@ -260,8 +260,7 @@ CJS_Return Document::getField(CJS_Runtime* pRuntime, CJS_Field* pJSField = static_cast(pRuntime->GetObjectPrivate(pFieldObj)); - Field* pField = static_cast(pJSField->GetEmbedObject()); - pField->AttachField(this, wideName); + pJSField->AttachField(this, wideName); if (!pJSField) return CJS_Return(false); @@ -269,7 +268,7 @@ CJS_Return Document::getField(CJS_Runtime* pRuntime, } // Gets the name of the nth field in the document -CJS_Return Document::getNthFieldName( +CJS_Return CJS_Document::getNthFieldName( CJS_Runtime* pRuntime, const std::vector>& params) { if (params.size() != 1) @@ -289,21 +288,21 @@ CJS_Return Document::getNthFieldName( return CJS_Return(pRuntime->NewString(pField->GetFullName().c_str())); } -CJS_Return Document::importAnFDF( +CJS_Return CJS_Document::importAnFDF( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Document::importAnXFDF( +CJS_Return CJS_Document::importAnXFDF( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Document::importTextData( +CJS_Return CJS_Document::importTextData( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, not supported. @@ -313,8 +312,9 @@ CJS_Return Document::importTextData( // exports the form data and mails the resulting fdf file as an attachment to // all recipients. // comment: need reader supports -CJS_Return Document::mailForm(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::mailForm( + CJS_Runtime* pRuntime, + const std::vector>& params) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); if (!m_pFormFillEnv->GetPermissions(FPDFPERM_EXTRACT_ACCESS)) @@ -346,8 +346,9 @@ CJS_Return Document::mailForm(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return Document::print(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::print( + CJS_Runtime* pRuntime, + const std::vector>& params) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -368,17 +369,16 @@ CJS_Return Document::print(CJS_Runtime* pRuntime, v8::Local pObj = pRuntime->ToObject(params[8]); CJS_Object* pJSObj = pRuntime->GetObjectPrivate(pObj); if (pJSObj) { - if (PrintParamsObj* pprintparamsObj = - static_cast(pJSObj->GetEmbedObject())) { - bUI = pprintparamsObj->bUI; - nStart = pprintparamsObj->nStart; - nEnd = pprintparamsObj->nEnd; - bSilent = pprintparamsObj->bSilent; - bShrinkToFit = pprintparamsObj->bShrinkToFit; - bPrintAsImage = pprintparamsObj->bPrintAsImage; - bReverse = pprintparamsObj->bReverse; - bAnnotations = pprintparamsObj->bAnnotations; - } + CJS_PrintParamsObj* printObj = + static_cast(pJSObj); + bUI = printObj->GetUI(); + nStart = printObj->GetStart(); + nEnd = printObj->GetEnd(); + bSilent = printObj->GetSilent(); + bShrinkToFit = printObj->GetShrinkToFit(); + bPrintAsImage = printObj->GetPrintAsImage(); + bReverse = printObj->GetReverse(); + bAnnotations = printObj->GetAnnotations(); } } } @@ -413,7 +413,7 @@ CJS_Return Document::print(CJS_Runtime* pRuntime, // comment: // note: if the filed name is not rational, adobe is dumb for it. -CJS_Return Document::removeField( +CJS_Return CJS_Document::removeField( CJS_Runtime* pRuntime, const std::vector>& params) { if (params.size() != 1) @@ -467,7 +467,7 @@ CJS_Return Document::removeField( // comment: // note: if the fields names r not rational, aodbe is dumb for it. -CJS_Return Document::resetForm( +CJS_Return CJS_Document::resetForm( CJS_Runtime* pRuntime, const std::vector>& params) { if (!m_pFormFillEnv) @@ -510,19 +510,20 @@ CJS_Return Document::resetForm( return CJS_Return(true); } -CJS_Return Document::saveAs(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::saveAs( + CJS_Runtime* pRuntime, + const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Document::syncAnnotScan( +CJS_Return CJS_Document::syncAnnotScan( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(true); } -CJS_Return Document::submitForm( +CJS_Return CJS_Document::submitForm( CJS_Runtime* pRuntime, const std::vector>& params) { int nSize = params.size(); @@ -588,21 +589,22 @@ CJS_Return Document::submitForm( return CJS_Return(true); } -void Document::SetFormFillEnv(CPDFSDK_FormFillEnvironment* pFormFillEnv) { +void CJS_Document::SetFormFillEnv(CPDFSDK_FormFillEnvironment* pFormFillEnv) { m_pFormFillEnv.Reset(pFormFillEnv); } -CJS_Return Document::get_bookmark_root(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_bookmark_root(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Document::set_bookmark_root(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_bookmark_root(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::mailDoc(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::mailDoc( + CJS_Runtime* pRuntime, + const std::vector>& params) { // TODO(tsepez): Check maximum number of allowed params. bool bUI = true; WideString cTo = L""; @@ -643,16 +645,16 @@ CJS_Return Document::mailDoc(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return Document::get_author(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_author(CJS_Runtime* pRuntime) { return getPropertyInternal(pRuntime, "Author"); } -CJS_Return Document::set_author(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_author(CJS_Runtime* pRuntime, + v8::Local vp) { return setPropertyInternal(pRuntime, vp, "Author"); } -CJS_Return Document::get_info(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_info(CJS_Runtime* pRuntime) { if (!m_pFormFillEnv) CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -711,12 +713,13 @@ CJS_Return Document::get_info(CJS_Runtime* pRuntime) { return CJS_Return(pObj); } -CJS_Return Document::set_info(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Document::set_info(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(JSGetStringFromID(JSMessage::kReadOnlyError)); } -CJS_Return Document::getPropertyInternal(CJS_Runtime* pRuntime, - const ByteString& propName) { +CJS_Return CJS_Document::getPropertyInternal(CJS_Runtime* pRuntime, + const ByteString& propName) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -727,9 +730,9 @@ CJS_Return Document::getPropertyInternal(CJS_Runtime* pRuntime, pRuntime->NewString(pDictionary->GetUnicodeTextFor(propName).c_str())); } -CJS_Return Document::setPropertyInternal(CJS_Runtime* pRuntime, - v8::Local vp, - const ByteString& propName) { +CJS_Return CJS_Document::setPropertyInternal(CJS_Runtime* pRuntime, + v8::Local vp, + const ByteString& propName) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -747,31 +750,32 @@ CJS_Return Document::setPropertyInternal(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return Document::get_creation_date(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_creation_date(CJS_Runtime* pRuntime) { return getPropertyInternal(pRuntime, "CreationDate"); } -CJS_Return Document::set_creation_date(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_creation_date(CJS_Runtime* pRuntime, + v8::Local vp) { return setPropertyInternal(pRuntime, vp, "CreationDate"); } -CJS_Return Document::get_creator(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_creator(CJS_Runtime* pRuntime) { return getPropertyInternal(pRuntime, "Creator"); } -CJS_Return Document::set_creator(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_creator(CJS_Runtime* pRuntime, + v8::Local vp) { return setPropertyInternal(pRuntime, vp, "Creator"); } -CJS_Return Document::get_delay(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_delay(CJS_Runtime* pRuntime) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); return CJS_Return(pRuntime->NewBoolean(m_bDelay)); } -CJS_Return Document::set_delay(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Document::set_delay(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); if (!m_pFormFillEnv->GetPermissions(FPDFPERM_MODIFY)) @@ -786,129 +790,131 @@ CJS_Return Document::set_delay(CJS_Runtime* pRuntime, v8::Local vp) { std::list> DelayDataToProcess; DelayDataToProcess.swap(m_DelayData); for (const auto& pData : DelayDataToProcess) - Field::DoDelay(m_pFormFillEnv.Get(), pData.get()); + CJS_Field::DoDelay(m_pFormFillEnv.Get(), pData.get()); return CJS_Return(true); } -CJS_Return Document::get_keywords(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_keywords(CJS_Runtime* pRuntime) { return getPropertyInternal(pRuntime, "Keywords"); } -CJS_Return Document::set_keywords(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_keywords(CJS_Runtime* pRuntime, + v8::Local vp) { return setPropertyInternal(pRuntime, vp, "Keywords"); } -CJS_Return Document::get_mod_date(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_mod_date(CJS_Runtime* pRuntime) { return getPropertyInternal(pRuntime, "ModDate"); } -CJS_Return Document::set_mod_date(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_mod_date(CJS_Runtime* pRuntime, + v8::Local vp) { return setPropertyInternal(pRuntime, vp, "ModDate"); } -CJS_Return Document::get_producer(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_producer(CJS_Runtime* pRuntime) { return getPropertyInternal(pRuntime, "Producer"); } -CJS_Return Document::set_producer(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_producer(CJS_Runtime* pRuntime, + v8::Local vp) { return setPropertyInternal(pRuntime, vp, "Producer"); } -CJS_Return Document::get_subject(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_subject(CJS_Runtime* pRuntime) { return getPropertyInternal(pRuntime, "Subject"); } -CJS_Return Document::set_subject(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_subject(CJS_Runtime* pRuntime, + v8::Local vp) { return setPropertyInternal(pRuntime, vp, "Subject"); } -CJS_Return Document::get_title(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_title(CJS_Runtime* pRuntime) { if (!m_pFormFillEnv || !m_pFormFillEnv->GetUnderlyingDocument()) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); return getPropertyInternal(pRuntime, "Title"); } -CJS_Return Document::set_title(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Document::set_title(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_pFormFillEnv || !m_pFormFillEnv->GetUnderlyingDocument()) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); return setPropertyInternal(pRuntime, vp, "Title"); } -CJS_Return Document::get_num_pages(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_num_pages(CJS_Runtime* pRuntime) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); return CJS_Return(pRuntime->NewNumber(m_pFormFillEnv->GetPageCount())); } -CJS_Return Document::set_num_pages(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_num_pages(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(JSGetStringFromID(JSMessage::kReadOnlyError)); } -CJS_Return Document::get_external(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_external(CJS_Runtime* pRuntime) { // In Chrome case, should always return true. return CJS_Return(pRuntime->NewBoolean(true)); } -CJS_Return Document::set_external(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_external(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::get_filesize(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_filesize(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(0)); } -CJS_Return Document::set_filesize(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_filesize(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(JSGetStringFromID(JSMessage::kReadOnlyError)); } -CJS_Return Document::get_mouse_x(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_mouse_x(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Document::set_mouse_x(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_mouse_x(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::get_mouse_y(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_mouse_y(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Document::set_mouse_y(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_mouse_y(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::get_URL(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_URL(CJS_Runtime* pRuntime) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); return CJS_Return( pRuntime->NewString(m_pFormFillEnv->JS_docGetFilePath().c_str())); } -CJS_Return Document::set_URL(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Document::set_URL(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(JSGetStringFromID(JSMessage::kReadOnlyError)); } -CJS_Return Document::get_base_URL(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_base_URL(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(m_cwBaseURL.c_str())); } -CJS_Return Document::set_base_URL(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_base_URL(CJS_Runtime* pRuntime, + v8::Local vp) { m_cwBaseURL = pRuntime->ToWideString(vp); return CJS_Return(true); } -CJS_Return Document::get_calculate(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_calculate(CJS_Runtime* pRuntime) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -916,8 +922,8 @@ CJS_Return Document::get_calculate(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewBoolean(!!pInterForm->IsCalculateEnabled())); } -CJS_Return Document::set_calculate(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_calculate(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -926,7 +932,7 @@ CJS_Return Document::set_calculate(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return Document::get_document_file_name(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_document_file_name(CJS_Runtime* pRuntime) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); @@ -944,58 +950,62 @@ CJS_Return Document::get_document_file_name(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(L"")); } -CJS_Return Document::set_document_file_name(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_document_file_name(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(JSGetStringFromID(JSMessage::kReadOnlyError)); } -CJS_Return Document::get_path(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_path(CJS_Runtime* pRuntime) { if (!m_pFormFillEnv) return CJS_Return(JSGetStringFromID(JSMessage::kBadObjectError)); return CJS_Return(pRuntime->NewString( - app::SysPathToPDFPath(m_pFormFillEnv->JS_docGetFilePath()).c_str())); + CJS_App::SysPathToPDFPath(m_pFormFillEnv->JS_docGetFilePath()).c_str())); } -CJS_Return Document::set_path(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Document::set_path(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(JSGetStringFromID(JSMessage::kReadOnlyError)); } -CJS_Return Document::get_page_window_rect(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_page_window_rect(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Document::set_page_window_rect(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_page_window_rect(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::get_layout(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_layout(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Document::set_layout(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_layout(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::addLink(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::addLink( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } -CJS_Return Document::closeDoc(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::closeDoc( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } -CJS_Return Document::getPageBox( +CJS_Return CJS_Document::getPageBox( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(true); } -CJS_Return Document::getAnnot(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::getAnnot( + CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() != 2) return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); if (!m_pFormFillEnv) @@ -1030,13 +1040,11 @@ CJS_Return Document::getAnnot(CJS_Runtime* pRuntime, if (!pJS_Annot) return CJS_Return(false); - Annot* pAnnot = static_cast(pJS_Annot->GetEmbedObject()); - pAnnot->SetSDKAnnot(pSDKBAAnnot); - + pJS_Annot->SetSDKAnnot(pSDKBAAnnot); return CJS_Return(pJS_Annot->ToV8Object()); } -CJS_Return Document::getAnnots( +CJS_Return CJS_Document::getAnnots( CJS_Runtime* pRuntime, const std::vector>& params) { if (!m_pFormFillEnv) @@ -1064,8 +1072,7 @@ CJS_Return Document::getAnnots( CJS_Annot* pJS_Annot = static_cast(pRuntime->GetObjectPrivate(pObj)); - Annot* pAnnot = static_cast(pJS_Annot->GetEmbedObject()); - pAnnot->SetSDKAnnot(static_cast(pSDKAnnotCur.Get())); + pJS_Annot->SetSDKAnnot(static_cast(pSDKAnnotCur.Get())); pRuntime->PutArrayElement( annots, i, pJS_Annot ? v8::Local(pJS_Annot->ToV8Object()) @@ -1075,35 +1082,39 @@ CJS_Return Document::getAnnots( return CJS_Return(annots); } -CJS_Return Document::getAnnot3D( +CJS_Return CJS_Document::getAnnot3D( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(pRuntime->NewUndefined()); } -CJS_Return Document::getAnnots3D( +CJS_Return CJS_Document::getAnnots3D( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(true); } -CJS_Return Document::getOCGs(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::getOCGs( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } -CJS_Return Document::getLinks(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::getLinks( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } -bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect) { +bool CJS_Document::IsEnclosedInRect(CFX_FloatRect rect, + CFX_FloatRect LinkRect) { return (rect.left <= LinkRect.left && rect.top <= LinkRect.top && rect.right >= LinkRect.right && rect.bottom >= LinkRect.bottom); } -CJS_Return Document::addIcon(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::addIcon( + CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() != 2) return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); @@ -1117,14 +1128,14 @@ CJS_Return Document::addIcon(CJS_Runtime* pRuntime, v8::Local pObj = pRuntime->ToObject(params[1]); CJS_Object* obj = pRuntime->GetObjectPrivate(pObj); - if (!obj->GetEmbedObject()) + if (!obj) return CJS_Return(JSGetStringFromID(JSMessage::kTypeError)); m_IconNames.push_back(swIconName); return CJS_Return(true); } -CJS_Return Document::get_icons(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_icons(CJS_Runtime* pRuntime) { if (m_IconNames.empty()) return CJS_Return(pRuntime->NewUndefined()); @@ -1138,8 +1149,7 @@ CJS_Return Document::get_icons(CJS_Runtime* pRuntime) { CJS_Icon* pJS_Icon = static_cast(pRuntime->GetObjectPrivate(pObj)); - Icon* pIcon = static_cast(pJS_Icon->GetEmbedObject()); - pIcon->SetIconName(name); + pJS_Icon->SetIconName(name); pRuntime->PutArrayElement(Icons, i++, pJS_Icon ? v8::Local(pJS_Icon->ToV8Object()) @@ -1148,12 +1158,14 @@ CJS_Return Document::get_icons(CJS_Runtime* pRuntime) { return CJS_Return(Icons); } -CJS_Return Document::set_icons(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Document::set_icons(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(JSGetStringFromID(JSMessage::kReadOnlyError)); } -CJS_Return Document::getIcon(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::getIcon( + CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() != 1) return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); @@ -1171,34 +1183,34 @@ CJS_Return Document::getIcon(CJS_Runtime* pRuntime, if (!pJS_Icon) return CJS_Return(false); - Icon* pIcon = static_cast(pJS_Icon->GetEmbedObject()); - pIcon->SetIconName(*it); + pJS_Icon->SetIconName(*it); return CJS_Return(pJS_Icon->ToV8Object()); } -CJS_Return Document::removeIcon( +CJS_Return CJS_Document::removeIcon( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, no supported. return CJS_Return(true); } -CJS_Return Document::createDataObject( +CJS_Return CJS_Document::createDataObject( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, not implemented. return CJS_Return(true); } -CJS_Return Document::get_media(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_media(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Document::set_media(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Document::set_media(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::calculateNow( +CJS_Return CJS_Document::calculateNow( CJS_Runtime* pRuntime, const std::vector>& params) { if (!m_pFormFillEnv) @@ -1214,16 +1226,16 @@ CJS_Return Document::calculateNow( return CJS_Return(true); } -CJS_Return Document::get_collab(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_collab(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Document::set_collab(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_collab(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::getPageNthWord( +CJS_Return CJS_Document::getPageNthWord( CJS_Runtime* pRuntime, const std::vector>& params) { if (!m_pFormFillEnv) @@ -1270,7 +1282,7 @@ CJS_Return Document::getPageNthWord( return CJS_Return(pRuntime->NewString(swRet.c_str())); } -CJS_Return Document::getPageNthWordQuads( +CJS_Return CJS_Document::getPageNthWordQuads( CJS_Runtime* pRuntime, const std::vector>& params) { if (!m_pFormFillEnv) @@ -1280,7 +1292,7 @@ CJS_Return Document::getPageNthWordQuads( return CJS_Return(false); } -CJS_Return Document::getPageNumWords( +CJS_Return CJS_Document::getPageNumWords( CJS_Runtime* pRuntime, const std::vector>& params) { if (!m_pFormFillEnv) @@ -1309,7 +1321,7 @@ CJS_Return Document::getPageNumWords( return CJS_Return(pRuntime->NewNumber(nWords)); } -CJS_Return Document::getPrintParams( +CJS_Return CJS_Document::getPrintParams( CJS_Runtime* pRuntime, const std::vector>& params) { v8::Local pRetObj = @@ -1324,7 +1336,7 @@ CJS_Return Document::getPrintParams( #define ISLATINWORD(u) (u != 0x20 && u <= 0x28FF) -int Document::CountWords(CPDF_TextObject* pTextObj) { +int CJS_Document::CountWords(CPDF_TextObject* pTextObj) { if (!pTextObj) return 0; @@ -1358,7 +1370,8 @@ int Document::CountWords(CPDF_TextObject* pTextObj) { return nWords; } -WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, int nWordIndex) { +WideString CJS_Document::GetObjWordStr(CPDF_TextObject* pTextObj, + int nWordIndex) { WideString swRet; CPDF_Font* pFont = pTextObj->GetFont(); @@ -1393,58 +1406,60 @@ WideString Document::GetObjWordStr(CPDF_TextObject* pTextObj, int nWordIndex) { return swRet; } -CJS_Return Document::get_zoom(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_zoom(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Document::set_zoom(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Document::set_zoom(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::get_zoom_type(CJS_Runtime* pRuntime) { +CJS_Return CJS_Document::get_zoom_type(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Document::set_zoom_type(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Document::set_zoom_type(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Document::deletePages( +CJS_Return CJS_Document::deletePages( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Document::extractPages( +CJS_Return CJS_Document::extractPages( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Document::insertPages( +CJS_Return CJS_Document::insertPages( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Document::replacePages( +CJS_Return CJS_Document::replacePages( CJS_Runtime* pRuntime, const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Document::getURL(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Document::getURL( + CJS_Runtime* pRuntime, + const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Document::gotoNamedDest( +CJS_Return CJS_Document::gotoNamedDest( CJS_Runtime* pRuntime, const std::vector>& params) { if (params.size() != 1) @@ -1477,11 +1492,12 @@ CJS_Return Document::gotoNamedDest( return CJS_Return(true); } -void Document::AddDelayData(std::unique_ptr pData) { +void CJS_Document::AddDelayData(std::unique_ptr pData) { m_DelayData.push_back(std::move(pData)); } -void Document::DoFieldDelay(const WideString& sFieldName, int nControlIndex) { +void CJS_Document::DoFieldDelay(const WideString& sFieldName, + int nControlIndex) { std::vector> delayed_data; auto iter = m_DelayData.begin(); while (iter != m_DelayData.end()) { @@ -1494,9 +1510,5 @@ void Document::DoFieldDelay(const WideString& sFieldName, int nControlIndex) { } for (const auto& pData : delayed_data) - Field::DoDelay(m_pFormFillEnv.Get(), pData.get()); -} - -CJS_Document* Document::GetCJSDoc() const { - return static_cast(m_pJSObject.Get()); + CJS_Field::DoDelay(m_pFormFillEnv.Get(), pData.get()); } diff --git a/fxjs/cjs_document.h b/fxjs/cjs_document.h index 0b0a158864..179b8eff4c 100644 --- a/fxjs/cjs_document.h +++ b/fxjs/cjs_document.h @@ -18,10 +18,105 @@ class CPDF_TextObject; struct CJS_DelayData; -class Document : public CJS_EmbedObj { +class CJS_Document : public CJS_Object { public: - explicit Document(CJS_Object* pJSObject); - ~Document() override; + static int GetObjDefnID(); + static void DefineJSObjects(CFXJS_Engine* pEngine); + + explicit CJS_Document(v8::Local pObject); + ~CJS_Document() override; + + // CJS_Object + void InitInstance(IJS_Runtime* pIRuntime) override; + + void SetFormFillEnv(CPDFSDK_FormFillEnvironment* pFormFillEnv); + CPDFSDK_FormFillEnvironment* GetFormFillEnv() const { + return m_pFormFillEnv.Get(); + } + void AddDelayData(std::unique_ptr pData); + void DoFieldDelay(const WideString& sFieldName, int nControlIndex); + + JS_STATIC_PROP(ADBE, ADBE, CJS_Document); + JS_STATIC_PROP(author, author, CJS_Document); + JS_STATIC_PROP(baseURL, base_URL, CJS_Document); + JS_STATIC_PROP(bookmarkRoot, bookmark_root, CJS_Document); + JS_STATIC_PROP(calculate, calculate, CJS_Document); + JS_STATIC_PROP(Collab, collab, CJS_Document); + JS_STATIC_PROP(creationDate, creation_date, CJS_Document); + JS_STATIC_PROP(creator, creator, CJS_Document); + JS_STATIC_PROP(delay, delay, CJS_Document); + JS_STATIC_PROP(dirty, dirty, CJS_Document); + JS_STATIC_PROP(documentFileName, document_file_name, CJS_Document); + JS_STATIC_PROP(external, external, CJS_Document); + JS_STATIC_PROP(filesize, filesize, CJS_Document); + JS_STATIC_PROP(icons, icons, CJS_Document); + JS_STATIC_PROP(info, info, CJS_Document); + JS_STATIC_PROP(keywords, keywords, CJS_Document); + JS_STATIC_PROP(layout, layout, CJS_Document); + JS_STATIC_PROP(media, media, CJS_Document); + JS_STATIC_PROP(modDate, mod_date, CJS_Document); + JS_STATIC_PROP(mouseX, mouse_x, CJS_Document); + JS_STATIC_PROP(mouseY, mouse_y, CJS_Document); + JS_STATIC_PROP(numFields, num_fields, CJS_Document); + JS_STATIC_PROP(numPages, num_pages, CJS_Document); + JS_STATIC_PROP(pageNum, page_num, CJS_Document); + JS_STATIC_PROP(pageWindowRect, page_window_rect, CJS_Document); + JS_STATIC_PROP(path, path, CJS_Document); + JS_STATIC_PROP(producer, producer, CJS_Document); + JS_STATIC_PROP(subject, subject, CJS_Document); + JS_STATIC_PROP(title, title, CJS_Document); + JS_STATIC_PROP(URL, URL, CJS_Document); + JS_STATIC_PROP(zoom, zoom, CJS_Document); + JS_STATIC_PROP(zoomType, zoom_type, CJS_Document); + + JS_STATIC_METHOD(addAnnot, CJS_Document); + JS_STATIC_METHOD(addField, CJS_Document); + JS_STATIC_METHOD(addLink, CJS_Document); + JS_STATIC_METHOD(addIcon, CJS_Document); + JS_STATIC_METHOD(calculateNow, CJS_Document); + JS_STATIC_METHOD(closeDoc, CJS_Document); + JS_STATIC_METHOD(createDataObject, CJS_Document); + JS_STATIC_METHOD(deletePages, CJS_Document); + JS_STATIC_METHOD(exportAsText, CJS_Document); + JS_STATIC_METHOD(exportAsFDF, CJS_Document); + JS_STATIC_METHOD(exportAsXFDF, CJS_Document); + JS_STATIC_METHOD(extractPages, CJS_Document); + JS_STATIC_METHOD(getAnnot, CJS_Document); + JS_STATIC_METHOD(getAnnots, CJS_Document); + JS_STATIC_METHOD(getAnnot3D, CJS_Document); + JS_STATIC_METHOD(getAnnots3D, CJS_Document); + JS_STATIC_METHOD(getField, CJS_Document); + JS_STATIC_METHOD(getIcon, CJS_Document); + JS_STATIC_METHOD(getLinks, CJS_Document); + JS_STATIC_METHOD(getNthFieldName, CJS_Document); + JS_STATIC_METHOD(getOCGs, CJS_Document); + JS_STATIC_METHOD(getPageBox, CJS_Document); + JS_STATIC_METHOD(getPageNthWord, CJS_Document); + JS_STATIC_METHOD(getPageNthWordQuads, CJS_Document); + JS_STATIC_METHOD(getPageNumWords, CJS_Document); + JS_STATIC_METHOD(getPrintParams, CJS_Document); + JS_STATIC_METHOD(getURL, CJS_Document); + JS_STATIC_METHOD(gotoNamedDest, CJS_Document); + JS_STATIC_METHOD(importAnFDF, CJS_Document); + JS_STATIC_METHOD(importAnXFDF, CJS_Document); + JS_STATIC_METHOD(importTextData, CJS_Document); + JS_STATIC_METHOD(insertPages, CJS_Document); + JS_STATIC_METHOD(mailForm, CJS_Document); + JS_STATIC_METHOD(print, CJS_Document); + JS_STATIC_METHOD(removeField, CJS_Document); + JS_STATIC_METHOD(replacePages, CJS_Document); + JS_STATIC_METHOD(removeIcon, CJS_Document); + JS_STATIC_METHOD(resetForm, CJS_Document); + JS_STATIC_METHOD(saveAs, CJS_Document); + JS_STATIC_METHOD(submitForm, CJS_Document); + JS_STATIC_METHOD(syncAnnotScan, CJS_Document); + JS_STATIC_METHOD(mailDoc, CJS_Document); + + private: + static int ObjDefnID; + static const char kName[]; + static const JSPropertySpec PropertySpecs[]; + static const JSMethodSpec MethodSpecs[]; CJS_Return get_ADBE(CJS_Runtime* pRuntime); CJS_Return set_ADBE(CJS_Runtime* pRuntime, v8::Local vp); @@ -207,15 +302,6 @@ class Document : public CJS_EmbedObj { CJS_Return removeIcon(CJS_Runtime* pRuntime, const std::vector>& params); - void SetFormFillEnv(CPDFSDK_FormFillEnvironment* pFormFillEnv); - CPDFSDK_FormFillEnvironment* GetFormFillEnv() const { - return m_pFormFillEnv.Get(); - } - void AddDelayData(std::unique_ptr pData); - void DoFieldDelay(const WideString& sFieldName, int nControlIndex); - CJS_Document* GetCJSDoc() const; - - private: bool IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect); int CountWords(CPDF_TextObject* pTextObj); WideString GetObjWordStr(CPDF_TextObject* pTextObj, int nWordIndex); @@ -234,97 +320,4 @@ class Document : public CJS_EmbedObj { bool m_bDelay; }; -class CJS_Document : public CJS_Object { - public: - static int GetObjDefnID(); - static void DefineJSObjects(CFXJS_Engine* pEngine); - - explicit CJS_Document(v8::Local pObject); - ~CJS_Document() override = default; - - // CJS_Object - void InitInstance(IJS_Runtime* pIRuntime) override; - - JS_STATIC_PROP(ADBE, ADBE, Document); - JS_STATIC_PROP(author, author, Document); - JS_STATIC_PROP(baseURL, base_URL, Document); - JS_STATIC_PROP(bookmarkRoot, bookmark_root, Document); - JS_STATIC_PROP(calculate, calculate, Document); - JS_STATIC_PROP(Collab, collab, Document); - JS_STATIC_PROP(creationDate, creation_date, Document); - JS_STATIC_PROP(creator, creator, Document); - JS_STATIC_PROP(delay, delay, Document); - JS_STATIC_PROP(dirty, dirty, Document); - JS_STATIC_PROP(documentFileName, document_file_name, Document); - JS_STATIC_PROP(external, external, Document); - JS_STATIC_PROP(filesize, filesize, Document); - JS_STATIC_PROP(icons, icons, Document); - JS_STATIC_PROP(info, info, Document); - JS_STATIC_PROP(keywords, keywords, Document); - JS_STATIC_PROP(layout, layout, Document); - JS_STATIC_PROP(media, media, Document); - JS_STATIC_PROP(modDate, mod_date, Document); - JS_STATIC_PROP(mouseX, mouse_x, Document); - JS_STATIC_PROP(mouseY, mouse_y, Document); - JS_STATIC_PROP(numFields, num_fields, Document); - JS_STATIC_PROP(numPages, num_pages, Document); - JS_STATIC_PROP(pageNum, page_num, Document); - JS_STATIC_PROP(pageWindowRect, page_window_rect, Document); - JS_STATIC_PROP(path, path, Document); - JS_STATIC_PROP(producer, producer, Document); - JS_STATIC_PROP(subject, subject, Document); - JS_STATIC_PROP(title, title, Document); - JS_STATIC_PROP(URL, URL, Document); - JS_STATIC_PROP(zoom, zoom, Document); - JS_STATIC_PROP(zoomType, zoom_type, Document); - - JS_STATIC_METHOD(addAnnot, Document); - JS_STATIC_METHOD(addField, Document); - JS_STATIC_METHOD(addLink, Document); - JS_STATIC_METHOD(addIcon, Document); - JS_STATIC_METHOD(calculateNow, Document); - JS_STATIC_METHOD(closeDoc, Document); - JS_STATIC_METHOD(createDataObject, Document); - JS_STATIC_METHOD(deletePages, Document); - JS_STATIC_METHOD(exportAsText, Document); - JS_STATIC_METHOD(exportAsFDF, Document); - JS_STATIC_METHOD(exportAsXFDF, Document); - JS_STATIC_METHOD(extractPages, Document); - JS_STATIC_METHOD(getAnnot, Document); - JS_STATIC_METHOD(getAnnots, Document); - JS_STATIC_METHOD(getAnnot3D, Document); - JS_STATIC_METHOD(getAnnots3D, Document); - JS_STATIC_METHOD(getField, Document); - JS_STATIC_METHOD(getIcon, Document); - JS_STATIC_METHOD(getLinks, Document); - JS_STATIC_METHOD(getNthFieldName, Document); - JS_STATIC_METHOD(getOCGs, Document); - JS_STATIC_METHOD(getPageBox, Document); - JS_STATIC_METHOD(getPageNthWord, Document); - JS_STATIC_METHOD(getPageNthWordQuads, Document); - JS_STATIC_METHOD(getPageNumWords, Document); - JS_STATIC_METHOD(getPrintParams, Document); - JS_STATIC_METHOD(getURL, Document); - JS_STATIC_METHOD(gotoNamedDest, Document); - JS_STATIC_METHOD(importAnFDF, Document); - JS_STATIC_METHOD(importAnXFDF, Document); - JS_STATIC_METHOD(importTextData, Document); - JS_STATIC_METHOD(insertPages, Document); - JS_STATIC_METHOD(mailForm, Document); - JS_STATIC_METHOD(print, Document); - JS_STATIC_METHOD(removeField, Document); - JS_STATIC_METHOD(replacePages, Document); - JS_STATIC_METHOD(removeIcon, Document); - JS_STATIC_METHOD(resetForm, Document); - JS_STATIC_METHOD(saveAs, Document); - JS_STATIC_METHOD(submitForm, Document); - JS_STATIC_METHOD(syncAnnotScan, Document); - JS_STATIC_METHOD(mailDoc, Document); - - private: - static int ObjDefnID; - static const JSPropertySpec PropertySpecs[]; - static const JSMethodSpec MethodSpecs[]; -}; - #endif // FXJS_CJS_DOCUMENT_H_ diff --git a/fxjs/cjs_embedobj.cpp b/fxjs/cjs_embedobj.cpp deleted file mode 100644 index cbebd6311b..0000000000 --- a/fxjs/cjs_embedobj.cpp +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "fxjs/cjs_embedobj.h" - -#include "fxjs/cjs_object.h" - -CJS_EmbedObj::CJS_EmbedObj(CJS_Object* pJSObject) : m_pJSObject(pJSObject) {} - -CJS_EmbedObj::~CJS_EmbedObj() {} diff --git a/fxjs/cjs_embedobj.h b/fxjs/cjs_embedobj.h deleted file mode 100644 index 82e549e321..0000000000 --- a/fxjs/cjs_embedobj.h +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef FXJS_CJS_EMBEDOBJ_H_ -#define FXJS_CJS_EMBEDOBJ_H_ - -#include "core/fxcrt/unowned_ptr.h" - -class CJS_Object; - -class CJS_EmbedObj { - public: - explicit CJS_EmbedObj(CJS_Object* pJSObject); - virtual ~CJS_EmbedObj(); - - CJS_Object* GetJSObject() const { return m_pJSObject.Get(); } - - protected: - UnownedPtr const m_pJSObject; -}; - -#endif // FXJS_CJS_EMBEDOBJ_H_ diff --git a/fxjs/cjs_event.cpp b/fxjs/cjs_event.cpp index 7736f0dda4..341bcc4147 100644 --- a/fxjs/cjs_event.cpp +++ b/fxjs/cjs_event.cpp @@ -35,29 +35,27 @@ const JSPropertySpec CJS_Event::PropertySpecs[] = { {"willCommit", get_will_commit_static, set_will_commit_static}}; int CJS_Event::ObjDefnID = -1; +const char CJS_Event::kName[] = "event"; // static void CJS_Event::DefineJSObjects(CFXJS_Engine* pEngine) { - ObjDefnID = pEngine->DefineObj("event", FXJSOBJTYPE_STATIC, + ObjDefnID = pEngine->DefineObj(CJS_Event::kName, FXJSOBJTYPE_STATIC, JSConstructor, JSDestructor); DefineProps(pEngine, ObjDefnID, PropertySpecs, FX_ArraySize(PropertySpecs)); } -CJS_Event::CJS_Event(v8::Local pObject) : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} - -event::event(CJS_Object* pJsObject) : CJS_EmbedObj(pJsObject) {} +CJS_Event::CJS_Event(v8::Local pObject) : CJS_Object(pObject) {} -event::~event() = default; +CJS_Event::~CJS_Event() = default; -CJS_Return event::get_change(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_change(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); return CJS_Return(pRuntime->NewString(pEvent->Change().c_str())); } -CJS_Return event::set_change(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Event::set_change(CJS_Runtime* pRuntime, + v8::Local vp) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); @@ -68,31 +66,31 @@ CJS_Return event::set_change(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(true); } -CJS_Return event::get_change_ex(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_change_ex(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); return CJS_Return(pRuntime->NewString(pEvent->ChangeEx().c_str())); } -CJS_Return event::set_change_ex(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Event::set_change_ex(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return event::get_commit_key(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_commit_key(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); return CJS_Return(pRuntime->NewNumber(pEvent->CommitKey())); } -CJS_Return event::set_commit_key(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Event::set_commit_key(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return event::get_field_full(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_field_full(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); @@ -102,82 +100,84 @@ CJS_Return event::get_field_full(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewBoolean(pEvent->FieldFull())); } -CJS_Return event::set_field_full(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Event::set_field_full(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return event::get_key_down(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_key_down(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); return CJS_Return(pRuntime->NewBoolean(pEvent->KeyDown())); } -CJS_Return event::set_key_down(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Event::set_key_down(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return event::get_modifier(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_modifier(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); return CJS_Return(pRuntime->NewBoolean(pEvent->Modifier())); } -CJS_Return event::set_modifier(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Event::set_modifier(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return event::get_name(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_name(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); return CJS_Return(pRuntime->NewString(pEvent->Name())); } -CJS_Return event::set_name(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Event::set_name(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(false); } -CJS_Return event::get_rc(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_rc(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); return CJS_Return(pRuntime->NewBoolean(pEvent->Rc())); } -CJS_Return event::set_rc(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Event::set_rc(CJS_Runtime* pRuntime, v8::Local vp) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); pEvent->Rc() = pRuntime->ToBoolean(vp); return CJS_Return(true); } -CJS_Return event::get_rich_change(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_rich_change(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return event::set_rich_change(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Event::set_rich_change(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return event::get_rich_change_ex(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_rich_change_ex(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return event::set_rich_change_ex(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Event::set_rich_change_ex(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return event::get_rich_value(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_rich_value(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return event::set_rich_value(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Event::set_rich_value(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return event::get_sel_end(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_sel_end(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); @@ -187,7 +187,8 @@ CJS_Return event::get_sel_end(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(pEvent->SelEnd())); } -CJS_Return event::set_sel_end(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Event::set_sel_end(CJS_Runtime* pRuntime, + v8::Local vp) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); @@ -198,7 +199,7 @@ CJS_Return event::set_sel_end(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(true); } -CJS_Return event::get_sel_start(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_sel_start(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); @@ -208,8 +209,8 @@ CJS_Return event::get_sel_start(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(pEvent->SelStart())); } -CJS_Return event::set_sel_start(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Event::set_sel_start(CJS_Runtime* pRuntime, + v8::Local vp) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); @@ -220,58 +221,61 @@ CJS_Return event::set_sel_start(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return event::get_shift(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_shift(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); return CJS_Return(pRuntime->NewBoolean(pEvent->Shift())); } -CJS_Return event::set_shift(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Event::set_shift(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return event::get_source(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_source(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); - return CJS_Return(pEvent->Source()->GetJSObject()->ToV8Object()); + return CJS_Return(pEvent->Source()->ToV8Object()); } -CJS_Return event::set_source(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Event::set_source(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return event::get_target(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_target(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); - return CJS_Return(pEvent->Target_Field()->GetJSObject()->ToV8Object()); + return CJS_Return(pEvent->Target_Field()->ToV8Object()); } -CJS_Return event::set_target(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Event::set_target(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return event::get_target_name(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_target_name(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); return CJS_Return(pRuntime->NewString(pEvent->TargetName().c_str())); } -CJS_Return event::set_target_name(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Event::set_target_name(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return event::get_type(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_type(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); return CJS_Return(pRuntime->NewString(pEvent->Type())); } -CJS_Return event::set_type(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Event::set_type(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(false); } -CJS_Return event::get_value(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_value(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); @@ -284,7 +288,8 @@ CJS_Return event::get_value(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(pEvent->Value().c_str())); } -CJS_Return event::set_value(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Event::set_value(CJS_Runtime* pRuntime, + v8::Local vp) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); @@ -298,13 +303,13 @@ CJS_Return event::set_value(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(true); } -CJS_Return event::get_will_commit(CJS_Runtime* pRuntime) { +CJS_Return CJS_Event::get_will_commit(CJS_Runtime* pRuntime) { CJS_EventHandler* pEvent = pRuntime->GetCurrentEventContext()->GetEventHandler(); return CJS_Return(pRuntime->NewBoolean(pEvent->WillCommit())); } -CJS_Return event::set_will_commit(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Event::set_will_commit(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } diff --git a/fxjs/cjs_event.h b/fxjs/cjs_event.h index fa8c40b5ee..291b6eb3cc 100644 --- a/fxjs/cjs_event.h +++ b/fxjs/cjs_event.h @@ -9,10 +9,38 @@ #include "fxjs/JS_Define.h" -class event : public CJS_EmbedObj { +class CJS_Event : public CJS_Object { public: - explicit event(CJS_Object* pJSObject); - ~event() override; + static void DefineJSObjects(CFXJS_Engine* pEngine); + + explicit CJS_Event(v8::Local pObject); + ~CJS_Event() override; + + JS_STATIC_PROP(change, change, CJS_Event); + JS_STATIC_PROP(changeEx, change_ex, CJS_Event); + JS_STATIC_PROP(commitKey, commit_key, CJS_Event); + JS_STATIC_PROP(fieldFull, field_full, CJS_Event); + JS_STATIC_PROP(keyDown, key_down, CJS_Event); + JS_STATIC_PROP(modifier, modifier, CJS_Event); + JS_STATIC_PROP(name, name, CJS_Event); + JS_STATIC_PROP(rc, rc, CJS_Event); + JS_STATIC_PROP(richChange, rich_change, CJS_Event); + JS_STATIC_PROP(richChangeEx, rich_change_ex, CJS_Event); + JS_STATIC_PROP(richValue, rich_value, CJS_Event); + JS_STATIC_PROP(selEnd, sel_end, CJS_Event); + JS_STATIC_PROP(selStart, sel_start, CJS_Event); + JS_STATIC_PROP(shift, shift, CJS_Event); + JS_STATIC_PROP(source, source, CJS_Event); + JS_STATIC_PROP(target, target, CJS_Event); + JS_STATIC_PROP(targetName, target_name, CJS_Event); + JS_STATIC_PROP(type, type, CJS_Event); + JS_STATIC_PROP(value, value, CJS_Event); + JS_STATIC_PROP(willCommit, will_commit, CJS_Event); + + private: + static int ObjDefnID; + static const char kName[]; + static const JSPropertySpec PropertySpecs[]; CJS_Return get_change(CJS_Runtime* pRuntime); CJS_Return set_change(CJS_Runtime* pRuntime, v8::Local vp); @@ -75,37 +103,4 @@ class event : public CJS_EmbedObj { CJS_Return set_will_commit(CJS_Runtime* pRuntime, v8::Local vp); }; -class CJS_Event : public CJS_Object { - public: - static void DefineJSObjects(CFXJS_Engine* pEngine); - - explicit CJS_Event(v8::Local pObject); - ~CJS_Event() override = default; - - JS_STATIC_PROP(change, change, event); - JS_STATIC_PROP(changeEx, change_ex, event); - JS_STATIC_PROP(commitKey, commit_key, event); - JS_STATIC_PROP(fieldFull, field_full, event); - JS_STATIC_PROP(keyDown, key_down, event); - JS_STATIC_PROP(modifier, modifier, event); - JS_STATIC_PROP(name, name, event); - JS_STATIC_PROP(rc, rc, event); - JS_STATIC_PROP(richChange, rich_change, event); - JS_STATIC_PROP(richChangeEx, rich_change_ex, event); - JS_STATIC_PROP(richValue, rich_value, event); - JS_STATIC_PROP(selEnd, sel_end, event); - JS_STATIC_PROP(selStart, sel_start, event); - JS_STATIC_PROP(shift, shift, event); - JS_STATIC_PROP(source, source, event); - JS_STATIC_PROP(target, target, event); - JS_STATIC_PROP(targetName, target_name, event); - JS_STATIC_PROP(type, type, event); - JS_STATIC_PROP(value, value, event); - JS_STATIC_PROP(willCommit, will_commit, event); - - private: - static int ObjDefnID; - static const JSPropertySpec PropertySpecs[]; -}; - #endif // FXJS_CJS_EVENT_H_ diff --git a/fxjs/cjs_eventhandler.cpp b/fxjs/cjs_eventhandler.cpp index eb150b247b..6e7e840250 100644 --- a/fxjs/cjs_eventhandler.cpp +++ b/fxjs/cjs_eventhandler.cpp @@ -587,7 +587,7 @@ bool CJS_EventHandler::Shift() const { return m_bShift; } -Field* CJS_EventHandler::Source() { +CJS_Field* CJS_EventHandler::Source() { CJS_Runtime* pRuntime = m_pJSEventContext->GetJSRuntime(); v8::Local pDocObj = pRuntime->NewFxDynamicObj(CJS_Document::GetObjDefnID()); @@ -604,17 +604,15 @@ Field* CJS_EventHandler::Source() { CJS_Field* pJSField = static_cast(pRuntime->GetObjectPrivate(pFieldObj)); - Document* pDocument = static_cast(pJSDocument->GetEmbedObject()); - pDocument->SetFormFillEnv(m_pTargetFormFillEnv - ? m_pTargetFormFillEnv.Get() - : m_pJSEventContext->GetFormFillEnv()); + pJSDocument->SetFormFillEnv(m_pTargetFormFillEnv + ? m_pTargetFormFillEnv.Get() + : m_pJSEventContext->GetFormFillEnv()); - Field* pField = static_cast(pJSField->GetEmbedObject()); - pField->AttachField(pDocument, m_strSourceName); - return pField; + pJSField->AttachField(pJSDocument, m_strSourceName); + return pJSField; } -Field* CJS_EventHandler::Target_Field() { +CJS_Field* CJS_EventHandler::Target_Field() { CJS_Runtime* pRuntime = m_pJSEventContext->GetJSRuntime(); v8::Local pDocObj = pRuntime->NewFxDynamicObj(CJS_Document::GetObjDefnID()); @@ -631,14 +629,12 @@ Field* CJS_EventHandler::Target_Field() { CJS_Field* pJSField = static_cast(pRuntime->GetObjectPrivate(pFieldObj)); - Document* pDocument = static_cast(pJSDocument->GetEmbedObject()); - pDocument->SetFormFillEnv(m_pTargetFormFillEnv - ? m_pTargetFormFillEnv.Get() - : m_pJSEventContext->GetFormFillEnv()); + pJSDocument->SetFormFillEnv(m_pTargetFormFillEnv + ? m_pTargetFormFillEnv.Get() + : m_pJSEventContext->GetFormFillEnv()); - Field* pField = static_cast(pJSField->GetEmbedObject()); - pField->AttachField(pDocument, m_strTargetName); - return pField; + pJSField->AttachField(pJSDocument, m_strTargetName); + return pJSField; } WideString& CJS_EventHandler::Value() { diff --git a/fxjs/cjs_eventhandler.h b/fxjs/cjs_eventhandler.h index 87ce1dcca0..4087355405 100644 --- a/fxjs/cjs_eventhandler.h +++ b/fxjs/cjs_eventhandler.h @@ -13,10 +13,10 @@ #include "fpdfsdk/cpdfsdk_formfillenvironment.h" class CJS_EventContext; +class CJS_Field; class CPDFSDK_Annot; class CPDF_Bookmark; class CPDF_FormField; -class Field; enum JS_EVENT_T { JET_UNKNOWN, @@ -158,8 +158,8 @@ class CJS_EventHandler { void SetSelEnd(int value); void SetSelStart(int value); bool Shift() const; - Field* Source(); - Field* Target_Field(); + CJS_Field* Source(); + CJS_Field* Target_Field(); WideString& Value(); bool WillCommit() const; const WideString& TargetName() const; diff --git a/fxjs/cjs_field.cpp b/fxjs/cjs_field.cpp index 7882a85c80..9138d93590 100644 --- a/fxjs/cjs_field.cpp +++ b/fxjs/cjs_field.cpp @@ -156,6 +156,7 @@ const JSMethodSpec CJS_Field::MethodSpecs[] = { {"signatureValidate", signatureValidate_static}}; int CJS_Field::ObjDefnID = -1; +const char CJS_Field::kName[] = "Field"; // static int CJS_Field::GetObjDefnID() { @@ -164,32 +165,28 @@ int CJS_Field::GetObjDefnID() { // static void CJS_Field::DefineJSObjects(CFXJS_Engine* pEngine) { - ObjDefnID = pEngine->DefineObj("Field", FXJSOBJTYPE_DYNAMIC, + ObjDefnID = pEngine->DefineObj(CJS_Field::kName, FXJSOBJTYPE_DYNAMIC, JSConstructor, JSDestructor); DefineProps(pEngine, ObjDefnID, PropertySpecs, FX_ArraySize(PropertySpecs)); DefineMethods(pEngine, ObjDefnID, MethodSpecs, FX_ArraySize(MethodSpecs)); } -CJS_Field::CJS_Field(v8::Local pObject) : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} - -void CJS_Field::InitInstance(IJS_Runtime* pIRuntime) {} - -Field::Field(CJS_Object* pJSObject) - : CJS_EmbedObj(pJSObject), +CJS_Field::CJS_Field(v8::Local pObject) + : CJS_Object(pObject), m_pJSDoc(nullptr), m_pFormFillEnv(nullptr), m_nFormControlIndex(-1), m_bCanSet(false), m_bDelay(false) {} -Field::~Field() = default; +CJS_Field::~CJS_Field() = default; + +void CJS_Field::InitInstance(IJS_Runtime* pIRuntime) {} // note: iControlNo = -1, means not a widget. -void Field::ParseFieldName(const std::wstring& strFieldNameParsed, - std::wstring& strFieldName, - int& iControlNo) { +void CJS_Field::ParseFieldName(const std::wstring& strFieldNameParsed, + std::wstring& strFieldName, + int& iControlNo) { int iStart = strFieldNameParsed.find_last_of(L'.'); if (iStart == -1) { strFieldName = strFieldNameParsed; @@ -213,7 +210,8 @@ void Field::ParseFieldName(const std::wstring& strFieldNameParsed, strFieldName = strFieldNameParsed.substr(0, iStart); } -bool Field::AttachField(Document* pDocument, const WideString& csFieldName) { +bool CJS_Field::AttachField(CJS_Document* pDocument, + const WideString& csFieldName) { m_pJSDoc = pDocument; m_pFormFillEnv.Reset(pDocument->GetFormFillEnv()); m_bCanSet = m_pFormFillEnv->GetPermissions(FPDFPERM_FILL_FORM) || @@ -243,7 +241,7 @@ bool Field::AttachField(Document* pDocument, const WideString& csFieldName) { return true; } -std::vector Field::GetFormFields( +std::vector CJS_Field::GetFormFields( CPDFSDK_FormFillEnvironment* pFormFillEnv, const WideString& csFieldName) { std::vector fields; @@ -256,16 +254,16 @@ std::vector Field::GetFormFields( return fields; } -std::vector Field::GetFormFields( +std::vector CJS_Field::GetFormFields( const WideString& csFieldName) const { - return Field::GetFormFields(m_pFormFillEnv.Get(), csFieldName); + return CJS_Field::GetFormFields(m_pFormFillEnv.Get(), csFieldName); } -void Field::UpdateFormField(CPDFSDK_FormFillEnvironment* pFormFillEnv, - CPDF_FormField* pFormField, - bool bChangeMark, - bool bResetAP, - bool bRefresh) { +void CJS_Field::UpdateFormField(CPDFSDK_FormFillEnvironment* pFormFillEnv, + CPDF_FormField* pFormField, + bool bChangeMark, + bool bResetAP, + bool bRefresh) { CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); if (bResetAP) { @@ -319,11 +317,11 @@ void Field::UpdateFormField(CPDFSDK_FormFillEnvironment* pFormFillEnv, pFormFillEnv->SetChangeMark(); } -void Field::UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv, - CPDF_FormControl* pFormControl, - bool bChangeMark, - bool bResetAP, - bool bRefresh) { +void CJS_Field::UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv, + CPDF_FormControl* pFormControl, + bool bChangeMark, + bool bResetAP, + bool bRefresh) { ASSERT(pFormControl); CPDFSDK_InterForm* pForm = pFormFillEnv->GetInterForm(); @@ -357,14 +355,15 @@ void Field::UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv, pFormFillEnv->SetChangeMark(); } -CPDFSDK_Widget* Field::GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv, - CPDF_FormControl* pFormControl) { +CPDFSDK_Widget* CJS_Field::GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv, + CPDF_FormControl* pFormControl) { CPDFSDK_InterForm* pInterForm = static_cast(pFormFillEnv->GetInterForm()); return pInterForm ? pInterForm->GetWidget(pFormControl) : nullptr; } -bool Field::ValueIsOccur(CPDF_FormField* pFormField, WideString csOptLabel) { +bool CJS_Field::ValueIsOccur(CPDF_FormField* pFormField, + WideString csOptLabel) { for (int i = 0, sz = pFormField->CountOptions(); i < sz; i++) { if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0) return true; @@ -373,7 +372,7 @@ bool Field::ValueIsOccur(CPDF_FormField* pFormField, WideString csOptLabel) { return false; } -CPDF_FormControl* Field::GetSmartFieldControl(CPDF_FormField* pFormField) { +CPDF_FormControl* CJS_Field::GetSmartFieldControl(CPDF_FormField* pFormField) { if (!pFormField->CountControls() || m_nFormControlIndex >= pFormField->CountControls()) return nullptr; @@ -382,7 +381,7 @@ CPDF_FormControl* Field::GetSmartFieldControl(CPDF_FormField* pFormField) { return pFormField->GetControl(m_nFormControlIndex); } -CJS_Return Field::get_alignment(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_alignment(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -408,13 +407,13 @@ CJS_Return Field::get_alignment(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(L"")); } -CJS_Return Field::set_alignment(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_alignment(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_border_style(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_border_style(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -445,8 +444,8 @@ CJS_Return Field::get_border_style(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(L"")); } -CJS_Return Field::set_border_style(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_border_style(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); if (!m_bCanSet) @@ -456,16 +455,16 @@ CJS_Return Field::set_border_style(CJS_Runtime* pRuntime, if (m_bDelay) { AddDelay_String(FP_BORDERSTYLE, byte_str); } else { - Field::SetBorderStyle(m_pFormFillEnv.Get(), m_FieldName, - m_nFormControlIndex, byte_str); + CJS_Field::SetBorderStyle(m_pFormFillEnv.Get(), m_FieldName, + m_nFormControlIndex, byte_str); } return CJS_Return(true); } -void Field::SetBorderStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - const ByteString& string) { +void CJS_Field::SetBorderStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + const ByteString& string) { ASSERT(pFormFillEnv); BorderStyle nBorderStyle = BorderStyle::SOLID; @@ -514,7 +513,7 @@ void Field::SetBorderStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv, } } -CJS_Return Field::get_button_align_x(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_button_align_x(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -538,13 +537,13 @@ CJS_Return Field::get_button_align_x(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(static_cast(fLeft))); } -CJS_Return Field::set_button_align_x(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_button_align_x(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_button_align_y(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_button_align_y(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -568,13 +567,13 @@ CJS_Return Field::get_button_align_y(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(static_cast(fBottom))); } -CJS_Return Field::set_button_align_y(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_button_align_y(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_button_fit_bounds(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_button_fit_bounds(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -593,13 +592,13 @@ CJS_Return Field::get_button_fit_bounds(CJS_Runtime* pRuntime) { pRuntime->NewBoolean(pFormControl->GetIconFit().GetFittingBounds())); } -CJS_Return Field::set_button_fit_bounds(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_button_fit_bounds(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_button_position(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_button_position(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -617,13 +616,13 @@ CJS_Return Field::get_button_position(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(pFormControl->GetTextPosition())); } -CJS_Return Field::set_button_position(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_button_position(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_button_scale_how(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_button_scale_how(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -642,13 +641,13 @@ CJS_Return Field::get_button_scale_how(CJS_Runtime* pRuntime) { pFormControl->GetIconFit().IsProportionalScale() ? 0 : 1)); } -CJS_Return Field::set_button_scale_how(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_button_scale_how(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_button_scale_when(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_button_scale_when(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -682,13 +681,13 @@ CJS_Return Field::get_button_scale_when(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Field::set_button_scale_when(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_button_scale_when(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_calc_order_index(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_calc_order_index(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -707,13 +706,13 @@ CJS_Return Field::get_calc_order_index(CJS_Runtime* pRuntime) { pInterForm->FindFieldInCalculationOrder(pFormField)))); } -CJS_Return Field::set_calc_order_index(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_calc_order_index(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_char_limit(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_char_limit(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -727,13 +726,13 @@ CJS_Return Field::get_char_limit(CJS_Runtime* pRuntime) { pRuntime->NewNumber(static_cast(pFormField->GetMaxLen()))); } -CJS_Return Field::set_char_limit(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_char_limit(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_comb(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_comb(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -748,12 +747,12 @@ CJS_Return Field::get_comb(CJS_Runtime* pRuntime) { pRuntime->NewBoolean(!!(pFormField->GetFieldFlags() & FIELDFLAG_COMB))); } -CJS_Return Field::set_comb(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_comb(CJS_Runtime* pRuntime, v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_commit_on_sel_change(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_commit_on_sel_change(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -770,13 +769,13 @@ CJS_Return Field::get_commit_on_sel_change(CJS_Runtime* pRuntime) { !!(pFormField->GetFieldFlags() & FIELDFLAG_COMMITONSELCHANGE))); } -CJS_Return Field::set_commit_on_sel_change(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_commit_on_sel_change(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_current_value_indices(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_current_value_indices(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -803,8 +802,8 @@ CJS_Return Field::get_current_value_indices(CJS_Runtime* pRuntime) { return CJS_Return(SelArray); } -CJS_Return Field::set_current_value_indices(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_current_value_indices(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_bCanSet) return CJS_Return(false); @@ -822,16 +821,17 @@ CJS_Return Field::set_current_value_indices(CJS_Runtime* pRuntime, if (m_bDelay) { AddDelay_WordArray(FP_CURRENTVALUEINDICES, array); } else { - Field::SetCurrentValueIndices(m_pFormFillEnv.Get(), m_FieldName, - m_nFormControlIndex, array); + CJS_Field::SetCurrentValueIndices(m_pFormFillEnv.Get(), m_FieldName, + m_nFormControlIndex, array); } return CJS_Return(true); } -void Field::SetCurrentValueIndices(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - const std::vector& array) { +void CJS_Field::SetCurrentValueIndices( + CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + const std::vector& array) { ASSERT(pFormFillEnv); std::vector FieldArray = GetFormFields(pFormFillEnv, swFieldName); @@ -855,16 +855,16 @@ void Field::SetCurrentValueIndices(CPDFSDK_FormFillEnvironment* pFormFillEnv, } } -CJS_Return Field::get_default_style(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_default_style(CJS_Runtime* pRuntime) { return CJS_Return(false); } -CJS_Return Field::set_default_style(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_default_style(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return Field::get_default_value(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_default_value(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -880,13 +880,13 @@ CJS_Return Field::get_default_value(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(pFormField->GetDefaultValue().c_str())); } -CJS_Return Field::set_default_value(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_default_value(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_do_not_scroll(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_do_not_scroll(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -901,13 +901,13 @@ CJS_Return Field::get_do_not_scroll(CJS_Runtime* pRuntime) { !!(pFormField->GetFieldFlags() & FIELDFLAG_DONOTSCROLL))); } -CJS_Return Field::set_do_not_scroll(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_do_not_scroll(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_do_not_spell_check(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_do_not_spell_check(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -924,13 +924,13 @@ CJS_Return Field::get_do_not_spell_check(CJS_Runtime* pRuntime) { !!(pFormField->GetFieldFlags() & FIELDFLAG_DONOTSPELLCHECK))); } -CJS_Return Field::set_do_not_spell_check(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_do_not_spell_check(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -void Field::SetDelay(bool bDelay) { +void CJS_Field::SetDelay(bool bDelay) { m_bDelay = bDelay; if (m_bDelay) @@ -939,11 +939,12 @@ void Field::SetDelay(bool bDelay) { m_pJSDoc->DoFieldDelay(m_FieldName, m_nFormControlIndex); } -CJS_Return Field::get_delay(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_delay(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewBoolean(m_bDelay)); } -CJS_Return Field::set_delay(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_delay(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_bCanSet) return CJS_Return(false); @@ -951,7 +952,7 @@ CJS_Return Field::set_delay(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(true); } -CJS_Return Field::get_display(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_display(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -977,23 +978,24 @@ CJS_Return Field::get_display(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(2)); } -CJS_Return Field::set_display(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_display(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_bCanSet) return CJS_Return(false); if (m_bDelay) { AddDelay_Int(FP_DISPLAY, pRuntime->ToInt32(vp)); } else { - Field::SetDisplay(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, - pRuntime->ToInt32(vp)); + CJS_Field::SetDisplay(m_pFormFillEnv.Get(), m_FieldName, + m_nFormControlIndex, pRuntime->ToInt32(vp)); } return CJS_Return(true); } -void Field::SetDisplay(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - int number) { +void CJS_Field::SetDisplay(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + int number) { CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); std::vector FieldArray = GetFormFields(pFormFillEnv, swFieldName); @@ -1026,15 +1028,15 @@ void Field::SetDisplay(CPDFSDK_FormFillEnvironment* pFormFillEnv, } } -CJS_Return Field::get_doc(CJS_Runtime* pRuntime) { - return CJS_Return(m_pJSDoc->GetCJSDoc()->ToV8Object()); +CJS_Return CJS_Field::get_doc(CJS_Runtime* pRuntime) { + return CJS_Return(m_pJSDoc->ToV8Object()); } -CJS_Return Field::set_doc(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_doc(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(false); } -CJS_Return Field::get_editable(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_editable(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1047,11 +1049,12 @@ CJS_Return Field::get_editable(CJS_Runtime* pRuntime) { pRuntime->NewBoolean(!!(pFormField->GetFieldFlags() & FIELDFLAG_EDIT))); } -CJS_Return Field::set_editable(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_editable(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(m_bCanSet); } -CJS_Return Field::get_export_values(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_export_values(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1086,8 +1089,8 @@ CJS_Return Field::get_export_values(CJS_Runtime* pRuntime) { return CJS_Return(ExportValuesArray); } -CJS_Return Field::set_export_values(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_export_values(CJS_Runtime* pRuntime, + v8::Local vp) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1101,7 +1104,7 @@ CJS_Return Field::set_export_values(CJS_Runtime* pRuntime, return CJS_Return(m_bCanSet && !vp.IsEmpty() && vp->IsArray()); } -CJS_Return Field::get_file_select(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_file_select(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1114,8 +1117,8 @@ CJS_Return Field::get_file_select(CJS_Runtime* pRuntime) { !!(pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT))); } -CJS_Return Field::set_file_select(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_file_select(CJS_Runtime* pRuntime, + v8::Local vp) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1126,7 +1129,7 @@ CJS_Return Field::set_file_select(CJS_Runtime* pRuntime, return CJS_Return(m_bCanSet); } -CJS_Return Field::get_fill_color(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_fill_color(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1161,14 +1164,15 @@ CJS_Return Field::get_fill_color(CJS_Runtime* pRuntime) { return CJS_Return(false); } - v8::Local array = color::ConvertPWLColorToArray(pRuntime, color); + v8::Local array = + CJS_Color::ConvertPWLColorToArray(pRuntime, color); if (array.IsEmpty()) return CJS_Return(pRuntime->NewArray()); return CJS_Return(array); } -CJS_Return Field::set_fill_color(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_fill_color(CJS_Runtime* pRuntime, + v8::Local vp) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1179,7 +1183,7 @@ CJS_Return Field::set_fill_color(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return Field::get_hidden(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_hidden(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1198,28 +1202,29 @@ CJS_Return Field::get_hidden(CJS_Runtime* pRuntime) { ANNOTFLAG_HIDDEN & dwFlags)); } -CJS_Return Field::set_hidden(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_hidden(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_bCanSet) return CJS_Return(false); if (m_bDelay) { AddDelay_Bool(FP_HIDDEN, pRuntime->ToBoolean(vp)); } else { - Field::SetHidden(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, - pRuntime->ToBoolean(vp)); + CJS_Field::SetHidden(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, + pRuntime->ToBoolean(vp)); } return CJS_Return(true); } -void Field::SetHidden(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - bool b) { +void CJS_Field::SetHidden(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + bool b) { int display = b ? 1 /*Hidden*/ : 0 /*Visible*/; SetDisplay(pFormFillEnv, swFieldName, nControlIndex, display); } -CJS_Return Field::get_highlight(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_highlight(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -1250,13 +1255,13 @@ CJS_Return Field::get_highlight(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Field::set_highlight(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_highlight(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_line_width(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_line_width(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1279,24 +1284,24 @@ CJS_Return Field::get_line_width(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(pWidget->GetBorderWidth())); } -CJS_Return Field::set_line_width(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_line_width(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_bCanSet) return CJS_Return(false); if (m_bDelay) { AddDelay_Int(FP_LINEWIDTH, pRuntime->ToInt32(vp)); } else { - Field::SetLineWidth(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, - pRuntime->ToInt32(vp)); + CJS_Field::SetLineWidth(m_pFormFillEnv.Get(), m_FieldName, + m_nFormControlIndex, pRuntime->ToInt32(vp)); } return CJS_Return(true); } -void Field::SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - int number) { +void CJS_Field::SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + int number) { CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); std::vector FieldArray = GetFormFields(pFormFillEnv, swFieldName); @@ -1332,7 +1337,7 @@ void Field::SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv, } } -CJS_Return Field::get_multiline(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_multiline(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -1347,13 +1352,13 @@ CJS_Return Field::get_multiline(CJS_Runtime* pRuntime) { !!(pFormField->GetFieldFlags() & FIELDFLAG_MULTILINE))); } -CJS_Return Field::set_multiline(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_multiline(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_multiple_selection(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_multiple_selection(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) @@ -1367,13 +1372,13 @@ CJS_Return Field::get_multiple_selection(CJS_Runtime* pRuntime) { !!(pFormField->GetFieldFlags() & FIELDFLAG_MULTISELECT))); } -CJS_Return Field::set_multiple_selection(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_multiple_selection(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_name(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_name(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1381,11 +1386,11 @@ CJS_Return Field::get_name(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(m_FieldName.c_str())); } -CJS_Return Field::set_name(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_name(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(false); } -CJS_Return Field::get_num_items(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_num_items(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1399,12 +1404,12 @@ CJS_Return Field::get_num_items(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(pFormField->CountOptions())); } -CJS_Return Field::set_num_items(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_num_items(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return Field::get_page(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_page(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1437,11 +1442,11 @@ CJS_Return Field::get_page(CJS_Runtime* pRuntime) { return CJS_Return(PageArray); } -CJS_Return Field::set_page(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_page(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(JSGetStringFromID(JSMessage::kReadOnlyError)); } -CJS_Return Field::get_password(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_password(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -1456,12 +1461,13 @@ CJS_Return Field::get_password(CJS_Runtime* pRuntime) { !!(pFormField->GetFieldFlags() & FIELDFLAG_PASSWORD))); } -CJS_Return Field::set_password(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_password(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_print(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_print(CJS_Runtime* pRuntime) { CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) @@ -1477,7 +1483,8 @@ CJS_Return Field::get_print(CJS_Runtime* pRuntime) { pRuntime->NewBoolean(!!(pWidget->GetFlags() & ANNOTFLAG_PRINT))); } -CJS_Return Field::set_print(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_print(CJS_Runtime* pRuntime, + v8::Local vp) { CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm(); std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) @@ -1535,7 +1542,7 @@ CJS_Return Field::set_print(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(true); } -CJS_Return Field::get_radios_in_unison(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_radios_in_unison(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1548,15 +1555,15 @@ CJS_Return Field::get_radios_in_unison(CJS_Runtime* pRuntime) { !!(pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON))); } -CJS_Return Field::set_radios_in_unison(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_radios_in_unison(CJS_Runtime* pRuntime, + v8::Local vp) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_readonly(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_readonly(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1565,14 +1572,15 @@ CJS_Return Field::get_readonly(CJS_Runtime* pRuntime) { !!(FieldArray[0]->GetFieldFlags() & FIELDFLAG_READONLY))); } -CJS_Return Field::set_readonly(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_readonly(CJS_Runtime* pRuntime, + v8::Local vp) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_rect(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_rect(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1598,7 +1606,7 @@ CJS_Return Field::get_rect(CJS_Runtime* pRuntime) { return CJS_Return(rcArray); } -CJS_Return Field::set_rect(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_rect(CJS_Runtime* pRuntime, v8::Local vp) { if (!m_bCanSet) return CJS_Return(false); if (vp.IsEmpty() || !vp->IsArray()) @@ -1622,16 +1630,16 @@ CJS_Return Field::set_rect(CJS_Runtime* pRuntime, v8::Local vp) { if (m_bDelay) { AddDelay_Rect(FP_RECT, crRect); } else { - Field::SetRect(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, - crRect); + CJS_Field::SetRect(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, + crRect); } return CJS_Return(true); } -void Field::SetRect(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - const CFX_FloatRect& rect) { +void CJS_Field::SetRect(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + const CFX_FloatRect& rect) { CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm(); std::vector FieldArray = GetFormFields(pFormFillEnv, swFieldName); @@ -1688,7 +1696,7 @@ void Field::SetRect(CPDFSDK_FormFillEnvironment* pFormFillEnv, } } -CJS_Return Field::get_required(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_required(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1701,14 +1709,15 @@ CJS_Return Field::get_required(CJS_Runtime* pRuntime) { !!(pFormField->GetFieldFlags() & FIELDFLAG_REQUIRED))); } -CJS_Return Field::set_required(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_required(CJS_Runtime* pRuntime, + v8::Local vp) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_rich_text(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_rich_text(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -1723,22 +1732,22 @@ CJS_Return Field::get_rich_text(CJS_Runtime* pRuntime) { !!(pFormField->GetFieldFlags() & FIELDFLAG_RICHTEXT))); } -CJS_Return Field::set_rich_text(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_rich_text(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_rich_value(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_rich_value(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Field::set_rich_value(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_rich_value(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Field::get_rotation(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_rotation(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -1753,12 +1762,13 @@ CJS_Return Field::get_rotation(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(pFormControl->GetRotation())); } -CJS_Return Field::set_rotation(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_rotation(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_stroke_color(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_stroke_color(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1790,14 +1800,15 @@ CJS_Return Field::get_stroke_color(CJS_Runtime* pRuntime) { return CJS_Return(false); } - v8::Local array = color::ConvertPWLColorToArray(pRuntime, color); + v8::Local array = + CJS_Color::ConvertPWLColorToArray(pRuntime, color); if (array.IsEmpty()) return CJS_Return(pRuntime->NewArray()); return CJS_Return(array); } -CJS_Return Field::set_stroke_color(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_stroke_color(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_bCanSet) return CJS_Return(false); if (vp.IsEmpty() || !vp->IsArray()) @@ -1805,7 +1816,7 @@ CJS_Return Field::set_stroke_color(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return Field::get_style(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_style(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -1849,21 +1860,22 @@ CJS_Return Field::get_style(CJS_Runtime* pRuntime) { pRuntime->NewString(WideString::FromLocal(csBCaption.c_str()).c_str())); } -CJS_Return Field::set_style(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_style(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_submit_name(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_submit_name(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Field::set_submit_name(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_submit_name(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -CJS_Return Field::get_text_color(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_text_color(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1890,14 +1902,15 @@ CJS_Return Field::get_text_color(CJS_Runtime* pRuntime) { if (iColorType == CFX_Color::kTransparent) crRet = CFX_Color(CFX_Color::kTransparent); - v8::Local array = color::ConvertPWLColorToArray(pRuntime, crRet); + v8::Local array = + CJS_Color::ConvertPWLColorToArray(pRuntime, crRet); if (array.IsEmpty()) return CJS_Return(pRuntime->NewArray()); return CJS_Return(array); } -CJS_Return Field::set_text_color(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_text_color(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_bCanSet) return CJS_Return(false); if (vp.IsEmpty() || !vp->IsArray()) @@ -1905,7 +1918,7 @@ CJS_Return Field::set_text_color(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return Field::get_text_font(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_text_font(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -1934,8 +1947,8 @@ CJS_Return Field::get_text_font(CJS_Runtime* pRuntime) { WideString::FromLocal(pFont->GetBaseFont().c_str()).c_str())); } -CJS_Return Field::set_text_font(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_text_font(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); if (!m_bCanSet) @@ -1944,7 +1957,7 @@ CJS_Return Field::set_text_font(CJS_Runtime* pRuntime, !ByteString::FromUnicode(pRuntime->ToWideString(vp)).IsEmpty()); } -CJS_Return Field::get_text_size(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_text_size(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -1963,13 +1976,13 @@ CJS_Return Field::get_text_size(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewNumber(static_cast(fFontSize))); } -CJS_Return Field::set_text_size(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_text_size(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_type(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_type(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -1997,11 +2010,11 @@ CJS_Return Field::get_type(CJS_Runtime* pRuntime) { } } -CJS_Return Field::set_type(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_type(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(false); } -CJS_Return Field::get_user_name(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_user_name(CJS_Runtime* pRuntime) { ASSERT(m_pFormFillEnv); std::vector FieldArray = GetFormFields(m_FieldName); @@ -2012,13 +2025,13 @@ CJS_Return Field::get_user_name(CJS_Runtime* pRuntime) { pRuntime->NewString(FieldArray[0]->GetAlternateName().c_str())); } -CJS_Return Field::set_user_name(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_user_name(CJS_Runtime* pRuntime, + v8::Local vp) { ASSERT(m_pFormFillEnv); return CJS_Return(m_bCanSet); } -CJS_Return Field::get_value(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_value(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -2077,7 +2090,8 @@ CJS_Return Field::get_value(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->MaybeCoerceToNumber(ret)); } -CJS_Return Field::set_value(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_value(CJS_Runtime* pRuntime, + v8::Local vp) { if (!m_bCanSet) return CJS_Return(false); @@ -2095,16 +2109,16 @@ CJS_Return Field::set_value(CJS_Runtime* pRuntime, v8::Local vp) { if (m_bDelay) { AddDelay_WideStringArray(FP_VALUE, strArray); } else { - Field::SetValue(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, - strArray); + CJS_Field::SetValue(m_pFormFillEnv.Get(), m_FieldName, m_nFormControlIndex, + strArray); } return CJS_Return(true); } -void Field::SetValue(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - const std::vector& strArray) { +void CJS_Field::SetValue(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + const std::vector& strArray) { ASSERT(pFormFillEnv); if (strArray.empty()) return; @@ -2156,7 +2170,7 @@ void Field::SetValue(CPDFSDK_FormFillEnvironment* pFormFillEnv, } } -CJS_Return Field::get_value_as_string(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_value_as_string(CJS_Runtime* pRuntime) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -2190,12 +2204,12 @@ CJS_Return Field::get_value_as_string(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(pFormField->GetValue().c_str())); } -CJS_Return Field::set_value_as_string(CJS_Runtime* pRuntime, - v8::Local vp) { +CJS_Return CJS_Field::set_value_as_string(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(false); } -CJS_Return Field::browseForFileToSubmit( +CJS_Return CJS_Field::browseForFileToSubmit( CJS_Runtime* pRuntime, const std::vector>& params) { std::vector FieldArray = GetFormFields(m_FieldName); @@ -2215,7 +2229,7 @@ CJS_Return Field::browseForFileToSubmit( return CJS_Return(false); } -CJS_Return Field::buttonGetCaption( +CJS_Return CJS_Field::buttonGetCaption( CJS_Runtime* pRuntime, const std::vector>& params) { int nface = 0; @@ -2248,7 +2262,7 @@ CJS_Return Field::buttonGetCaption( return CJS_Return(false); } -CJS_Return Field::buttonGetIcon( +CJS_Return CJS_Field::buttonGetIcon( CJS_Runtime* pRuntime, const std::vector>& params) { if (params.size() >= 1) { @@ -2280,25 +2294,25 @@ CJS_Return Field::buttonGetIcon( return CJS_Return(pJS_Icon->ToV8Object()); } -CJS_Return Field::buttonImportIcon( +CJS_Return CJS_Field::buttonImportIcon( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(true); } -CJS_Return Field::buttonSetCaption( +CJS_Return CJS_Field::buttonSetCaption( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(false); } -CJS_Return Field::buttonSetIcon( +CJS_Return CJS_Field::buttonSetIcon( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(false); } -CJS_Return Field::checkThisBox( +CJS_Return CJS_Field::checkThisBox( CJS_Runtime* pRuntime, const std::vector>& params) { int iSize = params.size(); @@ -2333,12 +2347,13 @@ CJS_Return Field::checkThisBox( return CJS_Return(true); } -CJS_Return Field::clearItems(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Field::clearItems( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } -CJS_Return Field::defaultIsChecked( +CJS_Return CJS_Field::defaultIsChecked( CJS_Runtime* pRuntime, const std::vector>& params) { if (!m_bCanSet) @@ -2362,14 +2377,15 @@ CJS_Return Field::defaultIsChecked( pFormField->GetFieldType() == FormFieldType::kRadioButton)); } -CJS_Return Field::deleteItemAt( +CJS_Return CJS_Field::deleteItemAt( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(true); } -CJS_Return Field::getArray(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Field::getArray( + CJS_Runtime* pRuntime, + const std::vector>& params) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -2394,8 +2410,7 @@ CJS_Return Field::getArray(CJS_Runtime* pRuntime, CJS_Field* pJSField = static_cast(pRuntime->GetObjectPrivate(pObj)); - Field* pField = static_cast(pJSField->GetEmbedObject()); - pField->AttachField(m_pJSDoc, *pStr); + pJSField->AttachField(m_pJSDoc, *pStr); pRuntime->PutArrayElement(FormFieldArray, j++, pJSField ? v8::Local(pJSField->ToV8Object()) @@ -2404,8 +2419,9 @@ CJS_Return Field::getArray(CJS_Runtime* pRuntime, return CJS_Return(FormFieldArray); } -CJS_Return Field::getItemAt(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Field::getItemAt( + CJS_Runtime* pRuntime, + const std::vector>& params) { int iSize = params.size(); int nIdx = -1; if (iSize >= 1) @@ -2438,18 +2454,18 @@ CJS_Return Field::getItemAt(CJS_Runtime* pRuntime, return CJS_Return(false); } -CJS_Return Field::getLock(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Field::getLock(CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(false); } -CJS_Return Field::insertItemAt( +CJS_Return CJS_Field::insertItemAt( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(true); } -CJS_Return Field::isBoxChecked( +CJS_Return CJS_Field::isBoxChecked( CJS_Runtime* pRuntime, const std::vector>& params) { int nIndex = -1; @@ -2470,7 +2486,7 @@ CJS_Return Field::isBoxChecked( pFormField->GetControl(nIndex)->IsChecked() != 0))); } -CJS_Return Field::isDefaultChecked( +CJS_Return CJS_Field::isDefaultChecked( CJS_Runtime* pRuntime, const std::vector>& params) { int nIndex = -1; @@ -2491,13 +2507,15 @@ CJS_Return Field::isDefaultChecked( pFormField->GetControl(nIndex)->IsDefaultChecked() != 0))); } -CJS_Return Field::setAction(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Field::setAction( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } -CJS_Return Field::setFocus(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Field::setFocus( + CJS_Runtime* pRuntime, + const std::vector>& params) { std::vector FieldArray = GetFormFields(m_FieldName); if (FieldArray.empty()) return CJS_Return(false); @@ -2539,135 +2557,137 @@ CJS_Return Field::setFocus(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return Field::setItems(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Field::setItems( + CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(true); } -CJS_Return Field::setLock(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Field::setLock(CJS_Runtime* pRuntime, + const std::vector>& params) { return CJS_Return(false); } -CJS_Return Field::signatureGetModifications( +CJS_Return CJS_Field::signatureGetModifications( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(false); } -CJS_Return Field::signatureGetSeedValue( +CJS_Return CJS_Field::signatureGetSeedValue( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(false); } -CJS_Return Field::signatureInfo( +CJS_Return CJS_Field::signatureInfo( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(false); } -CJS_Return Field::signatureSetSeedValue( +CJS_Return CJS_Field::signatureSetSeedValue( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(false); } -CJS_Return Field::signatureSign( +CJS_Return CJS_Field::signatureSign( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(false); } -CJS_Return Field::signatureValidate( +CJS_Return CJS_Field::signatureValidate( CJS_Runtime* pRuntime, const std::vector>& params) { return CJS_Return(false); } -CJS_Return Field::get_source(CJS_Runtime* pRuntime) { +CJS_Return CJS_Field::get_source(CJS_Runtime* pRuntime) { return CJS_Return(true); } -CJS_Return Field::set_source(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Field::set_source(CJS_Runtime* pRuntime, + v8::Local vp) { return CJS_Return(true); } -void Field::AddDelay_Int(FIELD_PROP prop, int32_t n) { +void CJS_Field::AddDelay_Int(FIELD_PROP prop, int32_t n) { auto pNewData = pdfium::MakeUnique(prop, m_nFormControlIndex, m_FieldName); pNewData->num = n; m_pJSDoc->AddDelayData(std::move(pNewData)); } -void Field::AddDelay_Bool(FIELD_PROP prop, bool b) { +void CJS_Field::AddDelay_Bool(FIELD_PROP prop, bool b) { auto pNewData = pdfium::MakeUnique(prop, m_nFormControlIndex, m_FieldName); pNewData->b = b; m_pJSDoc->AddDelayData(std::move(pNewData)); } -void Field::AddDelay_String(FIELD_PROP prop, const ByteString& string) { +void CJS_Field::AddDelay_String(FIELD_PROP prop, const ByteString& string) { auto pNewData = pdfium::MakeUnique(prop, m_nFormControlIndex, m_FieldName); pNewData->string = string; m_pJSDoc->AddDelayData(std::move(pNewData)); } -void Field::AddDelay_Rect(FIELD_PROP prop, const CFX_FloatRect& rect) { +void CJS_Field::AddDelay_Rect(FIELD_PROP prop, const CFX_FloatRect& rect) { auto pNewData = pdfium::MakeUnique(prop, m_nFormControlIndex, m_FieldName); pNewData->rect = rect; m_pJSDoc->AddDelayData(std::move(pNewData)); } -void Field::AddDelay_WordArray(FIELD_PROP prop, - const std::vector& array) { +void CJS_Field::AddDelay_WordArray(FIELD_PROP prop, + const std::vector& array) { auto pNewData = pdfium::MakeUnique(prop, m_nFormControlIndex, m_FieldName); pNewData->wordarray = array; m_pJSDoc->AddDelayData(std::move(pNewData)); } -void Field::AddDelay_WideStringArray(FIELD_PROP prop, - const std::vector& array) { +void CJS_Field::AddDelay_WideStringArray(FIELD_PROP prop, + const std::vector& array) { auto pNewData = pdfium::MakeUnique(prop, m_nFormControlIndex, m_FieldName); pNewData->widestringarray = array; m_pJSDoc->AddDelayData(std::move(pNewData)); } -void Field::DoDelay(CPDFSDK_FormFillEnvironment* pFormFillEnv, - CJS_DelayData* pData) { +void CJS_Field::DoDelay(CPDFSDK_FormFillEnvironment* pFormFillEnv, + CJS_DelayData* pData) { ASSERT(pFormFillEnv); switch (pData->eProp) { case FP_BORDERSTYLE: - Field::SetBorderStyle(pFormFillEnv, pData->sFieldName, - pData->nControlIndex, pData->string); + CJS_Field::SetBorderStyle(pFormFillEnv, pData->sFieldName, + pData->nControlIndex, pData->string); break; case FP_CURRENTVALUEINDICES: - Field::SetCurrentValueIndices(pFormFillEnv, pData->sFieldName, - pData->nControlIndex, pData->wordarray); + CJS_Field::SetCurrentValueIndices(pFormFillEnv, pData->sFieldName, + pData->nControlIndex, pData->wordarray); break; case FP_DISPLAY: - Field::SetDisplay(pFormFillEnv, pData->sFieldName, pData->nControlIndex, - pData->num); + CJS_Field::SetDisplay(pFormFillEnv, pData->sFieldName, + pData->nControlIndex, pData->num); break; case FP_HIDDEN: - Field::SetHidden(pFormFillEnv, pData->sFieldName, pData->nControlIndex, - pData->b); + CJS_Field::SetHidden(pFormFillEnv, pData->sFieldName, + pData->nControlIndex, pData->b); break; case FP_LINEWIDTH: - Field::SetLineWidth(pFormFillEnv, pData->sFieldName, pData->nControlIndex, - pData->num); + CJS_Field::SetLineWidth(pFormFillEnv, pData->sFieldName, + pData->nControlIndex, pData->num); break; case FP_RECT: - Field::SetRect(pFormFillEnv, pData->sFieldName, pData->nControlIndex, - pData->rect); + CJS_Field::SetRect(pFormFillEnv, pData->sFieldName, pData->nControlIndex, + pData->rect); break; case FP_VALUE: - Field::SetValue(pFormFillEnv, pData->sFieldName, pData->nControlIndex, - pData->widestringarray); + CJS_Field::SetValue(pFormFillEnv, pData->sFieldName, pData->nControlIndex, + pData->widestringarray); break; default: NOTREACHED(); diff --git a/fxjs/cjs_field.h b/fxjs/cjs_field.h index 7c470f5a04..51cc530efa 100644 --- a/fxjs/cjs_field.h +++ b/fxjs/cjs_field.h @@ -14,7 +14,7 @@ class CPDF_FormControl; class CPDFSDK_Widget; -class Document; +class CJS_Document; struct CJS_DelayData; enum FIELD_PROP { @@ -27,13 +27,159 @@ enum FIELD_PROP { FP_VALUE }; -class Field : public CJS_EmbedObj { +class CJS_Field : public CJS_Object { public: + static int GetObjDefnID(); + static void DefineJSObjects(CFXJS_Engine* pEngine); static void DoDelay(CPDFSDK_FormFillEnvironment* pFormFillEnv, CJS_DelayData* pData); - explicit Field(CJS_Object* pJSObject); - ~Field() override; + explicit CJS_Field(v8::Local pObject); + ~CJS_Field() override; + + // CJS_Object + void InitInstance(IJS_Runtime* pIRuntime) override; + + bool AttachField(CJS_Document* pDocument, const WideString& csFieldName); + + JS_STATIC_PROP(alignment, alignment, CJS_Field); + JS_STATIC_PROP(borderStyle, border_style, CJS_Field); + JS_STATIC_PROP(buttonAlignX, button_align_x, CJS_Field); + JS_STATIC_PROP(buttonAlignY, button_align_y, CJS_Field); + JS_STATIC_PROP(buttonFitBounds, button_fit_bounds, CJS_Field); + JS_STATIC_PROP(buttonPosition, button_position, CJS_Field); + JS_STATIC_PROP(buttonScaleHow, button_scale_how, CJS_Field); + JS_STATIC_PROP(ButtonScaleWhen, button_scale_when, CJS_Field); + JS_STATIC_PROP(calcOrderIndex, calc_order_index, CJS_Field); + JS_STATIC_PROP(charLimit, char_limit, CJS_Field); + JS_STATIC_PROP(comb, comb, CJS_Field); + JS_STATIC_PROP(commitOnSelChange, commit_on_sel_change, CJS_Field); + JS_STATIC_PROP(currentValueIndices, current_value_indices, CJS_Field); + JS_STATIC_PROP(defaultStyle, default_style, CJS_Field); + JS_STATIC_PROP(defaultValue, default_value, CJS_Field); + JS_STATIC_PROP(doNotScroll, do_not_scroll, CJS_Field); + JS_STATIC_PROP(doNotSpellCheck, do_not_spell_check, CJS_Field); + JS_STATIC_PROP(delay, delay, CJS_Field); + JS_STATIC_PROP(display, display, CJS_Field); + JS_STATIC_PROP(doc, doc, CJS_Field); + JS_STATIC_PROP(editable, editable, CJS_Field); + JS_STATIC_PROP(exportValues, export_values, CJS_Field); + JS_STATIC_PROP(fileSelect, file_select, CJS_Field); + JS_STATIC_PROP(fillColor, fill_color, CJS_Field); + JS_STATIC_PROP(hidden, hidden, CJS_Field); + JS_STATIC_PROP(highlight, highlight, CJS_Field); + JS_STATIC_PROP(lineWidth, line_width, CJS_Field); + JS_STATIC_PROP(multiline, multiline, CJS_Field); + JS_STATIC_PROP(multipleSelection, multiple_selection, CJS_Field); + JS_STATIC_PROP(name, name, CJS_Field); + JS_STATIC_PROP(numItems, num_items, CJS_Field); + JS_STATIC_PROP(page, page, CJS_Field); + JS_STATIC_PROP(password, password, CJS_Field); + JS_STATIC_PROP(print, print, CJS_Field); + JS_STATIC_PROP(radiosInUnison, radios_in_unison, CJS_Field); + JS_STATIC_PROP(readonly, readonly, CJS_Field); + JS_STATIC_PROP(rect, rect, CJS_Field); + JS_STATIC_PROP(required, required, CJS_Field); + JS_STATIC_PROP(richText, rich_text, CJS_Field); + JS_STATIC_PROP(richValue, rich_value, CJS_Field); + JS_STATIC_PROP(rotation, rotation, CJS_Field); + JS_STATIC_PROP(strokeColor, stroke_color, CJS_Field); + JS_STATIC_PROP(style, style, CJS_Field); + JS_STATIC_PROP(submitName, submit_name, CJS_Field); + JS_STATIC_PROP(textColor, text_color, CJS_Field); + JS_STATIC_PROP(textFont, text_font, CJS_Field); + JS_STATIC_PROP(textSize, text_size, CJS_Field); + JS_STATIC_PROP(type, type, CJS_Field); + JS_STATIC_PROP(userName, user_name, CJS_Field); + JS_STATIC_PROP(value, value, CJS_Field); + JS_STATIC_PROP(valueAsString, value_as_string, CJS_Field); + JS_STATIC_PROP(source, source, CJS_Field); + + JS_STATIC_METHOD(browseForFileToSubmit, CJS_Field); + JS_STATIC_METHOD(buttonGetCaption, CJS_Field); + JS_STATIC_METHOD(buttonGetIcon, CJS_Field); + JS_STATIC_METHOD(buttonImportIcon, CJS_Field); + JS_STATIC_METHOD(buttonSetCaption, CJS_Field); + JS_STATIC_METHOD(buttonSetIcon, CJS_Field); + JS_STATIC_METHOD(checkThisBox, CJS_Field); + JS_STATIC_METHOD(clearItems, CJS_Field); + JS_STATIC_METHOD(defaultIsChecked, CJS_Field); + JS_STATIC_METHOD(deleteItemAt, CJS_Field); + JS_STATIC_METHOD(getArray, CJS_Field); + JS_STATIC_METHOD(getItemAt, CJS_Field); + JS_STATIC_METHOD(getLock, CJS_Field); + JS_STATIC_METHOD(insertItemAt, CJS_Field); + JS_STATIC_METHOD(isBoxChecked, CJS_Field); + JS_STATIC_METHOD(isDefaultChecked, CJS_Field); + JS_STATIC_METHOD(setAction, CJS_Field); + JS_STATIC_METHOD(setFocus, CJS_Field); + JS_STATIC_METHOD(setItems, CJS_Field); + JS_STATIC_METHOD(setLock, CJS_Field); + JS_STATIC_METHOD(signatureGetModifications, CJS_Field); + JS_STATIC_METHOD(signatureGetSeedValue, CJS_Field); + JS_STATIC_METHOD(signatureInfo, CJS_Field); + JS_STATIC_METHOD(signatureSetSeedValue, CJS_Field); + JS_STATIC_METHOD(signatureSign, CJS_Field); + JS_STATIC_METHOD(signatureValidate, CJS_Field); + + CJS_Return get_text_color(CJS_Runtime* pRuntime); + CJS_Return set_text_color(CJS_Runtime* pRuntime, v8::Local vp); + + private: + static int ObjDefnID; + static const char kName[]; + static const JSPropertySpec PropertySpecs[]; + static const JSMethodSpec MethodSpecs[]; + + static void SetBorderStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + const ByteString& string); + static void SetCurrentValueIndices(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + const std::vector& array); + static void SetDisplay(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + int number); + static void SetHidden(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + bool b); + static void SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + int number); + static void SetMultiline(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + bool b); + static void SetRect(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + const CFX_FloatRect& rect); + static void SetValue(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& swFieldName, + int nControlIndex, + const std::vector& strArray); + + static void UpdateFormField(CPDFSDK_FormFillEnvironment* pFormFillEnv, + CPDF_FormField* pFormField, + bool bChangeMark, + bool bResetAP, + bool bRefresh); + static void UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv, + CPDF_FormControl* pFormControl, + bool bChangeMark, + bool bResetAP, + bool bRefresh); + + static CPDFSDK_Widget* GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv, + CPDF_FormControl* pFormControl); + static std::vector GetFormFields( + CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& csFieldName); CJS_Return get_alignment(CJS_Runtime* pRuntime); CJS_Return set_alignment(CJS_Runtime* pRuntime, v8::Local vp); @@ -177,9 +323,6 @@ class Field : public CJS_EmbedObj { CJS_Return get_submit_name(CJS_Runtime* pRuntime); CJS_Return set_submit_name(CJS_Runtime* pRuntime, v8::Local vp); - CJS_Return get_text_color(CJS_Runtime* pRuntime); - CJS_Return set_text_color(CJS_Runtime* pRuntime, v8::Local vp); - CJS_Return get_text_font(CJS_Runtime* pRuntime); CJS_Return set_text_font(CJS_Runtime* pRuntime, v8::Local vp); @@ -259,59 +402,6 @@ class Field : public CJS_EmbedObj { CJS_Return signatureValidate(CJS_Runtime* pRuntime, const std::vector>& params); - bool AttachField(Document* pDocument, const WideString& csFieldName); - - private: - static void SetBorderStyle(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - const ByteString& string); - static void SetCurrentValueIndices(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - const std::vector& array); - static void SetDisplay(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - int number); - static void SetHidden(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - bool b); - static void SetLineWidth(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - int number); - static void SetMultiline(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - bool b); - static void SetRect(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - const CFX_FloatRect& rect); - static void SetValue(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& swFieldName, - int nControlIndex, - const std::vector& strArray); - - static void UpdateFormField(CPDFSDK_FormFillEnvironment* pFormFillEnv, - CPDF_FormField* pFormField, - bool bChangeMark, - bool bResetAP, - bool bRefresh); - static void UpdateFormControl(CPDFSDK_FormFillEnvironment* pFormFillEnv, - CPDF_FormControl* pFormControl, - bool bChangeMark, - bool bResetAP, - bool bRefresh); - - static CPDFSDK_Widget* GetWidget(CPDFSDK_FormFillEnvironment* pFormFillEnv, - CPDF_FormControl* pFormControl); - static std::vector GetFormFields( - CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& csFieldName); - void SetDelay(bool bDelay); void ParseFieldName(const std::wstring& strFieldNameParsed, std::wstring& strFieldName, @@ -331,7 +421,7 @@ class Field : public CJS_EmbedObj { void DoDelay(); - Document* m_pJSDoc; + CJS_Document* m_pJSDoc; CPDFSDK_FormFillEnvironment::ObservedPtr m_pFormFillEnv; WideString m_FieldName; int m_nFormControlIndex; @@ -339,100 +429,4 @@ class Field : public CJS_EmbedObj { bool m_bDelay; }; -class CJS_Field : public CJS_Object { - public: - static int GetObjDefnID(); - static void DefineJSObjects(CFXJS_Engine* pEngine); - - explicit CJS_Field(v8::Local pObject); - ~CJS_Field() override = default; - - void InitInstance(IJS_Runtime* pIRuntime) override; - - JS_STATIC_PROP(alignment, alignment, Field); - JS_STATIC_PROP(borderStyle, border_style, Field); - JS_STATIC_PROP(buttonAlignX, button_align_x, Field); - JS_STATIC_PROP(buttonAlignY, button_align_y, Field); - JS_STATIC_PROP(buttonFitBounds, button_fit_bounds, Field); - JS_STATIC_PROP(buttonPosition, button_position, Field); - JS_STATIC_PROP(buttonScaleHow, button_scale_how, Field); - JS_STATIC_PROP(ButtonScaleWhen, button_scale_when, Field); - JS_STATIC_PROP(calcOrderIndex, calc_order_index, Field); - JS_STATIC_PROP(charLimit, char_limit, Field); - JS_STATIC_PROP(comb, comb, Field); - JS_STATIC_PROP(commitOnSelChange, commit_on_sel_change, Field); - JS_STATIC_PROP(currentValueIndices, current_value_indices, Field); - JS_STATIC_PROP(defaultStyle, default_style, Field); - JS_STATIC_PROP(defaultValue, default_value, Field); - JS_STATIC_PROP(doNotScroll, do_not_scroll, Field); - JS_STATIC_PROP(doNotSpellCheck, do_not_spell_check, Field); - JS_STATIC_PROP(delay, delay, Field); - JS_STATIC_PROP(display, display, Field); - JS_STATIC_PROP(doc, doc, Field); - JS_STATIC_PROP(editable, editable, Field); - JS_STATIC_PROP(exportValues, export_values, Field); - JS_STATIC_PROP(fileSelect, file_select, Field); - JS_STATIC_PROP(fillColor, fill_color, Field); - JS_STATIC_PROP(hidden, hidden, Field); - JS_STATIC_PROP(highlight, highlight, Field); - JS_STATIC_PROP(lineWidth, line_width, Field); - JS_STATIC_PROP(multiline, multiline, Field); - JS_STATIC_PROP(multipleSelection, multiple_selection, Field); - JS_STATIC_PROP(name, name, Field); - JS_STATIC_PROP(numItems, num_items, Field); - JS_STATIC_PROP(page, page, Field); - JS_STATIC_PROP(password, password, Field); - JS_STATIC_PROP(print, print, Field); - JS_STATIC_PROP(radiosInUnison, radios_in_unison, Field); - JS_STATIC_PROP(readonly, readonly, Field); - JS_STATIC_PROP(rect, rect, Field); - JS_STATIC_PROP(required, required, Field); - JS_STATIC_PROP(richText, rich_text, Field); - JS_STATIC_PROP(richValue, rich_value, Field); - JS_STATIC_PROP(rotation, rotation, Field); - JS_STATIC_PROP(strokeColor, stroke_color, Field); - JS_STATIC_PROP(style, style, Field); - JS_STATIC_PROP(submitName, submit_name, Field); - JS_STATIC_PROP(textColor, text_color, Field); - JS_STATIC_PROP(textFont, text_font, Field); - JS_STATIC_PROP(textSize, text_size, Field); - JS_STATIC_PROP(type, type, Field); - JS_STATIC_PROP(userName, user_name, Field); - JS_STATIC_PROP(value, value, Field); - JS_STATIC_PROP(valueAsString, value_as_string, Field); - JS_STATIC_PROP(source, source, Field); - - JS_STATIC_METHOD(browseForFileToSubmit, Field); - JS_STATIC_METHOD(buttonGetCaption, Field); - JS_STATIC_METHOD(buttonGetIcon, Field); - JS_STATIC_METHOD(buttonImportIcon, Field); - JS_STATIC_METHOD(buttonSetCaption, Field); - JS_STATIC_METHOD(buttonSetIcon, Field); - JS_STATIC_METHOD(checkThisBox, Field); - JS_STATIC_METHOD(clearItems, Field); - JS_STATIC_METHOD(defaultIsChecked, Field); - JS_STATIC_METHOD(deleteItemAt, Field); - JS_STATIC_METHOD(getArray, Field); - JS_STATIC_METHOD(getItemAt, Field); - JS_STATIC_METHOD(getLock, Field); - JS_STATIC_METHOD(insertItemAt, Field); - JS_STATIC_METHOD(isBoxChecked, Field); - JS_STATIC_METHOD(isDefaultChecked, Field); - JS_STATIC_METHOD(setAction, Field); - JS_STATIC_METHOD(setFocus, Field); - JS_STATIC_METHOD(setItems, Field); - JS_STATIC_METHOD(setLock, Field); - JS_STATIC_METHOD(signatureGetModifications, Field); - JS_STATIC_METHOD(signatureGetSeedValue, Field); - JS_STATIC_METHOD(signatureInfo, Field); - JS_STATIC_METHOD(signatureSetSeedValue, Field); - JS_STATIC_METHOD(signatureSign, Field); - JS_STATIC_METHOD(signatureValidate, Field); - - private: - static int ObjDefnID; - static const JSPropertySpec PropertySpecs[]; - static const JSMethodSpec MethodSpecs[]; -}; - #endif // FXJS_CJS_FIELD_H_ diff --git a/fxjs/cjs_global.cpp b/fxjs/cjs_global.cpp index 8816cf1b07..fbc6bf94e8 100644 --- a/fxjs/cjs_global.cpp +++ b/fxjs/cjs_global.cpp @@ -41,7 +41,7 @@ void JSSpecialPropQuery(const char*, if (!pJSObj) return; - Alt* pObj = reinterpret_cast(pJSObj->GetEmbedObject()); + Alt* pObj = static_cast(pJSObj); CJS_Return result = pObj->QueryProperty(PropFromV8Prop(info.GetIsolate(), property).c_str()); info.GetReturnValue().Set(!result.HasError() ? 4 : 0); @@ -60,7 +60,7 @@ void JSSpecialPropGet(const char* class_name, if (!pJSObj) return; - Alt* pObj = reinterpret_cast(pJSObj->GetEmbedObject()); + Alt* pObj = static_cast(pJSObj); CJS_Return result = pObj->GetProperty( pRuntime, PropFromV8Prop(info.GetIsolate(), property).c_str()); if (result.HasError()) { @@ -87,7 +87,7 @@ void JSSpecialPropPut(const char* class_name, if (!pJSObj) return; - Alt* pObj = reinterpret_cast(pJSObj->GetEmbedObject()); + Alt* pObj = static_cast(pJSObj); CJS_Return result = pObj->SetProperty( pRuntime, PropFromV8Prop(info.GetIsolate(), property).c_str(), value); if (result.HasError()) { @@ -109,7 +109,7 @@ void JSSpecialPropDel(const char* class_name, if (!pJSObj) return; - Alt* pObj = reinterpret_cast(pJSObj->GetEmbedObject()); + Alt* pObj = static_cast(pJSObj); CJS_Return result = pObj->DelProperty( pRuntime, PropFromV8Prop(info.GetIsolate(), property).c_str()); if (result.HasError()) { @@ -119,58 +119,20 @@ void JSSpecialPropDel(const char* class_name, } } -struct JSGlobalData { - JSGlobalData(); - ~JSGlobalData(); - - JS_GlobalDataType nType; - double dData; - bool bData; - ByteString sData; - v8::Global pData; - bool bPersistent; - bool bDeleted; -}; - -class JSGlobalAlternate : public CJS_EmbedObj { - public: - explicit JSGlobalAlternate(CJS_Object* pJSObject); - ~JSGlobalAlternate() override; - - CJS_Return setPersistent(CJS_Runtime* pRuntime, - const std::vector>& params); - CJS_Return QueryProperty(const wchar_t* propname); - CJS_Return GetProperty(CJS_Runtime* pRuntime, const wchar_t* propname); - CJS_Return SetProperty(CJS_Runtime* pRuntime, - const wchar_t* propname, - v8::Local vp); - CJS_Return DelProperty(CJS_Runtime* pRuntime, const wchar_t* propname); - void Initial(CPDFSDK_FormFillEnvironment* pFormFillEnv); - - private: - void UpdateGlobalPersistentVariables(); - void CommitGlobalPersisitentVariables(CJS_Runtime* pRuntime); - void DestroyGlobalPersisitentVariables(); - CJS_Return SetGlobalVariables(const ByteString& propname, - JS_GlobalDataType nType, - double dData, - bool bData, - const ByteString& sData, - v8::Local pData, - bool bDefaultPersistent); - void ObjectToArray(CJS_Runtime* pRuntime, - v8::Local pObj, - CJS_GlobalVariableArray& array); - void PutObjectProperty(v8::Local obj, CJS_KeyValue* pData); - - std::map> m_MapGlobal; - WideString m_sFilePath; - CJS_GlobalData* m_pGlobalData; - CPDFSDK_FormFillEnvironment::ObservedPtr m_pFormFillEnv; -}; - } // namespace +CJS_Global::JSGlobalData::JSGlobalData() + : nType(JS_GlobalDataType::NUMBER), + dData(0), + bData(false), + sData(""), + bPersistent(false), + bDeleted(false) {} + +CJS_Global::JSGlobalData::~JSGlobalData() { + pData.Reset(); +} + const JSMethodSpec CJS_Global::MethodSpecs[] = { {"setPersistent", setPersistent_static}}; @@ -179,22 +141,22 @@ int CJS_Global::ObjDefnID = -1; // static void CJS_Global::setPersistent_static( const v8::FunctionCallbackInfo& info) { - JSMethod( - "setPersistent", "global", info); + JSMethod("setPersistent", "global", + info); } // static void CJS_Global::queryprop_static( v8::Local property, const v8::PropertyCallbackInfo& info) { - JSSpecialPropQuery("global", property, info); + JSSpecialPropQuery("global", property, info); } // static void CJS_Global::getprop_static( v8::Local property, const v8::PropertyCallbackInfo& info) { - JSSpecialPropGet("global", property, info); + JSSpecialPropGet("global", property, info); } // static @@ -202,14 +164,14 @@ void CJS_Global::putprop_static( v8::Local property, v8::Local value, const v8::PropertyCallbackInfo& info) { - JSSpecialPropPut("global", property, value, info); + JSSpecialPropPut("global", property, value, info); } // static void CJS_Global::delprop_static( v8::Local property, const v8::PropertyCallbackInfo& info) { - JSSpecialPropDel("global", property, info); + JSSpecialPropDel("global", property, info); } // static @@ -227,49 +189,31 @@ void CJS_Global::DefineJSObjects(CFXJS_Engine* pEngine) { DefineAllProperties(pEngine); } -CJS_Global::CJS_Global(v8::Local pObject) : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); +CJS_Global::CJS_Global(v8::Local pObject) + : CJS_Object(pObject), m_pFormFillEnv(nullptr) {} + +CJS_Global::~CJS_Global() { + DestroyGlobalPersisitentVariables(); + m_pGlobalData->Release(); } void CJS_Global::InitInstance(IJS_Runtime* pIRuntime) { CJS_Runtime* pRuntime = static_cast(pIRuntime); - JSGlobalAlternate* pGlobal = - static_cast(GetEmbedObject()); - pGlobal->Initial(pRuntime->GetFormFillEnv()); -} - -JSGlobalData::JSGlobalData() - : nType(JS_GlobalDataType::NUMBER), - dData(0), - bData(false), - sData(""), - bPersistent(false), - bDeleted(false) {} - -JSGlobalData::~JSGlobalData() { - pData.Reset(); + Initial(pRuntime->GetFormFillEnv()); } -JSGlobalAlternate::JSGlobalAlternate(CJS_Object* pJSObject) - : CJS_EmbedObj(pJSObject), m_pFormFillEnv(nullptr) {} - -JSGlobalAlternate::~JSGlobalAlternate() { - DestroyGlobalPersisitentVariables(); - m_pGlobalData->Release(); -} - -void JSGlobalAlternate::Initial(CPDFSDK_FormFillEnvironment* pFormFillEnv) { +void CJS_Global::Initial(CPDFSDK_FormFillEnvironment* pFormFillEnv) { m_pFormFillEnv.Reset(pFormFillEnv); m_pGlobalData = CJS_GlobalData::GetRetainedInstance(pFormFillEnv); UpdateGlobalPersistentVariables(); } -CJS_Return JSGlobalAlternate::QueryProperty(const wchar_t* propname) { +CJS_Return CJS_Global::QueryProperty(const wchar_t* propname) { return CJS_Return(WideString(propname) != L"setPersistent"); } -CJS_Return JSGlobalAlternate::DelProperty(CJS_Runtime* pRuntime, - const wchar_t* propname) { +CJS_Return CJS_Global::DelProperty(CJS_Runtime* pRuntime, + const wchar_t* propname) { auto it = m_MapGlobal.find(ByteString::FromUnicode(propname)); if (it == m_MapGlobal.end()) return CJS_Return(false); @@ -278,8 +222,8 @@ CJS_Return JSGlobalAlternate::DelProperty(CJS_Runtime* pRuntime, return CJS_Return(true); } -CJS_Return JSGlobalAlternate::GetProperty(CJS_Runtime* pRuntime, - const wchar_t* propname) { +CJS_Return CJS_Global::GetProperty(CJS_Runtime* pRuntime, + const wchar_t* propname) { auto it = m_MapGlobal.find(ByteString::FromUnicode(propname)); if (it == m_MapGlobal.end()) return CJS_Return(true); @@ -307,9 +251,9 @@ CJS_Return JSGlobalAlternate::GetProperty(CJS_Runtime* pRuntime, return CJS_Return(false); } -CJS_Return JSGlobalAlternate::SetProperty(CJS_Runtime* pRuntime, - const wchar_t* propname, - v8::Local vp) { +CJS_Return CJS_Global::SetProperty(CJS_Runtime* pRuntime, + const wchar_t* propname, + v8::Local vp) { ByteString sPropName = ByteString::FromUnicode(propname); if (vp->IsNumber()) { return SetGlobalVariables(sPropName, JS_GlobalDataType::NUMBER, @@ -342,7 +286,7 @@ CJS_Return JSGlobalAlternate::SetProperty(CJS_Runtime* pRuntime, return CJS_Return(false); } -CJS_Return JSGlobalAlternate::setPersistent( +CJS_Return CJS_Global::setPersistent( CJS_Runtime* pRuntime, const std::vector>& params) { if (params.size() != 2) @@ -357,10 +301,10 @@ CJS_Return JSGlobalAlternate::setPersistent( return CJS_Return(true); } -void JSGlobalAlternate::UpdateGlobalPersistentVariables() { +void CJS_Global::UpdateGlobalPersistentVariables() { CJS_Runtime* pRuntime = static_cast(CFXJS_Engine::EngineFromIsolateCurrentContext( - m_pJSObject->ToV8Object()->GetIsolate())); + ToV8Object()->GetIsolate())); for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) { CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i); @@ -369,8 +313,7 @@ void JSGlobalAlternate::UpdateGlobalPersistentVariables() { SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::NUMBER, pData->data.dData, false, "", v8::Local(), pData->bPersistent == 1); - pRuntime->PutObjectProperty(m_pJSObject->ToV8Object(), - pData->data.sKey.UTF8Decode(), + pRuntime->PutObjectProperty(ToV8Object(), pData->data.sKey.UTF8Decode(), pRuntime->NewNumber(pData->data.dData)); break; case JS_GlobalDataType::BOOLEAN: @@ -378,7 +321,7 @@ void JSGlobalAlternate::UpdateGlobalPersistentVariables() { pData->data.bData == 1, "", v8::Local(), pData->bPersistent == 1); pRuntime->PutObjectProperty( - m_pJSObject->ToV8Object(), pData->data.sKey.UTF8Decode(), + ToV8Object(), pData->data.sKey.UTF8Decode(), pRuntime->NewBoolean(pData->data.bData == 1)); break; case JS_GlobalDataType::STRING: @@ -386,7 +329,7 @@ void JSGlobalAlternate::UpdateGlobalPersistentVariables() { false, pData->data.sData, v8::Local(), pData->bPersistent == 1); pRuntime->PutObjectProperty( - m_pJSObject->ToV8Object(), pData->data.sKey.UTF8Decode(), + ToV8Object(), pData->data.sKey.UTF8Decode(), pRuntime->NewString(pData->data.sData.UTF8Decode().AsStringView())); break; case JS_GlobalDataType::OBJECT: { @@ -395,7 +338,7 @@ void JSGlobalAlternate::UpdateGlobalPersistentVariables() { PutObjectProperty(pObj, &pData->data); SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::OBJECT, 0, false, "", pObj, pData->bPersistent == 1); - pRuntime->PutObjectProperty(m_pJSObject->ToV8Object(), + pRuntime->PutObjectProperty(ToV8Object(), pData->data.sKey.UTF8Decode(), pObj); } } break; @@ -403,16 +346,14 @@ void JSGlobalAlternate::UpdateGlobalPersistentVariables() { SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::NULLOBJ, 0, false, "", v8::Local(), pData->bPersistent == 1); - pRuntime->PutObjectProperty(m_pJSObject->ToV8Object(), - pData->data.sKey.UTF8Decode(), + pRuntime->PutObjectProperty(ToV8Object(), pData->data.sKey.UTF8Decode(), pRuntime->NewNull()); break; } } } -void JSGlobalAlternate::CommitGlobalPersisitentVariables( - CJS_Runtime* pRuntime) { +void CJS_Global::CommitGlobalPersisitentVariables(CJS_Runtime* pRuntime) { for (const auto& iter : m_MapGlobal) { ByteString name = iter.first; JSGlobalData* pData = iter.second.get(); @@ -435,8 +376,8 @@ void JSGlobalAlternate::CommitGlobalPersisitentVariables( break; case JS_GlobalDataType::OBJECT: { CJS_GlobalVariableArray array; - v8::Local obj = v8::Local::New( - GetJSObject()->GetIsolate(), pData->pData); + v8::Local obj = + v8::Local::New(GetIsolate(), pData->pData); ObjectToArray(pRuntime, obj, array); m_pGlobalData->SetGlobalVariableObject(name, array); m_pGlobalData->SetGlobalVariablePersistent(name, pData->bPersistent); @@ -449,9 +390,9 @@ void JSGlobalAlternate::CommitGlobalPersisitentVariables( } } -void JSGlobalAlternate::ObjectToArray(CJS_Runtime* pRuntime, - v8::Local pObj, - CJS_GlobalVariableArray& array) { +void CJS_Global::ObjectToArray(CJS_Runtime* pRuntime, + v8::Local pObj, + CJS_GlobalVariableArray& array) { std::vector pKeyList = pRuntime->GetObjectPropertyNames(pObj); for (const auto& ws : pKeyList) { ByteString sKey = ws.UTF8Encode(); @@ -498,10 +439,10 @@ void JSGlobalAlternate::ObjectToArray(CJS_Runtime* pRuntime, } } -void JSGlobalAlternate::PutObjectProperty(v8::Local pObj, - CJS_KeyValue* pData) { - CJS_Runtime* pRuntime = CJS_Runtime::RuntimeFromIsolateCurrentContext( - m_pJSObject->ToV8Object()->GetIsolate()); +void CJS_Global::PutObjectProperty(v8::Local pObj, + CJS_KeyValue* pData) { + CJS_Runtime* pRuntime = + CJS_Runtime::RuntimeFromIsolateCurrentContext(ToV8Object()->GetIsolate()); for (int i = 0, sz = pData->objData.Count(); i < sz; i++) { CJS_KeyValue* pObjData = pData->objData.GetAt(i); @@ -535,17 +476,17 @@ void JSGlobalAlternate::PutObjectProperty(v8::Local pObj, } } -void JSGlobalAlternate::DestroyGlobalPersisitentVariables() { +void CJS_Global::DestroyGlobalPersisitentVariables() { m_MapGlobal.clear(); } -CJS_Return JSGlobalAlternate::SetGlobalVariables(const ByteString& propname, - JS_GlobalDataType nType, - double dData, - bool bData, - const ByteString& sData, - v8::Local pData, - bool bDefaultPersistent) { +CJS_Return CJS_Global::SetGlobalVariables(const ByteString& propname, + JS_GlobalDataType nType, + double dData, + bool bData, + const ByteString& sData, + v8::Local pData, + bool bDefaultPersistent) { if (propname.IsEmpty()) return CJS_Return(false); diff --git a/fxjs/cjs_global.h b/fxjs/cjs_global.h index 719f4b4044..ab905bcdd2 100644 --- a/fxjs/cjs_global.h +++ b/fxjs/cjs_global.h @@ -7,7 +7,14 @@ #ifndef FXJS_CJS_GLOBAL_H_ #define FXJS_CJS_GLOBAL_H_ +#include +#include +#include + #include "fxjs/JS_Define.h" +#include "fxjs/cjs_keyvalue.h" + +class CJS_GlobalData; class CJS_Global : public CJS_Object { public: @@ -29,14 +36,58 @@ class CJS_Global : public CJS_Object { const v8::FunctionCallbackInfo& info); explicit CJS_Global(v8::Local pObject); - ~CJS_Global() override = default; + ~CJS_Global() override; // CJS_Object void InitInstance(IJS_Runtime* pIRuntime) override; + CJS_Return DelProperty(CJS_Runtime* pRuntime, const wchar_t* propname); + void Initial(CPDFSDK_FormFillEnvironment* pFormFillEnv); + + CJS_Return setPersistent(CJS_Runtime* pRuntime, + const std::vector>& params); + CJS_Return QueryProperty(const wchar_t* propname); + CJS_Return GetProperty(CJS_Runtime* pRuntime, const wchar_t* propname); + CJS_Return SetProperty(CJS_Runtime* pRuntime, + const wchar_t* propname, + v8::Local vp); + private: + struct JSGlobalData { + JSGlobalData(); + ~JSGlobalData(); + + JS_GlobalDataType nType; + double dData; + bool bData; + ByteString sData; + v8::Global pData; + bool bPersistent; + bool bDeleted; + }; + static int ObjDefnID; static const JSMethodSpec MethodSpecs[]; + + void UpdateGlobalPersistentVariables(); + void CommitGlobalPersisitentVariables(CJS_Runtime* pRuntime); + void DestroyGlobalPersisitentVariables(); + CJS_Return SetGlobalVariables(const ByteString& propname, + JS_GlobalDataType nType, + double dData, + bool bData, + const ByteString& sData, + v8::Local pData, + bool bDefaultPersistent); + void ObjectToArray(CJS_Runtime* pRuntime, + v8::Local pObj, + CJS_GlobalVariableArray& array); + void PutObjectProperty(v8::Local obj, CJS_KeyValue* pData); + + std::map> m_MapGlobal; + WideString m_sFilePath; + CJS_GlobalData* m_pGlobalData; + CPDFSDK_FormFillEnvironment::ObservedPtr m_pFormFillEnv; }; #endif // FXJS_CJS_GLOBAL_H_ diff --git a/fxjs/cjs_icon.cpp b/fxjs/cjs_icon.cpp index 69a6d45557..40a2936d95 100644 --- a/fxjs/cjs_icon.cpp +++ b/fxjs/cjs_icon.cpp @@ -10,6 +10,7 @@ const JSPropertySpec CJS_Icon::PropertySpecs[] = { {"name", get_name_static, set_name_static}}; int CJS_Icon::ObjDefnID = -1; +const char CJS_Icon::kName[] = "Icon"; // static int CJS_Icon::GetObjDefnID() { @@ -18,24 +19,20 @@ int CJS_Icon::GetObjDefnID() { // static void CJS_Icon::DefineJSObjects(CFXJS_Engine* pEngine) { - ObjDefnID = pEngine->DefineObj("Icon", FXJSOBJTYPE_DYNAMIC, + ObjDefnID = pEngine->DefineObj(CJS_Icon::kName, FXJSOBJTYPE_DYNAMIC, JSConstructor, JSDestructor); DefineProps(pEngine, ObjDefnID, PropertySpecs, FX_ArraySize(PropertySpecs)); } -CJS_Icon::CJS_Icon(v8::Local pObject) : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} - -Icon::Icon(CJS_Object* pJSObject) - : CJS_EmbedObj(pJSObject), m_swIconName(L"") {} +CJS_Icon::CJS_Icon(v8::Local pObject) + : CJS_Object(pObject), m_swIconName(L"") {} -Icon::~Icon() = default; +CJS_Icon::~CJS_Icon() = default; -CJS_Return Icon::get_name(CJS_Runtime* pRuntime) { +CJS_Return CJS_Icon::get_name(CJS_Runtime* pRuntime) { return CJS_Return(pRuntime->NewString(m_swIconName.c_str())); } -CJS_Return Icon::set_name(CJS_Runtime* pRuntime, v8::Local vp) { +CJS_Return CJS_Icon::set_name(CJS_Runtime* pRuntime, v8::Local vp) { return CJS_Return(false); } diff --git a/fxjs/cjs_icon.h b/fxjs/cjs_icon.h index 3ded32f83a..a346d69e73 100644 --- a/fxjs/cjs_icon.h +++ b/fxjs/cjs_icon.h @@ -9,34 +9,28 @@ #include "fxjs/JS_Define.h" -class Icon : public CJS_EmbedObj { - public: - explicit Icon(CJS_Object* pJSObject); - ~Icon() override; - - CJS_Return get_name(CJS_Runtime* pRuntime); - CJS_Return set_name(CJS_Runtime* pRuntime, v8::Local vp); - - WideString GetIconName() const { return m_swIconName; } - void SetIconName(WideString name) { m_swIconName = name; } - - private: - WideString m_swIconName; -}; - class CJS_Icon : public CJS_Object { public: static int GetObjDefnID(); static void DefineJSObjects(CFXJS_Engine* pEngine); explicit CJS_Icon(v8::Local pObject); - ~CJS_Icon() override = default; + ~CJS_Icon() override; + + WideString GetIconName() const { return m_swIconName; } + void SetIconName(WideString name) { m_swIconName = name; } - JS_STATIC_PROP(name, name, Icon); + JS_STATIC_PROP(name, name, CJS_Icon); private: static int ObjDefnID; + static const char kName[]; static const JSPropertySpec PropertySpecs[]; + + CJS_Return get_name(CJS_Runtime* pRuntime); + CJS_Return set_name(CJS_Runtime* pRuntime, v8::Local vp); + + WideString m_swIconName; }; #endif // FXJS_CJS_ICON_H_ diff --git a/fxjs/cjs_object.h b/fxjs/cjs_object.h index 67389f59e6..22a5e1625a 100644 --- a/fxjs/cjs_object.h +++ b/fxjs/cjs_object.h @@ -11,7 +11,6 @@ #include #include "fpdfsdk/fsdk_define.h" -#include "fxjs/cjs_embedobj.h" #include "fxjs/cjs_runtime.h" #include "fxjs/fxjs_v8.h" @@ -56,13 +55,9 @@ class CJS_Object { virtual void InitInstance(IJS_Runtime* pIRuntime); v8::Local ToV8Object() { return m_pV8Object.Get(m_pIsolate); } - - CJS_EmbedObj* GetEmbedObject() const { return m_pEmbedObj.get(); } - v8::Isolate* GetIsolate() const { return m_pIsolate; } protected: - std::unique_ptr m_pEmbedObj; v8::Global m_pV8Object; v8::Isolate* m_pIsolate; }; diff --git a/fxjs/cjs_printparamsobj.cpp b/fxjs/cjs_printparamsobj.cpp index 91d02201b1..b85925de44 100644 --- a/fxjs/cjs_printparamsobj.cpp +++ b/fxjs/cjs_printparamsobj.cpp @@ -21,18 +21,6 @@ void CJS_PrintParamsObj::DefineJSObjects(CFXJS_Engine* pEngine) { } CJS_PrintParamsObj::CJS_PrintParamsObj(v8::Local pObject) - : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} + : CJS_Object(pObject) {} -PrintParamsObj::PrintParamsObj(CJS_Object* pJSObject) - : CJS_EmbedObj(pJSObject) { - bUI = true; - nStart = 0; - nEnd = 0; - bSilent = false; - bShrinkToFit = false; - bPrintAsImage = false; - bReverse = false; - bAnnotations = true; -} +CJS_PrintParamsObj::~CJS_PrintParamsObj() = default; diff --git a/fxjs/cjs_printparamsobj.h b/fxjs/cjs_printparamsobj.h index aa2b365888..97028dd557 100644 --- a/fxjs/cjs_printparamsobj.h +++ b/fxjs/cjs_printparamsobj.h @@ -9,32 +9,34 @@ #include "fxjs/JS_Define.h" -class PrintParamsObj : public CJS_EmbedObj { - public: - explicit PrintParamsObj(CJS_Object* pJSObject); - ~PrintParamsObj() override {} - - public: - bool bUI; - int nStart; - int nEnd; - bool bSilent; - bool bShrinkToFit; - bool bPrintAsImage; - bool bReverse; - bool bAnnotations; -}; - class CJS_PrintParamsObj : public CJS_Object { public: static int GetObjDefnID(); static void DefineJSObjects(CFXJS_Engine* pEngine); explicit CJS_PrintParamsObj(v8::Local pObject); - ~CJS_PrintParamsObj() override = default; + ~CJS_PrintParamsObj() override; + + bool GetUI() const { return bUI; } + int GetStart() const { return nStart; } + int GetEnd() const { return nEnd; } + bool GetSilent() const { return bSilent; } + bool GetShrinkToFit() const { return bShrinkToFit; } + bool GetPrintAsImage() const { return bPrintAsImage; } + bool GetReverse() const { return bReverse; } + bool GetAnnotations() const { return bAnnotations; } private: static int ObjDefnID; + + bool bUI = true; + int nStart = 0; + int nEnd = 0; + bool bSilent = false; + bool bShrinkToFit = false; + bool bPrintAsImage = false; + bool bReverse = false; + bool bAnnotations = true; }; #endif // FXJS_CJS_PRINTPARAMSOBJ_H_ diff --git a/fxjs/cjs_publicmethods.cpp b/fxjs/cjs_publicmethods.cpp index 9fcfc5f291..30927beac2 100644 --- a/fxjs/cjs_publicmethods.cpp +++ b/fxjs/cjs_publicmethods.cpp @@ -936,7 +936,7 @@ CJS_Return CJS_PublicMethods::AFNumber_Format( Value += L')'; } if (iNegStyle == 1 || iNegStyle == 3) { - if (Field* fTarget = pEvent->Target_Field()) { + if (CJS_Field* fTarget = pEvent->Target_Field()) { v8::Local arColor = pRuntime->NewArray(); pRuntime->PutArrayElement(arColor, 0, pRuntime->NewString(L"RGB")); pRuntime->PutArrayElement(arColor, 1, pRuntime->NewNumber(1)); @@ -947,7 +947,7 @@ CJS_Return CJS_PublicMethods::AFNumber_Format( } } else { if (iNegStyle == 1 || iNegStyle == 3) { - if (Field* fTarget = pEvent->Target_Field()) { + if (CJS_Field* fTarget = pEvent->Target_Field()) { v8::Local arColor = pRuntime->NewArray(); pRuntime->PutArrayElement(arColor, 0, pRuntime->NewString(L"RGB")); pRuntime->PutArrayElement(arColor, 1, pRuntime->NewNumber(0)); @@ -955,9 +955,10 @@ CJS_Return CJS_PublicMethods::AFNumber_Format( pRuntime->PutArrayElement(arColor, 3, pRuntime->NewNumber(0)); CJS_Return result = fTarget->get_text_color(pRuntime); - CFX_Color crProp = color::ConvertArrayToPWLColor( + CFX_Color crProp = CJS_Color::ConvertArrayToPWLColor( pRuntime, pRuntime->ToArray(result.Return())); - CFX_Color crColor = color::ConvertArrayToPWLColor(pRuntime, arColor); + CFX_Color crColor = + CJS_Color::ConvertArrayToPWLColor(pRuntime, arColor); if (crColor != crProp) fTarget->set_text_color(pRuntime, arColor); } @@ -1374,7 +1375,7 @@ CJS_Return CJS_PublicMethods::AFSpecial_Format( wsFormat = L"99999-9999"; break; case 2: - if (util::printx(L"9999999999", wsSource).GetLength() >= 10) + if (CJS_Util::printx(L"9999999999", wsSource).GetLength() >= 10) wsFormat = L"(999) 999-9999"; else wsFormat = L"999-9999"; @@ -1384,7 +1385,7 @@ CJS_Return CJS_PublicMethods::AFSpecial_Format( break; } - pEvent->Value() = util::printx(wsFormat, wsSource); + pEvent->Value() = CJS_Util::printx(wsFormat, wsSource); return CJS_Return(true); } diff --git a/fxjs/cjs_report.cpp b/fxjs/cjs_report.cpp index a5e544151e..2f5490c472 100644 --- a/fxjs/cjs_report.cpp +++ b/fxjs/cjs_report.cpp @@ -16,30 +16,28 @@ const JSMethodSpec CJS_Report::MethodSpecs[] = { {"writeText", writeText_static}}; int CJS_Report::ObjDefnID = -1; +const char CJS_Report::kName[] = "Report"; // static void CJS_Report::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) { - ObjDefnID = pEngine->DefineObj("Report", eObjType, JSConstructor, - JSDestructor); + ObjDefnID = pEngine->DefineObj(CJS_Report::kName, eObjType, + JSConstructor, JSDestructor); DefineMethods(pEngine, ObjDefnID, MethodSpecs, FX_ArraySize(MethodSpecs)); } -CJS_Report::CJS_Report(v8::Local pObject) : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} - -Report::Report(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {} +CJS_Report::CJS_Report(v8::Local pObject) : CJS_Object(pObject) {} -Report::~Report() = default; +CJS_Report::~CJS_Report() = default; -CJS_Return Report::writeText(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Report::writeText( + CJS_Runtime* pRuntime, + const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } -CJS_Return Report::save(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Report::save(CJS_Runtime* pRuntime, + const std::vector>& params) { // Unsafe, not supported. return CJS_Return(true); } diff --git a/fxjs/cjs_report.h b/fxjs/cjs_report.h index 168df7946b..2a59206410 100644 --- a/fxjs/cjs_report.h +++ b/fxjs/cjs_report.h @@ -11,31 +11,25 @@ #include "fxjs/JS_Define.h" -class Report : public CJS_EmbedObj { - public: - explicit Report(CJS_Object* pJSObject); - ~Report() override; - - public: - CJS_Return save(CJS_Runtime* pRuntime, - const std::vector>& params); - CJS_Return writeText(CJS_Runtime* pRuntime, - const std::vector>& params); -}; - class CJS_Report : public CJS_Object { public: static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType); explicit CJS_Report(v8::Local pObject); - ~CJS_Report() override = default; + ~CJS_Report() override; - JS_STATIC_METHOD(save, Report) - JS_STATIC_METHOD(writeText, Report); + JS_STATIC_METHOD(save, CJS_Report); + JS_STATIC_METHOD(writeText, CJS_Report); private: static int ObjDefnID; + static const char kName[]; static const JSMethodSpec MethodSpecs[]; + + CJS_Return save(CJS_Runtime* pRuntime, + const std::vector>& params); + CJS_Return writeText(CJS_Runtime* pRuntime, + const std::vector>& params); }; #endif // FXJS_CJS_REPORT_H_ diff --git a/fxjs/cjs_runtime.cpp b/fxjs/cjs_runtime.cpp index 662269514a..6da52ad7ef 100644 --- a/fxjs/cjs_runtime.cpp +++ b/fxjs/cjs_runtime.cpp @@ -195,11 +195,7 @@ void CJS_Runtime::SetFormFillEnvToDocument() { if (!pJSDocument) return; - Document* pDocument = static_cast(pJSDocument->GetEmbedObject()); - if (!pDocument) - return; - - pDocument->SetFormFillEnv(m_pFormFillEnv.Get()); + pJSDocument->SetFormFillEnv(m_pFormFillEnv.Get()); } CPDFSDK_FormFillEnvironment* CJS_Runtime::GetFormFillEnv() const { diff --git a/fxjs/cjs_timerobj.cpp b/fxjs/cjs_timerobj.cpp index 172ee5c04e..59d38423af 100644 --- a/fxjs/cjs_timerobj.cpp +++ b/fxjs/cjs_timerobj.cpp @@ -22,15 +22,10 @@ void CJS_TimerObj::DefineJSObjects(CFXJS_Engine* pEngine) { } CJS_TimerObj::CJS_TimerObj(v8::Local pObject) - : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} - -TimerObj::TimerObj(CJS_Object* pJSObject) - : CJS_EmbedObj(pJSObject), m_nTimerID(0) {} + : CJS_Object(pObject), m_nTimerID(0) {} -TimerObj::~TimerObj() = default; +CJS_TimerObj::~CJS_TimerObj() = default; -void TimerObj::SetTimer(GlobalTimer* pTimer) { +void CJS_TimerObj::SetTimer(GlobalTimer* pTimer) { m_nTimerID = pTimer->GetTimerID(); } diff --git a/fxjs/cjs_timerobj.h b/fxjs/cjs_timerobj.h index b4938c4ece..edc3def952 100644 --- a/fxjs/cjs_timerobj.h +++ b/fxjs/cjs_timerobj.h @@ -11,28 +11,21 @@ class GlobalTimer; -class TimerObj : public CJS_EmbedObj { - public: - explicit TimerObj(CJS_Object* pJSObject); - ~TimerObj() override; - - void SetTimer(GlobalTimer* pTimer); - int GetTimerID() const { return m_nTimerID; } - - private: - int m_nTimerID; // Weak reference to GlobalTimer through global map. -}; - class CJS_TimerObj : public CJS_Object { public: static int GetObjDefnID(); static void DefineJSObjects(CFXJS_Engine* pEngine); explicit CJS_TimerObj(v8::Local pObject); - ~CJS_TimerObj() override = default; + ~CJS_TimerObj() override; + + void SetTimer(GlobalTimer* pTimer); + int GetTimerID() const { return m_nTimerID; } private: static int ObjDefnID; + + int m_nTimerID; // Weak reference to GlobalTimer through global map. }; #endif // FXJS_CJS_TIMEROBJ_H_ diff --git a/fxjs/cjs_util.cpp b/fxjs/cjs_util.cpp index db03dbdb82..fd064b33a6 100644 --- a/fxjs/cjs_util.cpp +++ b/fxjs/cjs_util.cpp @@ -65,24 +65,21 @@ const JSMethodSpec CJS_Util::MethodSpecs[] = { {"byteToChar", byteToChar_static}}; int CJS_Util::ObjDefnID = -1; +const char CJS_Util::kName[] = "util"; // static void CJS_Util::DefineJSObjects(CFXJS_Engine* pEngine) { - ObjDefnID = pEngine->DefineObj("util", FXJSOBJTYPE_STATIC, + ObjDefnID = pEngine->DefineObj(CJS_Util::kName, FXJSOBJTYPE_STATIC, JSConstructor, JSDestructor); DefineMethods(pEngine, ObjDefnID, MethodSpecs, FX_ArraySize(MethodSpecs)); } -CJS_Util::CJS_Util(v8::Local pObject) : CJS_Object(pObject) { - m_pEmbedObj = pdfium::MakeUnique(this); -} - -util::util(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {} +CJS_Util::CJS_Util(v8::Local pObject) : CJS_Object(pObject) {} -util::~util() = default; +CJS_Util::~CJS_Util() = default; -CJS_Return util::printf(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Util::printf(CJS_Runtime* pRuntime, + const std::vector>& params) { const size_t iSize = params.size(); if (iSize < 1) return CJS_Return(false); @@ -143,8 +140,8 @@ CJS_Return util::printf(CJS_Runtime* pRuntime, return CJS_Return(pRuntime->NewString(c_strResult.c_str())); } -CJS_Return util::printd(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Util::printd(CJS_Runtime* pRuntime, + const std::vector>& params) { const size_t iSize = params.size(); if (iSize < 2) return CJS_Return(false); @@ -253,8 +250,8 @@ CJS_Return util::printd(CJS_Runtime* pRuntime, return CJS_Return(JSGetStringFromID(JSMessage::kTypeError)); } -CJS_Return util::printx(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Util::printx(CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() < 2) return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); @@ -274,8 +271,8 @@ static wchar_t TranslateCase(wchar_t input, CaseMode eMode) { return input; } -WideString util::printx(const WideString& wsFormat, - const WideString& wsSource) { +WideString CJS_Util::printx(const WideString& wsFormat, + const WideString& wsSource) { WideString wsResult; size_t iSourceIdx = 0; size_t iFormatIdx = 0; @@ -362,8 +359,8 @@ WideString util::printx(const WideString& wsFormat, return wsResult; } -CJS_Return util::scand(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Util::scand(CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() < 2) return CJS_Return(false); @@ -378,8 +375,9 @@ CJS_Return util::scand(CJS_Runtime* pRuntime, return CJS_Return(pRuntime->NewDate(dDate)); } -CJS_Return util::byteToChar(CJS_Runtime* pRuntime, - const std::vector>& params) { +CJS_Return CJS_Util::byteToChar( + CJS_Runtime* pRuntime, + const std::vector>& params) { if (params.size() < 1) return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); @@ -395,7 +393,7 @@ CJS_Return util::byteToChar(CJS_Runtime* pRuntime, // directive which is safe to use with a single argument, and return the type // of argument expected, or -1 otherwise. If -1 is returned, it is NOT safe // to use sFormat with printf() and it must be copied byte-by-byte. -int util::ParseDataType(std::wstring* sFormat) { +int CJS_Util::ParseDataType(std::wstring* sFormat) { enum State { BEFORE, FLAGS, WIDTH, PRECISION, SPECIFIER, AFTER }; int result = -1; diff --git a/fxjs/cjs_util.h b/fxjs/cjs_util.h index 1ed8405d46..0ad0fa101c 100644 --- a/fxjs/cjs_util.h +++ b/fxjs/cjs_util.h @@ -17,10 +17,30 @@ #define UTIL_DOUBLE 1 #define UTIL_STRING 2 -class util : public CJS_EmbedObj { +class CJS_Util : public CJS_Object { public: - explicit util(CJS_Object* pJSObject); - ~util() override; + static void DefineJSObjects(CFXJS_Engine* pEngine); + + explicit CJS_Util(v8::Local pObject); + ~CJS_Util() override; + + static WideString printx(const WideString& cFormat, + const WideString& cSource); + + JS_STATIC_METHOD(printd, CJS_Util); + JS_STATIC_METHOD(printf, CJS_Util); + JS_STATIC_METHOD(printx, CJS_Util); + JS_STATIC_METHOD(scand, CJS_Util); + JS_STATIC_METHOD(byteToChar, CJS_Util); + + private: + friend class CJS_Util_ParseDataType_Test; + + static int ObjDefnID; + static const char kName[]; + static const JSMethodSpec MethodSpecs[]; + + static int ParseDataType(std::wstring* sFormat); CJS_Return printd(CJS_Runtime* pRuntime, const std::vector>& params); @@ -32,32 +52,6 @@ class util : public CJS_EmbedObj { const std::vector>& params); CJS_Return byteToChar(CJS_Runtime* pRuntime, const std::vector>& params); - - static WideString printx(const WideString& cFormat, - const WideString& cSource); - - private: - friend class CJS_Util_ParseDataType_Test; - - static int ParseDataType(std::wstring* sFormat); -}; - -class CJS_Util : public CJS_Object { - public: - static void DefineJSObjects(CFXJS_Engine* pEngine); - - explicit CJS_Util(v8::Local pObject); - ~CJS_Util() override = default; - - JS_STATIC_METHOD(printd, util); - JS_STATIC_METHOD(printf, util); - JS_STATIC_METHOD(printx, util); - JS_STATIC_METHOD(scand, util); - JS_STATIC_METHOD(byteToChar, util); - - private: - static int ObjDefnID; - static const JSMethodSpec MethodSpecs[]; }; #endif // FXJS_CJS_UTIL_H_ diff --git a/fxjs/cjs_util_unittest.cpp b/fxjs/cjs_util_unittest.cpp index 6f43f0fcb6..4e25ca1485 100644 --- a/fxjs/cjs_util_unittest.cpp +++ b/fxjs/cjs_util_unittest.cpp @@ -107,7 +107,7 @@ TEST(CJS_Util, ParseDataType) { for (size_t i = 0; i < FX_ArraySize(cases); i++) { std::wstring input(cases[i].input_string); - EXPECT_EQ(cases[i].expected, util::ParseDataType(&input)) + EXPECT_EQ(cases[i].expected, CJS_Util::ParseDataType(&input)) << cases[i].input_string; } } diff --git a/fxjs/global_timer.cpp b/fxjs/global_timer.cpp index 6f7f09c673..9c69ac2ea9 100644 --- a/fxjs/global_timer.cpp +++ b/fxjs/global_timer.cpp @@ -6,7 +6,7 @@ #include "fxjs/global_timer.h" -GlobalTimer::GlobalTimer(app* pObj, +GlobalTimer::GlobalTimer(CJS_App* pObj, CPDFSDK_FormFillEnvironment* pFormFillEnv, CJS_Runtime* pRuntime, int nType, @@ -14,7 +14,7 @@ GlobalTimer::GlobalTimer(app* pObj, uint32_t dwElapse, uint32_t dwTimeOut) : m_nTimerID(0), - m_pEmbedObj(pObj), + m_pEmbedApp(pObj), m_bProcessing(false), m_nType(nType), m_dwTimeOut(dwTimeOut), @@ -48,8 +48,8 @@ void GlobalTimer::Trigger(int nTimerID) { return; pTimer->m_bProcessing = true; - if (pTimer->m_pEmbedObj) - pTimer->m_pEmbedObj->TimerProc(pTimer); + if (pTimer->m_pEmbedApp) + pTimer->m_pEmbedApp->TimerProc(pTimer); // Timer proc may have destroyed timer, find it again. it = GetGlobalTimerMap()->find(nTimerID); @@ -59,7 +59,7 @@ void GlobalTimer::Trigger(int nTimerID) { pTimer = it->second; pTimer->m_bProcessing = false; if (pTimer->IsOneShot()) - pTimer->m_pEmbedObj->CancelProc(pTimer); + pTimer->m_pEmbedApp->CancelProc(pTimer); } // static @@ -69,7 +69,7 @@ void GlobalTimer::Cancel(int nTimerID) { return; GlobalTimer* pTimer = it->second; - pTimer->m_pEmbedObj->CancelProc(pTimer); + pTimer->m_pEmbedApp->CancelProc(pTimer); } // static diff --git a/fxjs/global_timer.h b/fxjs/global_timer.h index ec8806b9a1..63bda57be4 100644 --- a/fxjs/global_timer.h +++ b/fxjs/global_timer.h @@ -13,7 +13,7 @@ class GlobalTimer { public: - GlobalTimer(app* pObj, + GlobalTimer(CJS_App* pObj, CPDFSDK_FormFillEnvironment* pFormFillEnv, CJS_Runtime* pRuntime, int nType, @@ -36,7 +36,7 @@ class GlobalTimer { static TimerMap* GetGlobalTimerMap(); uint32_t m_nTimerID; - app* const m_pEmbedObj; + CJS_App* const m_pEmbedApp; bool m_bProcessing; // data -- cgit v1.2.3