| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 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 "xfa/fxjse/cfxjse_arguments.h" | 7 #include "xfa/fxjse/cfxjse_arguments.h" |
| 8 #include "xfa/fxjse/class.h" | 8 #include "xfa/fxjse/class.h" |
| 9 #include "xfa/fxjse/value.h" | 9 #include "xfa/fxjse/value.h" |
| 10 | 10 |
| 11 static void FXJSE_DynPropGetterAdapter_MethodCallback( | 11 static void FXJSE_DynPropGetterAdapter_MethodCallback( |
| 12 const v8::FunctionCallbackInfo<v8::Value>& info) { | 12 const v8::FunctionCallbackInfo<v8::Value>& info) { |
| 13 v8::Local<v8::Object> hCallBackInfo = info.Data().As<v8::Object>(); | 13 v8::Local<v8::Object> hCallBackInfo = info.Data().As<v8::Object>(); |
| 14 FXJSE_CLASS_DESCRIPTOR* lpClass = static_cast<FXJSE_CLASS_DESCRIPTOR*>( | 14 FXJSE_CLASS_DESCRIPTOR* lpClass = static_cast<FXJSE_CLASS_DESCRIPTOR*>( |
| 15 hCallBackInfo->GetAlignedPointerFromInternalField(0)); | 15 hCallBackInfo->GetAlignedPointerFromInternalField(0)); |
| 16 v8::Local<v8::String> hPropName = | 16 v8::Local<v8::String> hPropName = |
| 17 hCallBackInfo->GetInternalField(1).As<v8::String>(); | 17 hCallBackInfo->GetInternalField(1).As<v8::String>(); |
| 18 ASSERT(lpClass && !hPropName.IsEmpty()); | 18 ASSERT(lpClass && !hPropName.IsEmpty()); |
| 19 v8::String::Utf8Value szPropName(hPropName); | 19 v8::String::Utf8Value szPropName(hPropName); |
| 20 CFX_ByteStringC szFxPropName = *szPropName; | 20 CFX_ByteStringC szFxPropName = *szPropName; |
| 21 std::unique_ptr<CFXJSE_Value> lpThisValue( | 21 std::unique_ptr<CFXJSE_Value> lpThisValue( |
| 22 new CFXJSE_Value(info.GetIsolate())); | 22 new CFXJSE_Value(info.GetIsolate())); |
| 23 lpThisValue->ForceSetValue(info.This()); | 23 lpThisValue->ForceSetValue(info.This()); |
| 24 std::unique_ptr<CFXJSE_Value> lpRetValue(new CFXJSE_Value(info.GetIsolate())); | 24 std::unique_ptr<CFXJSE_Value> lpRetValue(new CFXJSE_Value(info.GetIsolate())); |
| 25 CFXJSE_ArgumentsImpl impl = {&info, lpRetValue.get()}; | 25 CFXJSE_Arguments impl(&info, lpRetValue.get()); |
| 26 lpClass->dynMethodCall(lpThisValue.get(), szFxPropName, | 26 lpClass->dynMethodCall(lpThisValue.get(), szFxPropName, impl); |
| 27 reinterpret_cast<CFXJSE_Arguments&>(impl)); | |
| 28 if (!lpRetValue->DirectGetValue().IsEmpty()) { | 27 if (!lpRetValue->DirectGetValue().IsEmpty()) { |
| 29 info.GetReturnValue().Set(lpRetValue->DirectGetValue()); | 28 info.GetReturnValue().Set(lpRetValue->DirectGetValue()); |
| 30 } | 29 } |
| 31 } | 30 } |
| 32 | 31 |
| 33 static void FXJSE_DynPropGetterAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass, | 32 static void FXJSE_DynPropGetterAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass, |
| 34 CFXJSE_Value* pObject, | 33 CFXJSE_Value* pObject, |
| 35 const CFX_ByteStringC& szPropName, | 34 const CFX_ByteStringC& szPropName, |
| 36 CFXJSE_Value* pValue) { | 35 CFXJSE_Value* pValue) { |
| 37 ASSERT(lpClass); | 36 ASSERT(lpClass); |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 : 0, | 214 : 0, |
| 216 lpClassDefinition->dynPropDeleter | 215 lpClassDefinition->dynPropDeleter |
| 217 ? FXJSE_V8_GenericNamedPropertyDeleterCallback | 216 ? FXJSE_V8_GenericNamedPropertyDeleterCallback |
| 218 : 0, | 217 : 0, |
| 219 FXJSE_V8_GenericNamedPropertyEnumeratorCallback, | 218 FXJSE_V8_GenericNamedPropertyEnumeratorCallback, |
| 220 v8::External::New(pIsolate, | 219 v8::External::New(pIsolate, |
| 221 const_cast<FXJSE_CLASS_DESCRIPTOR*>(lpClassDefinition)), | 220 const_cast<FXJSE_CLASS_DESCRIPTOR*>(lpClassDefinition)), |
| 222 v8::PropertyHandlerFlags::kNonMasking); | 221 v8::PropertyHandlerFlags::kNonMasking); |
| 223 hObjectTemplate->SetHandler(configuration); | 222 hObjectTemplate->SetHandler(configuration); |
| 224 } | 223 } |
| OLD | NEW |