OLD | NEW |
1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "fxjs/cfxjse_class.h" | 7 #include "fxjs/cfxjse_class.h" |
8 | 8 |
9 #include "fxjs/cfxjse_context.h" | 9 #include "fxjs/cfxjse_context.h" |
10 #include "fxjs/cfxjse_value.h" | 10 #include "fxjs/cfxjse_value.h" |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 } | 144 } |
145 | 145 |
146 void DynPropGetterAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass, | 146 void DynPropGetterAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass, |
147 CFXJSE_Value* pObject, | 147 CFXJSE_Value* pObject, |
148 const CFX_ByteStringC& szPropName, | 148 const CFX_ByteStringC& szPropName, |
149 CFXJSE_Value* pValue) { | 149 CFXJSE_Value* pValue) { |
150 ASSERT(lpClass); | 150 ASSERT(lpClass); |
151 int32_t nPropType = | 151 int32_t nPropType = |
152 lpClass->dynPropTypeGetter == nullptr | 152 lpClass->dynPropTypeGetter == nullptr |
153 ? FXJSE_ClassPropType_Property | 153 ? FXJSE_ClassPropType_Property |
154 : lpClass->dynPropTypeGetter(pObject, szPropName, FALSE); | 154 : lpClass->dynPropTypeGetter(pObject, szPropName, false); |
155 if (nPropType == FXJSE_ClassPropType_Property) { | 155 if (nPropType == FXJSE_ClassPropType_Property) { |
156 if (lpClass->dynPropGetter) | 156 if (lpClass->dynPropGetter) |
157 lpClass->dynPropGetter(pObject, szPropName, pValue); | 157 lpClass->dynPropGetter(pObject, szPropName, pValue); |
158 } else if (nPropType == FXJSE_ClassPropType_Method) { | 158 } else if (nPropType == FXJSE_ClassPropType_Method) { |
159 if (lpClass->dynMethodCall && pValue) { | 159 if (lpClass->dynMethodCall && pValue) { |
160 v8::Isolate* pIsolate = pValue->GetIsolate(); | 160 v8::Isolate* pIsolate = pValue->GetIsolate(); |
161 v8::HandleScope hscope(pIsolate); | 161 v8::HandleScope hscope(pIsolate); |
162 v8::Local<v8::ObjectTemplate> hCallBackInfoTemplate = | 162 v8::Local<v8::ObjectTemplate> hCallBackInfoTemplate = |
163 v8::ObjectTemplate::New(pIsolate); | 163 v8::ObjectTemplate::New(pIsolate); |
164 hCallBackInfoTemplate->SetInternalFieldCount(2); | 164 hCallBackInfoTemplate->SetInternalFieldCount(2); |
(...skipping 15 matching lines...) Expand all Loading... |
180 } | 180 } |
181 | 181 |
182 void DynPropSetterAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass, | 182 void DynPropSetterAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass, |
183 CFXJSE_Value* pObject, | 183 CFXJSE_Value* pObject, |
184 const CFX_ByteStringC& szPropName, | 184 const CFX_ByteStringC& szPropName, |
185 CFXJSE_Value* pValue) { | 185 CFXJSE_Value* pValue) { |
186 ASSERT(lpClass); | 186 ASSERT(lpClass); |
187 int32_t nPropType = | 187 int32_t nPropType = |
188 lpClass->dynPropTypeGetter == nullptr | 188 lpClass->dynPropTypeGetter == nullptr |
189 ? FXJSE_ClassPropType_Property | 189 ? FXJSE_ClassPropType_Property |
190 : lpClass->dynPropTypeGetter(pObject, szPropName, FALSE); | 190 : lpClass->dynPropTypeGetter(pObject, szPropName, false); |
191 if (nPropType != FXJSE_ClassPropType_Method) { | 191 if (nPropType != FXJSE_ClassPropType_Method) { |
192 if (lpClass->dynPropSetter) | 192 if (lpClass->dynPropSetter) |
193 lpClass->dynPropSetter(pObject, szPropName, pValue); | 193 lpClass->dynPropSetter(pObject, szPropName, pValue); |
194 } | 194 } |
195 } | 195 } |
196 | 196 |
197 FX_BOOL DynPropQueryAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass, | 197 bool DynPropQueryAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass, |
198 CFXJSE_Value* pObject, | 198 CFXJSE_Value* pObject, |
199 const CFX_ByteStringC& szPropName) { | 199 const CFX_ByteStringC& szPropName) { |
200 ASSERT(lpClass); | 200 ASSERT(lpClass); |
201 int32_t nPropType = | 201 int32_t nPropType = |
202 lpClass->dynPropTypeGetter == nullptr | 202 lpClass->dynPropTypeGetter == nullptr |
203 ? FXJSE_ClassPropType_Property | 203 ? FXJSE_ClassPropType_Property |
204 : lpClass->dynPropTypeGetter(pObject, szPropName, TRUE); | 204 : lpClass->dynPropTypeGetter(pObject, szPropName, true); |
205 return nPropType != FXJSE_ClassPropType_None; | 205 return nPropType != FXJSE_ClassPropType_None; |
206 } | 206 } |
207 | 207 |
208 FX_BOOL DynPropDeleterAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass, | 208 bool DynPropDeleterAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass, |
209 CFXJSE_Value* pObject, | 209 CFXJSE_Value* pObject, |
210 const CFX_ByteStringC& szPropName) { | 210 const CFX_ByteStringC& szPropName) { |
211 ASSERT(lpClass); | 211 ASSERT(lpClass); |
212 int32_t nPropType = | 212 int32_t nPropType = |
213 lpClass->dynPropTypeGetter == nullptr | 213 lpClass->dynPropTypeGetter == nullptr |
214 ? FXJSE_ClassPropType_Property | 214 ? FXJSE_ClassPropType_Property |
215 : lpClass->dynPropTypeGetter(pObject, szPropName, FALSE); | 215 : lpClass->dynPropTypeGetter(pObject, szPropName, false); |
216 if (nPropType != FXJSE_ClassPropType_Method) { | 216 if (nPropType != FXJSE_ClassPropType_Method) { |
217 if (lpClass->dynPropDeleter) | 217 if (lpClass->dynPropDeleter) |
218 return lpClass->dynPropDeleter(pObject, szPropName); | 218 return lpClass->dynPropDeleter(pObject, szPropName); |
219 return nPropType == FXJSE_ClassPropType_Property ? FALSE : TRUE; | 219 return nPropType != FXJSE_ClassPropType_Property; |
220 } | 220 } |
221 return FALSE; | 221 return false; |
222 } | 222 } |
223 | 223 |
224 void NamedPropertyQueryCallback( | 224 void NamedPropertyQueryCallback( |
225 v8::Local<v8::Name> property, | 225 v8::Local<v8::Name> property, |
226 const v8::PropertyCallbackInfo<v8::Integer>& info) { | 226 const v8::PropertyCallbackInfo<v8::Integer>& info) { |
227 v8::Local<v8::Object> thisObject = info.This(); | 227 v8::Local<v8::Object> thisObject = info.This(); |
228 const FXJSE_CLASS_DESCRIPTOR* lpClass = static_cast<FXJSE_CLASS_DESCRIPTOR*>( | 228 const FXJSE_CLASS_DESCRIPTOR* lpClass = static_cast<FXJSE_CLASS_DESCRIPTOR*>( |
229 info.Data().As<v8::External>()->Value()); | 229 info.Data().As<v8::External>()->Value()); |
230 v8::Isolate* pIsolate = info.GetIsolate(); | 230 v8::Isolate* pIsolate = info.GetIsolate(); |
231 v8::HandleScope scope(pIsolate); | 231 v8::HandleScope scope(pIsolate); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 } | 308 } |
309 info.GetReturnValue().Set(newArray); | 309 info.GetReturnValue().Set(newArray); |
310 } | 310 } |
311 | 311 |
312 } // namespace | 312 } // namespace |
313 | 313 |
314 // static | 314 // static |
315 CFXJSE_Class* CFXJSE_Class::Create( | 315 CFXJSE_Class* CFXJSE_Class::Create( |
316 CFXJSE_Context* lpContext, | 316 CFXJSE_Context* lpContext, |
317 const FXJSE_CLASS_DESCRIPTOR* lpClassDefinition, | 317 const FXJSE_CLASS_DESCRIPTOR* lpClassDefinition, |
318 FX_BOOL bIsJSGlobal) { | 318 bool bIsJSGlobal) { |
319 if (!lpContext || !lpClassDefinition) | 319 if (!lpContext || !lpClassDefinition) |
320 return nullptr; | 320 return nullptr; |
321 | 321 |
322 CFXJSE_Class* pClass = | 322 CFXJSE_Class* pClass = |
323 GetClassFromContext(lpContext, lpClassDefinition->name); | 323 GetClassFromContext(lpContext, lpClassDefinition->name); |
324 if (pClass) | 324 if (pClass) |
325 return pClass; | 325 return pClass; |
326 | 326 |
327 v8::Isolate* pIsolate = lpContext->m_pIsolate; | 327 v8::Isolate* pIsolate = lpContext->m_pIsolate; |
328 pClass = new CFXJSE_Class(lpContext); | 328 pClass = new CFXJSE_Class(lpContext); |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
425 v8::External::New(pIsolate, | 425 v8::External::New(pIsolate, |
426 const_cast<FXJSE_CLASS_DESCRIPTOR*>(lpClassDefinition)), | 426 const_cast<FXJSE_CLASS_DESCRIPTOR*>(lpClassDefinition)), |
427 v8::PropertyHandlerFlags::kNonMasking); | 427 v8::PropertyHandlerFlags::kNonMasking); |
428 hObjectTemplate->SetHandler(configuration); | 428 hObjectTemplate->SetHandler(configuration); |
429 } | 429 } |
430 | 430 |
431 CFXJSE_Class::CFXJSE_Class(CFXJSE_Context* lpContext) | 431 CFXJSE_Class::CFXJSE_Class(CFXJSE_Context* lpContext) |
432 : m_lpClassDefinition(nullptr), m_pContext(lpContext) {} | 432 : m_lpClassDefinition(nullptr), m_pContext(lpContext) {} |
433 | 433 |
434 CFXJSE_Class::~CFXJSE_Class() {} | 434 CFXJSE_Class::~CFXJSE_Class() {} |
OLD | NEW |