Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(372)

Side by Side Diff: xfa/fxjse/dynprop.cpp

Issue 2010013003: Rename FXJSE_CLASS to avoid confusion with CFXJSE_CLASS (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: rename member Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fxjse/context.cpp ('k') | xfa/fxjse/include/fxjse.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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* lpClass = static_cast<FXJSE_CLASS*>( 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 CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate()); 21 CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate());
22 lpThisValue->ForceSetValue(info.This()); 22 lpThisValue->ForceSetValue(info.This());
23 CFXJSE_Value* lpRetValue = CFXJSE_Value::Create(info.GetIsolate()); 23 CFXJSE_Value* lpRetValue = CFXJSE_Value::Create(info.GetIsolate());
24 CFXJSE_ArgumentsImpl impl = {&info, lpRetValue}; 24 CFXJSE_ArgumentsImpl impl = {&info, lpRetValue};
25 lpClass->dynMethodCall(lpThisValue, szFxPropName, 25 lpClass->dynMethodCall(lpThisValue, szFxPropName,
26 reinterpret_cast<CFXJSE_Arguments&>(impl)); 26 reinterpret_cast<CFXJSE_Arguments&>(impl));
27 if (!lpRetValue->DirectGetValue().IsEmpty()) { 27 if (!lpRetValue->DirectGetValue().IsEmpty()) {
28 info.GetReturnValue().Set(lpRetValue->DirectGetValue()); 28 info.GetReturnValue().Set(lpRetValue->DirectGetValue());
29 } 29 }
30 delete lpRetValue; 30 delete lpRetValue;
31 lpRetValue = nullptr; 31 lpRetValue = nullptr;
32 delete lpThisValue; 32 delete lpThisValue;
33 lpThisValue = nullptr; 33 lpThisValue = nullptr;
34 } 34 }
35 35
36 static void FXJSE_DynPropGetterAdapter(const FXJSE_CLASS* lpClass, 36 static void FXJSE_DynPropGetterAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass,
37 CFXJSE_Value* pObject, 37 CFXJSE_Value* pObject,
38 const CFX_ByteStringC& szPropName, 38 const CFX_ByteStringC& szPropName,
39 CFXJSE_Value* pValue) { 39 CFXJSE_Value* pValue) {
40 ASSERT(lpClass); 40 ASSERT(lpClass);
41 int32_t nPropType = 41 int32_t nPropType =
42 lpClass->dynPropTypeGetter == nullptr 42 lpClass->dynPropTypeGetter == nullptr
43 ? FXJSE_ClassPropType_Property 43 ? FXJSE_ClassPropType_Property
44 : lpClass->dynPropTypeGetter(pObject, szPropName, FALSE); 44 : lpClass->dynPropTypeGetter(pObject, szPropName, FALSE);
45 if (nPropType == FXJSE_ClassPropType_Property) { 45 if (nPropType == FXJSE_ClassPropType_Property) {
46 if (lpClass->dynPropGetter) { 46 if (lpClass->dynPropGetter) {
47 lpClass->dynPropGetter(pObject, szPropName, pValue); 47 lpClass->dynPropGetter(pObject, szPropName, pValue);
48 } 48 }
49 } else if (nPropType == FXJSE_ClassPropType_Method) { 49 } else if (nPropType == FXJSE_ClassPropType_Method) {
50 if (lpClass->dynMethodCall && pValue) { 50 if (lpClass->dynMethodCall && pValue) {
51 v8::Isolate* pIsolate = pValue->GetIsolate(); 51 v8::Isolate* pIsolate = pValue->GetIsolate();
52 v8::HandleScope hscope(pIsolate); 52 v8::HandleScope hscope(pIsolate);
53 v8::Local<v8::ObjectTemplate> hCallBackInfoTemplate = 53 v8::Local<v8::ObjectTemplate> hCallBackInfoTemplate =
54 v8::ObjectTemplate::New(pIsolate); 54 v8::ObjectTemplate::New(pIsolate);
55 hCallBackInfoTemplate->SetInternalFieldCount(2); 55 hCallBackInfoTemplate->SetInternalFieldCount(2);
56 v8::Local<v8::Object> hCallBackInfo = 56 v8::Local<v8::Object> hCallBackInfo =
57 hCallBackInfoTemplate->NewInstance(); 57 hCallBackInfoTemplate->NewInstance();
58 hCallBackInfo->SetAlignedPointerInInternalField( 58 hCallBackInfo->SetAlignedPointerInInternalField(
59 0, const_cast<FXJSE_CLASS*>(lpClass)); 59 0, const_cast<FXJSE_CLASS_DESCRIPTOR*>(lpClass));
60 hCallBackInfo->SetInternalField( 60 hCallBackInfo->SetInternalField(
61 1, v8::String::NewFromUtf8( 61 1, v8::String::NewFromUtf8(
62 pIsolate, reinterpret_cast<const char*>(szPropName.raw_str()), 62 pIsolate, reinterpret_cast<const char*>(szPropName.raw_str()),
63 v8::String::kNormalString, szPropName.GetLength())); 63 v8::String::kNormalString, szPropName.GetLength()));
64 pValue->ForceSetValue(v8::Function::New( 64 pValue->ForceSetValue(v8::Function::New(
65 pValue->GetIsolate(), FXJSE_DynPropGetterAdapter_MethodCallback, 65 pValue->GetIsolate(), FXJSE_DynPropGetterAdapter_MethodCallback,
66 hCallBackInfo)); 66 hCallBackInfo));
67 } 67 }
68 } 68 }
69 } 69 }
70 70
71 static void FXJSE_DynPropSetterAdapter(const FXJSE_CLASS* lpClass, 71 static void FXJSE_DynPropSetterAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass,
72 CFXJSE_Value* pObject, 72 CFXJSE_Value* pObject,
73 const CFX_ByteStringC& szPropName, 73 const CFX_ByteStringC& szPropName,
74 CFXJSE_Value* pValue) { 74 CFXJSE_Value* pValue) {
75 ASSERT(lpClass); 75 ASSERT(lpClass);
76 int32_t nPropType = 76 int32_t nPropType =
77 lpClass->dynPropTypeGetter == nullptr 77 lpClass->dynPropTypeGetter == nullptr
78 ? FXJSE_ClassPropType_Property 78 ? FXJSE_ClassPropType_Property
79 : lpClass->dynPropTypeGetter(pObject, szPropName, FALSE); 79 : lpClass->dynPropTypeGetter(pObject, szPropName, FALSE);
80 if (nPropType != FXJSE_ClassPropType_Method) { 80 if (nPropType != FXJSE_ClassPropType_Method) {
81 if (lpClass->dynPropSetter) { 81 if (lpClass->dynPropSetter) {
82 lpClass->dynPropSetter(pObject, szPropName, pValue); 82 lpClass->dynPropSetter(pObject, szPropName, pValue);
83 } 83 }
84 } 84 }
85 } 85 }
86 86
87 static FX_BOOL FXJSE_DynPropQueryAdapter(const FXJSE_CLASS* lpClass, 87 static FX_BOOL FXJSE_DynPropQueryAdapter(const FXJSE_CLASS_DESCRIPTOR* lpClass,
88 CFXJSE_Value* pObject, 88 CFXJSE_Value* pObject,
89 const CFX_ByteStringC& szPropName) { 89 const CFX_ByteStringC& szPropName) {
90 ASSERT(lpClass); 90 ASSERT(lpClass);
91 int32_t nPropType = 91 int32_t nPropType =
92 lpClass->dynPropTypeGetter == nullptr 92 lpClass->dynPropTypeGetter == nullptr
93 ? FXJSE_ClassPropType_Property 93 ? FXJSE_ClassPropType_Property
94 : lpClass->dynPropTypeGetter(pObject, szPropName, TRUE); 94 : lpClass->dynPropTypeGetter(pObject, szPropName, TRUE);
95 return nPropType != FXJSE_ClassPropType_None; 95 return nPropType != FXJSE_ClassPropType_None;
96 } 96 }
97 97
98 static FX_BOOL FXJSE_DynPropDeleterAdapter(const FXJSE_CLASS* lpClass, 98 static FX_BOOL FXJSE_DynPropDeleterAdapter(
99 CFXJSE_Value* pObject, 99 const FXJSE_CLASS_DESCRIPTOR* lpClass,
100 const CFX_ByteStringC& szPropName) { 100 CFXJSE_Value* pObject,
101 const CFX_ByteStringC& szPropName) {
101 ASSERT(lpClass); 102 ASSERT(lpClass);
102 int32_t nPropType = 103 int32_t nPropType =
103 lpClass->dynPropTypeGetter == nullptr 104 lpClass->dynPropTypeGetter == nullptr
104 ? FXJSE_ClassPropType_Property 105 ? FXJSE_ClassPropType_Property
105 : lpClass->dynPropTypeGetter(pObject, szPropName, FALSE); 106 : lpClass->dynPropTypeGetter(pObject, szPropName, FALSE);
106 if (nPropType != FXJSE_ClassPropType_Method) { 107 if (nPropType != FXJSE_ClassPropType_Method) {
107 if (lpClass->dynPropDeleter) { 108 if (lpClass->dynPropDeleter) {
108 return lpClass->dynPropDeleter(pObject, szPropName); 109 return lpClass->dynPropDeleter(pObject, szPropName);
109 } else { 110 } else {
110 return nPropType == FXJSE_ClassPropType_Property ? FALSE : TRUE; 111 return nPropType == FXJSE_ClassPropType_Property ? FALSE : TRUE;
111 } 112 }
112 } 113 }
113 return FALSE; 114 return FALSE;
114 } 115 }
115 116
116 static void FXJSE_V8_GenericNamedPropertyQueryCallback( 117 static void FXJSE_V8_GenericNamedPropertyQueryCallback(
117 v8::Local<v8::Name> property, 118 v8::Local<v8::Name> property,
118 const v8::PropertyCallbackInfo<v8::Integer>& info) { 119 const v8::PropertyCallbackInfo<v8::Integer>& info) {
119 v8::Local<v8::Object> thisObject = info.This(); 120 v8::Local<v8::Object> thisObject = info.This();
120 const FXJSE_CLASS* lpClass = 121 const FXJSE_CLASS_DESCRIPTOR* lpClass = static_cast<FXJSE_CLASS_DESCRIPTOR*>(
121 static_cast<FXJSE_CLASS*>(info.Data().As<v8::External>()->Value()); 122 info.Data().As<v8::External>()->Value());
122 v8::Isolate* pIsolate = info.GetIsolate(); 123 v8::Isolate* pIsolate = info.GetIsolate();
123 v8::HandleScope scope(pIsolate); 124 v8::HandleScope scope(pIsolate);
124 v8::String::Utf8Value szPropName(property); 125 v8::String::Utf8Value szPropName(property);
125 CFX_ByteStringC szFxPropName(*szPropName, szPropName.length()); 126 CFX_ByteStringC szFxPropName(*szPropName, szPropName.length());
126 CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate()); 127 CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate());
127 lpThisValue->ForceSetValue(thisObject); 128 lpThisValue->ForceSetValue(thisObject);
128 if (FXJSE_DynPropQueryAdapter(lpClass, lpThisValue, szFxPropName)) { 129 if (FXJSE_DynPropQueryAdapter(lpClass, lpThisValue, szFxPropName)) {
129 info.GetReturnValue().Set(v8::DontDelete); 130 info.GetReturnValue().Set(v8::DontDelete);
130 } else { 131 } else {
131 const int32_t iV8Absent = 64; 132 const int32_t iV8Absent = 64;
132 info.GetReturnValue().Set(iV8Absent); 133 info.GetReturnValue().Set(iV8Absent);
133 } 134 }
134 delete lpThisValue; 135 delete lpThisValue;
135 lpThisValue = nullptr; 136 lpThisValue = nullptr;
136 } 137 }
137 138
138 static void FXJSE_V8_GenericNamedPropertyDeleterCallback( 139 static void FXJSE_V8_GenericNamedPropertyDeleterCallback(
139 v8::Local<v8::Name> property, 140 v8::Local<v8::Name> property,
140 const v8::PropertyCallbackInfo<v8::Boolean>& info) { 141 const v8::PropertyCallbackInfo<v8::Boolean>& info) {
141 v8::Local<v8::Object> thisObject = info.This(); 142 v8::Local<v8::Object> thisObject = info.This();
142 const FXJSE_CLASS* lpClass = 143 const FXJSE_CLASS_DESCRIPTOR* lpClass = static_cast<FXJSE_CLASS_DESCRIPTOR*>(
143 static_cast<FXJSE_CLASS*>(info.Data().As<v8::External>()->Value()); 144 info.Data().As<v8::External>()->Value());
144 v8::Isolate* pIsolate = info.GetIsolate(); 145 v8::Isolate* pIsolate = info.GetIsolate();
145 v8::HandleScope scope(pIsolate); 146 v8::HandleScope scope(pIsolate);
146 v8::String::Utf8Value szPropName(property); 147 v8::String::Utf8Value szPropName(property);
147 CFX_ByteStringC szFxPropName(*szPropName, szPropName.length()); 148 CFX_ByteStringC szFxPropName(*szPropName, szPropName.length());
148 CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate()); 149 CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate());
149 lpThisValue->ForceSetValue(thisObject); 150 lpThisValue->ForceSetValue(thisObject);
150 info.GetReturnValue().Set( 151 info.GetReturnValue().Set(
151 !!FXJSE_DynPropDeleterAdapter(lpClass, lpThisValue, szFxPropName)); 152 !!FXJSE_DynPropDeleterAdapter(lpClass, lpThisValue, szFxPropName));
152 delete lpThisValue; 153 delete lpThisValue;
153 lpThisValue = nullptr; 154 lpThisValue = nullptr;
154 } 155 }
155 156
156 static void FXJSE_V8_GenericNamedPropertyGetterCallback( 157 static void FXJSE_V8_GenericNamedPropertyGetterCallback(
157 v8::Local<v8::Name> property, 158 v8::Local<v8::Name> property,
158 const v8::PropertyCallbackInfo<v8::Value>& info) { 159 const v8::PropertyCallbackInfo<v8::Value>& info) {
159 v8::Local<v8::Object> thisObject = info.This(); 160 v8::Local<v8::Object> thisObject = info.This();
160 const FXJSE_CLASS* lpClass = 161 const FXJSE_CLASS_DESCRIPTOR* lpClass = static_cast<FXJSE_CLASS_DESCRIPTOR*>(
161 static_cast<FXJSE_CLASS*>(info.Data().As<v8::External>()->Value()); 162 info.Data().As<v8::External>()->Value());
162 v8::String::Utf8Value szPropName(property); 163 v8::String::Utf8Value szPropName(property);
163 CFX_ByteStringC szFxPropName(*szPropName, szPropName.length()); 164 CFX_ByteStringC szFxPropName(*szPropName, szPropName.length());
164 CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate()); 165 CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate());
165 lpThisValue->ForceSetValue(thisObject); 166 lpThisValue->ForceSetValue(thisObject);
166 CFXJSE_Value* lpNewValue = CFXJSE_Value::Create(info.GetIsolate()); 167 CFXJSE_Value* lpNewValue = CFXJSE_Value::Create(info.GetIsolate());
167 FXJSE_DynPropGetterAdapter(lpClass, lpThisValue, szFxPropName, lpNewValue); 168 FXJSE_DynPropGetterAdapter(lpClass, lpThisValue, szFxPropName, lpNewValue);
168 info.GetReturnValue().Set(lpNewValue->DirectGetValue()); 169 info.GetReturnValue().Set(lpNewValue->DirectGetValue());
169 delete lpThisValue; 170 delete lpThisValue;
170 lpThisValue = nullptr; 171 lpThisValue = nullptr;
171 } 172 }
172 173
173 static void FXJSE_V8_GenericNamedPropertySetterCallback( 174 static void FXJSE_V8_GenericNamedPropertySetterCallback(
174 v8::Local<v8::Name> property, 175 v8::Local<v8::Name> property,
175 v8::Local<v8::Value> value, 176 v8::Local<v8::Value> value,
176 const v8::PropertyCallbackInfo<v8::Value>& info) { 177 const v8::PropertyCallbackInfo<v8::Value>& info) {
177 v8::Local<v8::Object> thisObject = info.This(); 178 v8::Local<v8::Object> thisObject = info.This();
178 const FXJSE_CLASS* lpClass = 179 const FXJSE_CLASS_DESCRIPTOR* lpClass = static_cast<FXJSE_CLASS_DESCRIPTOR*>(
179 static_cast<FXJSE_CLASS*>(info.Data().As<v8::External>()->Value()); 180 info.Data().As<v8::External>()->Value());
180 v8::String::Utf8Value szPropName(property); 181 v8::String::Utf8Value szPropName(property);
181 CFX_ByteStringC szFxPropName(*szPropName, szPropName.length()); 182 CFX_ByteStringC szFxPropName(*szPropName, szPropName.length());
182 CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate()); 183 CFXJSE_Value* lpThisValue = CFXJSE_Value::Create(info.GetIsolate());
183 lpThisValue->ForceSetValue(thisObject); 184 lpThisValue->ForceSetValue(thisObject);
184 CFXJSE_Value* lpNewValue = CFXJSE_Value::Create(info.GetIsolate()); 185 CFXJSE_Value* lpNewValue = CFXJSE_Value::Create(info.GetIsolate());
185 lpNewValue->ForceSetValue(value); 186 lpNewValue->ForceSetValue(value);
186 FXJSE_DynPropSetterAdapter(lpClass, lpThisValue, szFxPropName, lpNewValue); 187 FXJSE_DynPropSetterAdapter(lpClass, lpThisValue, szFxPropName, lpNewValue);
187 info.GetReturnValue().Set(value); 188 info.GetReturnValue().Set(value);
188 delete lpThisValue; 189 delete lpThisValue;
189 lpThisValue = nullptr; 190 lpThisValue = nullptr;
190 } 191 }
191 192
192 static void FXJSE_V8_GenericNamedPropertyEnumeratorCallback( 193 static void FXJSE_V8_GenericNamedPropertyEnumeratorCallback(
193 const v8::PropertyCallbackInfo<v8::Array>& info) { 194 const v8::PropertyCallbackInfo<v8::Array>& info) {
194 const FXJSE_CLASS* lpClass = 195 const FXJSE_CLASS_DESCRIPTOR* lpClass = static_cast<FXJSE_CLASS_DESCRIPTOR*>(
195 static_cast<FXJSE_CLASS*>(info.Data().As<v8::External>()->Value()); 196 info.Data().As<v8::External>()->Value());
196 v8::Isolate* pIsolate = info.GetIsolate(); 197 v8::Isolate* pIsolate = info.GetIsolate();
197 v8::Local<v8::Array> newArray = v8::Array::New(pIsolate, lpClass->propNum); 198 v8::Local<v8::Array> newArray = v8::Array::New(pIsolate, lpClass->propNum);
198 for (int i = 0; i < lpClass->propNum; i++) { 199 for (int i = 0; i < lpClass->propNum; i++) {
199 newArray->Set( 200 newArray->Set(
200 i, v8::String::NewFromUtf8(pIsolate, lpClass->properties[i].name)); 201 i, v8::String::NewFromUtf8(pIsolate, lpClass->properties[i].name));
201 } 202 }
202 info.GetReturnValue().Set(newArray); 203 info.GetReturnValue().Set(newArray);
203 } 204 }
204 205
205 void CFXJSE_Class::SetUpNamedPropHandler( 206 void CFXJSE_Class::SetUpNamedPropHandler(
206 v8::Isolate* pIsolate, 207 v8::Isolate* pIsolate,
207 v8::Local<v8::ObjectTemplate>& hObjectTemplate, 208 v8::Local<v8::ObjectTemplate>& hObjectTemplate,
208 const FXJSE_CLASS* lpClassDefinition) { 209 const FXJSE_CLASS_DESCRIPTOR* lpClassDefinition) {
209 v8::NamedPropertyHandlerConfiguration configuration( 210 v8::NamedPropertyHandlerConfiguration configuration(
210 lpClassDefinition->dynPropGetter 211 lpClassDefinition->dynPropGetter
211 ? FXJSE_V8_GenericNamedPropertyGetterCallback 212 ? FXJSE_V8_GenericNamedPropertyGetterCallback
212 : 0, 213 : 0,
213 lpClassDefinition->dynPropSetter 214 lpClassDefinition->dynPropSetter
214 ? FXJSE_V8_GenericNamedPropertySetterCallback 215 ? FXJSE_V8_GenericNamedPropertySetterCallback
215 : 0, 216 : 0,
216 lpClassDefinition->dynPropTypeGetter 217 lpClassDefinition->dynPropTypeGetter
217 ? FXJSE_V8_GenericNamedPropertyQueryCallback 218 ? FXJSE_V8_GenericNamedPropertyQueryCallback
218 : 0, 219 : 0,
219 lpClassDefinition->dynPropDeleter 220 lpClassDefinition->dynPropDeleter
220 ? FXJSE_V8_GenericNamedPropertyDeleterCallback 221 ? FXJSE_V8_GenericNamedPropertyDeleterCallback
221 : 0, 222 : 0,
222 FXJSE_V8_GenericNamedPropertyEnumeratorCallback, 223 FXJSE_V8_GenericNamedPropertyEnumeratorCallback,
223 v8::External::New(pIsolate, const_cast<FXJSE_CLASS*>(lpClassDefinition)), 224 v8::External::New(pIsolate,
225 const_cast<FXJSE_CLASS_DESCRIPTOR*>(lpClassDefinition)),
224 v8::PropertyHandlerFlags::kNonMasking); 226 v8::PropertyHandlerFlags::kNonMasking);
225 hObjectTemplate->SetHandler(configuration); 227 hObjectTemplate->SetHandler(configuration);
226 } 228 }
OLDNEW
« no previous file with comments | « xfa/fxjse/context.cpp ('k') | xfa/fxjse/include/fxjse.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698