xref: /aosp_15_r20/external/pdfium/fxjs/cjs_object.cpp (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors
2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file.
4*3ac0a46fSAndroid Build Coastguard Worker 
5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6*3ac0a46fSAndroid Build Coastguard Worker 
7*3ac0a46fSAndroid Build Coastguard Worker #include "fxjs/cjs_object.h"
8*3ac0a46fSAndroid Build Coastguard Worker 
9*3ac0a46fSAndroid Build Coastguard Worker #include "fxjs/cfxjs_engine.h"
10*3ac0a46fSAndroid Build Coastguard Worker 
11*3ac0a46fSAndroid Build Coastguard Worker // static
DefineConsts(CFXJS_Engine * pEngine,uint32_t nObjDefnID,pdfium::span<const JSConstSpec> consts)12*3ac0a46fSAndroid Build Coastguard Worker void CJS_Object::DefineConsts(CFXJS_Engine* pEngine,
13*3ac0a46fSAndroid Build Coastguard Worker                               uint32_t nObjDefnID,
14*3ac0a46fSAndroid Build Coastguard Worker                               pdfium::span<const JSConstSpec> consts) {
15*3ac0a46fSAndroid Build Coastguard Worker   for (const auto& item : consts) {
16*3ac0a46fSAndroid Build Coastguard Worker     pEngine->DefineObjConst(
17*3ac0a46fSAndroid Build Coastguard Worker         nObjDefnID, item.pName,
18*3ac0a46fSAndroid Build Coastguard Worker         item.eType == JSConstSpec::Number
19*3ac0a46fSAndroid Build Coastguard Worker             ? pEngine->NewNumber(item.number).As<v8::Value>()
20*3ac0a46fSAndroid Build Coastguard Worker             : pEngine->NewString(item.pStr).As<v8::Value>());
21*3ac0a46fSAndroid Build Coastguard Worker   }
22*3ac0a46fSAndroid Build Coastguard Worker }
23*3ac0a46fSAndroid Build Coastguard Worker 
24*3ac0a46fSAndroid Build Coastguard Worker // static
DefineProps(CFXJS_Engine * pEngine,uint32_t nObjDefnID,pdfium::span<const JSPropertySpec> props)25*3ac0a46fSAndroid Build Coastguard Worker void CJS_Object::DefineProps(CFXJS_Engine* pEngine,
26*3ac0a46fSAndroid Build Coastguard Worker                              uint32_t nObjDefnID,
27*3ac0a46fSAndroid Build Coastguard Worker                              pdfium::span<const JSPropertySpec> props) {
28*3ac0a46fSAndroid Build Coastguard Worker   for (const auto& item : props)
29*3ac0a46fSAndroid Build Coastguard Worker     pEngine->DefineObjProperty(nObjDefnID, item.pName, item.pPropGet,
30*3ac0a46fSAndroid Build Coastguard Worker                                item.pPropPut);
31*3ac0a46fSAndroid Build Coastguard Worker }
32*3ac0a46fSAndroid Build Coastguard Worker 
33*3ac0a46fSAndroid Build Coastguard Worker // static
DefineMethods(CFXJS_Engine * pEngine,uint32_t nObjDefnID,pdfium::span<const JSMethodSpec> methods)34*3ac0a46fSAndroid Build Coastguard Worker void CJS_Object::DefineMethods(CFXJS_Engine* pEngine,
35*3ac0a46fSAndroid Build Coastguard Worker                                uint32_t nObjDefnID,
36*3ac0a46fSAndroid Build Coastguard Worker                                pdfium::span<const JSMethodSpec> methods) {
37*3ac0a46fSAndroid Build Coastguard Worker   for (const auto& item : methods)
38*3ac0a46fSAndroid Build Coastguard Worker     pEngine->DefineObjMethod(nObjDefnID, item.pName, item.pMethodCall);
39*3ac0a46fSAndroid Build Coastguard Worker }
40*3ac0a46fSAndroid Build Coastguard Worker 
CJS_Object(v8::Local<v8::Object> pObject,CJS_Runtime * pRuntime)41*3ac0a46fSAndroid Build Coastguard Worker CJS_Object::CJS_Object(v8::Local<v8::Object> pObject, CJS_Runtime* pRuntime)
42*3ac0a46fSAndroid Build Coastguard Worker     : m_pV8Object(pObject->GetIsolate(), pObject), m_pRuntime(pRuntime) {}
43*3ac0a46fSAndroid Build Coastguard Worker 
44*3ac0a46fSAndroid Build Coastguard Worker CJS_Object::~CJS_Object() = default;
45