From 5e873f5ce8e407c97e966b9708d2560e908112d3 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Mon, 11 Jun 2018 18:08:07 +0000 Subject: Move some CFXJS_Engine methods to CFXJS_ObjDefinition. Partial move, we'll clean up the engine side later. Change-Id: I07fdae150de9e834d11ed242a7f9a007aae266ac Reviewed-on: https://pdfium-review.googlesource.com/34810 Commit-Queue: Tom Sepez Reviewed-by: dsinclair --- fxjs/cfxjs_engine.cpp | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/fxjs/cfxjs_engine.cpp b/fxjs/cfxjs_engine.cpp index f964c80e02..0978bee7c1 100644 --- a/fxjs/cfxjs_engine.cpp +++ b/fxjs/cfxjs_engine.cpp @@ -143,6 +143,34 @@ class CFXJS_ObjDefinition { m_Signature.Reset(isolate, sig); } + void DefineConst(const char* sConstName, v8::Local pDefault) { + GetInstanceTemplate()->Set(m_pIsolate, sConstName, pDefault); + } + + void DefineProperty(v8::Local sPropName, + v8::AccessorGetterCallback pPropGet, + v8::AccessorSetterCallback pPropPut) { + GetInstanceTemplate()->SetAccessor(sPropName, pPropGet, pPropPut); + } + + void DefineMethod(v8::Local sMethodName, + v8::FunctionCallback pMethodCall) { + v8::Local fun = v8::FunctionTemplate::New( + m_pIsolate, pMethodCall, v8::Local(), GetSignature()); + fun->RemovePrototype(); + GetInstanceTemplate()->Set(sMethodName, fun, v8::ReadOnly); + } + + void DefineAllProperties(v8::GenericNamedPropertyQueryCallback pPropQurey, + v8::GenericNamedPropertyGetterCallback pPropGet, + v8::GenericNamedPropertySetterCallback pPropPut, + v8::GenericNamedPropertyDeleterCallback pPropDel) { + GetInstanceTemplate()->SetHandler(v8::NamedPropertyHandlerConfiguration( + pPropGet, pPropPut, pPropQurey, pPropDel, nullptr, + v8::Local(), + v8::PropertyHandlerFlags::kOnlyInterceptStrings)); + } + v8::Local GetInstanceTemplate() { v8::EscapableHandleScope scope(m_pIsolate); v8::Local function = @@ -332,12 +360,7 @@ void CFXJS_Engine::DefineObjMethod(int nObjDefnID, v8::HandleScope handle_scope(GetIsolate()); FXJS_PerIsolateData* pIsolateData = FXJS_PerIsolateData::Get(GetIsolate()); CFXJS_ObjDefinition* pObjDef = pIsolateData->ObjDefinitionForID(nObjDefnID); - v8::Local fun = v8::FunctionTemplate::New( - GetIsolate(), pMethodCall, v8::Local(), - pObjDef->GetSignature()); - fun->RemovePrototype(); - pObjDef->GetInstanceTemplate()->Set(NewString(sMethodName), fun, - v8::ReadOnly); + pObjDef->DefineMethod(NewString(sMethodName), pMethodCall); } void CFXJS_Engine::DefineObjProperty(int nObjDefnID, @@ -348,8 +371,7 @@ void CFXJS_Engine::DefineObjProperty(int nObjDefnID, v8::HandleScope handle_scope(GetIsolate()); FXJS_PerIsolateData* pIsolateData = FXJS_PerIsolateData::Get(GetIsolate()); CFXJS_ObjDefinition* pObjDef = pIsolateData->ObjDefinitionForID(nObjDefnID); - pObjDef->GetInstanceTemplate()->SetAccessor(NewString(sPropName), pPropGet, - pPropPut); + pObjDef->DefineProperty(NewString(sPropName), pPropGet, pPropPut); } void CFXJS_Engine::DefineObjAllProperties( @@ -362,11 +384,7 @@ void CFXJS_Engine::DefineObjAllProperties( v8::HandleScope handle_scope(GetIsolate()); FXJS_PerIsolateData* pIsolateData = FXJS_PerIsolateData::Get(GetIsolate()); CFXJS_ObjDefinition* pObjDef = pIsolateData->ObjDefinitionForID(nObjDefnID); - pObjDef->GetInstanceTemplate()->SetHandler( - v8::NamedPropertyHandlerConfiguration( - pPropGet, pPropPut, pPropQurey, pPropDel, nullptr, - v8::Local(), - v8::PropertyHandlerFlags::kOnlyInterceptStrings)); + pObjDef->DefineAllProperties(pPropQurey, pPropGet, pPropPut, pPropDel); } void CFXJS_Engine::DefineObjConst(int nObjDefnID, @@ -376,7 +394,7 @@ void CFXJS_Engine::DefineObjConst(int nObjDefnID, v8::HandleScope handle_scope(GetIsolate()); FXJS_PerIsolateData* pIsolateData = FXJS_PerIsolateData::Get(GetIsolate()); CFXJS_ObjDefinition* pObjDef = pIsolateData->ObjDefinitionForID(nObjDefnID); - pObjDef->GetInstanceTemplate()->Set(GetIsolate(), sConstName, pDefault); + pObjDef->DefineConst(sConstName, pDefault); } void CFXJS_Engine::DefineGlobalMethod(const char* sMethodName, -- cgit v1.2.3