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

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

Issue 2012253002: Remove FXJSE_HOBJECT and FXJSE_HVALUE for CFXJSE_Value* (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@fxjse_hclass
Patch Set: Created 4 years, 7 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/value.h ('k') | no next file » | 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/value.h" 7 #include "xfa/fxjse/value.h"
8 8
9 #include <math.h> 9 #include <math.h>
10 10
11 #include "xfa/fxjse/class.h" 11 #include "xfa/fxjse/class.h"
12 #include "xfa/fxjse/util_inline.h" 12 #include "xfa/fxjse/util_inline.h"
13 13
14 FX_BOOL FXJSE_Value_IsUndefined(FXJSE_HVALUE hValue) { 14 FX_BOOL FXJSE_Value_IsUndefined(CFXJSE_Value* pValue) {
15 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 15 return pValue && pValue->IsUndefined();
16 return lpValue && lpValue->IsUndefined();
17 } 16 }
18 17
19 FX_BOOL FXJSE_Value_IsNull(FXJSE_HVALUE hValue) { 18 FX_BOOL FXJSE_Value_IsNull(CFXJSE_Value* pValue) {
20 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 19 return pValue && pValue->IsNull();
21 return lpValue && lpValue->IsNull();
22 } 20 }
23 21
24 FX_BOOL FXJSE_Value_IsBoolean(FXJSE_HVALUE hValue) { 22 FX_BOOL FXJSE_Value_IsBoolean(CFXJSE_Value* pValue) {
25 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 23 return pValue && pValue->IsBoolean();
26 return lpValue && lpValue->IsBoolean();
27 } 24 }
28 25
29 FX_BOOL FXJSE_Value_IsUTF8String(FXJSE_HVALUE hValue) { 26 FX_BOOL FXJSE_Value_IsUTF8String(CFXJSE_Value* pValue) {
30 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 27 return pValue && pValue->IsString();
31 return lpValue && lpValue->IsString();
32 } 28 }
33 29
34 FX_BOOL FXJSE_Value_IsNumber(FXJSE_HVALUE hValue) { 30 FX_BOOL FXJSE_Value_IsNumber(CFXJSE_Value* pValue) {
35 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 31 return pValue && pValue->IsNumber();
36 return lpValue && lpValue->IsNumber();
37 } 32 }
38 33
39 FX_BOOL FXJSE_Value_IsObject(FXJSE_HVALUE hValue) { 34 FX_BOOL FXJSE_Value_IsObject(CFXJSE_Value* pValue) {
40 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 35 return pValue && pValue->IsObject();
41 return lpValue && lpValue->IsObject();
42 } 36 }
43 37
44 FX_BOOL FXJSE_Value_IsArray(FXJSE_HVALUE hValue) { 38 FX_BOOL FXJSE_Value_IsArray(CFXJSE_Value* pValue) {
45 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 39 return pValue && pValue->IsArray();
46 return lpValue && lpValue->IsArray();
47 } 40 }
48 41
49 FX_BOOL FXJSE_Value_IsFunction(FXJSE_HVALUE hValue) { 42 FX_BOOL FXJSE_Value_IsFunction(CFXJSE_Value* pValue) {
50 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 43 return pValue && pValue->IsFunction();
51 return lpValue && lpValue->IsFunction();
52 } 44 }
53 45
54 FX_BOOL FXJSE_Value_ToBoolean(FXJSE_HVALUE hValue) { 46 FX_BOOL FXJSE_Value_ToBoolean(CFXJSE_Value* pValue) {
55 return reinterpret_cast<CFXJSE_Value*>(hValue)->ToBoolean(); 47 return pValue->ToBoolean();
56 } 48 }
57 49
58 FX_FLOAT FXJSE_Value_ToFloat(FXJSE_HVALUE hValue) { 50 FX_FLOAT FXJSE_Value_ToFloat(CFXJSE_Value* pValue) {
59 return reinterpret_cast<CFXJSE_Value*>(hValue)->ToFloat(); 51 return pValue->ToFloat();
60 } 52 }
61 53
62 double FXJSE_Value_ToDouble(FXJSE_HVALUE hValue) { 54 double FXJSE_Value_ToDouble(CFXJSE_Value* pValue) {
63 return reinterpret_cast<CFXJSE_Value*>(hValue)->ToDouble(); 55 return pValue->ToDouble();
64 } 56 }
65 57
66 void FXJSE_Value_ToUTF8String(FXJSE_HVALUE hValue, 58 void FXJSE_Value_ToUTF8String(CFXJSE_Value* pValue,
67 CFX_ByteString& szStrOutput) { 59 CFX_ByteString& szStrOutput) {
68 return reinterpret_cast<CFXJSE_Value*>(hValue)->ToString(szStrOutput); 60 pValue->ToString(szStrOutput);
69 } 61 }
70 62
71 int32_t FXJSE_Value_ToInteger(FXJSE_HVALUE hValue) { 63 int32_t FXJSE_Value_ToInteger(CFXJSE_Value* pValue) {
72 return reinterpret_cast<CFXJSE_Value*>(hValue)->ToInteger(); 64 return pValue->ToInteger();
73 } 65 }
74 66
75 void* FXJSE_Value_ToObject(FXJSE_HVALUE hValue, CFXJSE_Class* pClass) { 67 void* FXJSE_Value_ToObject(CFXJSE_Value* pValue, CFXJSE_Class* pClass) {
76 return reinterpret_cast<CFXJSE_Value*>(hValue)->ToObject(pClass); 68 return pValue->ToObject(pClass);
77 } 69 }
78 70
79 void FXJSE_Value_SetUndefined(FXJSE_HVALUE hValue) { 71 void FXJSE_Value_SetUndefined(CFXJSE_Value* pValue) {
80 reinterpret_cast<CFXJSE_Value*>(hValue)->SetUndefined(); 72 pValue->SetUndefined();
81 } 73 }
82 74
83 void FXJSE_Value_SetNull(FXJSE_HVALUE hValue) { 75 void FXJSE_Value_SetNull(CFXJSE_Value* pValue) {
84 reinterpret_cast<CFXJSE_Value*>(hValue)->SetNull(); 76 pValue->SetNull();
85 } 77 }
86 78
87 void FXJSE_Value_SetBoolean(FXJSE_HVALUE hValue, FX_BOOL bBoolean) { 79 void FXJSE_Value_SetBoolean(CFXJSE_Value* pValue, FX_BOOL bBoolean) {
88 reinterpret_cast<CFXJSE_Value*>(hValue)->SetBoolean(bBoolean); 80 pValue->SetBoolean(bBoolean);
89 } 81 }
90 82
91 void FXJSE_Value_SetUTF8String(FXJSE_HVALUE hValue, 83 void FXJSE_Value_SetUTF8String(CFXJSE_Value* pValue,
92 const CFX_ByteStringC& szString) { 84 const CFX_ByteStringC& szString) {
93 reinterpret_cast<CFXJSE_Value*>(hValue)->SetString(szString); 85 pValue->SetString(szString);
94 } 86 }
95 87
96 void FXJSE_Value_SetInteger(FXJSE_HVALUE hValue, int32_t nInteger) { 88 void FXJSE_Value_SetInteger(CFXJSE_Value* pValue, int32_t nInteger) {
97 reinterpret_cast<CFXJSE_Value*>(hValue)->SetInteger(nInteger); 89 pValue->SetInteger(nInteger);
98 } 90 }
99 91
100 void FXJSE_Value_SetFloat(FXJSE_HVALUE hValue, FX_FLOAT fFloat) { 92 void FXJSE_Value_SetFloat(CFXJSE_Value* pValue, FX_FLOAT fFloat) {
101 reinterpret_cast<CFXJSE_Value*>(hValue)->SetFloat(fFloat); 93 pValue->SetFloat(fFloat);
102 } 94 }
103 95
104 void FXJSE_Value_SetDouble(FXJSE_HVALUE hValue, double dDouble) { 96 void FXJSE_Value_SetDouble(CFXJSE_Value* pValue, double dDouble) {
105 reinterpret_cast<CFXJSE_Value*>(hValue)->SetDouble(dDouble); 97 pValue->SetDouble(dDouble);
106 } 98 }
107 99
108 void FXJSE_Value_SetObject(FXJSE_HVALUE hValue, 100 void FXJSE_Value_SetObject(CFXJSE_Value* pValue,
109 void* lpObject, 101 void* lpObject,
110 CFXJSE_Class* pClass) { 102 CFXJSE_Class* pClass) {
111 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue);
112 if (!pClass) { 103 if (!pClass) {
113 ASSERT(!lpObject); 104 ASSERT(!lpObject);
114 lpValue->SetJSObject(); 105 pValue->SetJSObject();
115 } else { 106 } else {
116 lpValue->SetHostObject(lpObject, pClass); 107 pValue->SetHostObject(lpObject, pClass);
117 } 108 }
118 } 109 }
119 110
120 void FXJSE_Value_SetArray(FXJSE_HVALUE hValue, 111 void FXJSE_Value_SetArray(CFXJSE_Value* pValue,
121 uint32_t uValueCount, 112 uint32_t uValueCount,
122 FXJSE_HVALUE* rgValues) { 113 CFXJSE_Value** rgValues) {
123 reinterpret_cast<CFXJSE_Value*>(hValue) 114 pValue->SetArray(uValueCount, rgValues);
124 ->SetArray(uValueCount, reinterpret_cast<CFXJSE_Value**>(rgValues));
125 } 115 }
126 116
127 void FXJSE_Value_Set(FXJSE_HVALUE hValue, FXJSE_HVALUE hOriginalValue) { 117 void FXJSE_Value_Set(CFXJSE_Value* pValue, CFXJSE_Value* pOriginalValue) {
128 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 118 ASSERT(pOriginalValue);
129 CFXJSE_Value* lpOriginalValue = 119 pValue->Assign(pOriginalValue);
130 reinterpret_cast<CFXJSE_Value*>(hOriginalValue);
131 ASSERT(lpValue && lpOriginalValue);
132 lpValue->Assign(lpOriginalValue);
133 } 120 }
134 121
135 FX_BOOL FXJSE_Value_GetObjectProp(FXJSE_HVALUE hValue, 122 FX_BOOL FXJSE_Value_GetObjectProp(CFXJSE_Value* pValue,
136 const CFX_ByteStringC& szPropName, 123 const CFX_ByteStringC& szPropName,
137 FXJSE_HVALUE hPropValue) { 124 CFXJSE_Value* pPropValue) {
138 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 125 ASSERT(pPropValue);
139 CFXJSE_Value* lpPropValue = reinterpret_cast<CFXJSE_Value*>(hPropValue); 126 return pValue->GetObjectProperty(szPropName, pPropValue);
140 ASSERT(lpValue && lpPropValue);
141 return lpValue->GetObjectProperty(szPropName, lpPropValue);
142 } 127 }
143 128
144 FX_BOOL FXJSE_Value_SetObjectProp(FXJSE_HVALUE hValue, 129 FX_BOOL FXJSE_Value_SetObjectProp(CFXJSE_Value* pValue,
145 const CFX_ByteStringC& szPropName, 130 const CFX_ByteStringC& szPropName,
146 FXJSE_HVALUE hPropValue) { 131 CFXJSE_Value* pPropValue) {
147 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 132 ASSERT(pPropValue);
148 CFXJSE_Value* lpPropValue = reinterpret_cast<CFXJSE_Value*>(hPropValue); 133 return pValue->SetObjectProperty(szPropName, pPropValue);
149 ASSERT(lpValue && lpPropValue);
150 return lpValue->SetObjectProperty(szPropName, lpPropValue);
151 } 134 }
152 135
153 FX_BOOL FXJSE_Value_GetObjectPropByIdx(FXJSE_HVALUE hValue, 136 FX_BOOL FXJSE_Value_GetObjectPropByIdx(CFXJSE_Value* pValue,
154 uint32_t uPropIdx, 137 uint32_t uPropIdx,
155 FXJSE_HVALUE hPropValue) { 138 CFXJSE_Value* pPropValue) {
156 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 139 ASSERT(pPropValue);
157 CFXJSE_Value* lpPropValue = reinterpret_cast<CFXJSE_Value*>(hPropValue); 140 return pValue->GetObjectProperty(uPropIdx, pPropValue);
158 ASSERT(lpValue && lpPropValue);
159 return lpValue->GetObjectProperty(uPropIdx, lpPropValue);
160 } 141 }
161 142
162 FX_BOOL FXJSE_Value_DeleteObjectProp(FXJSE_HVALUE hValue, 143 FX_BOOL FXJSE_Value_DeleteObjectProp(CFXJSE_Value* pValue,
163 const CFX_ByteStringC& szPropName) { 144 const CFX_ByteStringC& szPropName) {
164 return reinterpret_cast<CFXJSE_Value*>(hValue) 145 return pValue->DeleteObjectProperty(szPropName);
165 ->DeleteObjectProperty(szPropName);
166 } 146 }
167 147
168 FX_BOOL FXJSE_Value_ObjectHasOwnProp(FXJSE_HVALUE hValue, 148 FX_BOOL FXJSE_Value_ObjectHasOwnProp(CFXJSE_Value* pValue,
169 const CFX_ByteStringC& szPropName, 149 const CFX_ByteStringC& szPropName,
170 FX_BOOL bUseTypeGetter) { 150 FX_BOOL bUseTypeGetter) {
171 return reinterpret_cast<CFXJSE_Value*>(hValue) 151 return pValue->HasObjectOwnProperty(szPropName, bUseTypeGetter);
172 ->HasObjectOwnProperty(szPropName, bUseTypeGetter);
173 } 152 }
174 153
175 FX_BOOL FXJSE_Value_SetObjectOwnProp(FXJSE_HVALUE hValue, 154 FX_BOOL FXJSE_Value_SetObjectOwnProp(CFXJSE_Value* pValue,
176 const CFX_ByteStringC& szPropName, 155 const CFX_ByteStringC& szPropName,
177 FXJSE_HVALUE hPropValue) { 156 CFXJSE_Value* pPropValue) {
178 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 157 ASSERT(pPropValue);
179 CFXJSE_Value* lpPropValue = reinterpret_cast<CFXJSE_Value*>(hPropValue); 158 return pValue->SetObjectOwnProperty(szPropName, pPropValue);
180 ASSERT(lpValue && lpPropValue);
181 return lpValue->SetObjectOwnProperty(szPropName, lpPropValue);
182 } 159 }
183 160
184 FX_BOOL FXJSE_Value_SetFunctionBind(FXJSE_HVALUE hValue, 161 FX_BOOL FXJSE_Value_SetFunctionBind(CFXJSE_Value* pValue,
185 FXJSE_HVALUE hOldFunction, 162 CFXJSE_Value* pOldFunction,
186 FXJSE_HVALUE hNewThis) { 163 CFXJSE_Value* pNewThis) {
187 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 164 ASSERT(pOldFunction && pNewThis);
188 CFXJSE_Value* lpOldFunction = reinterpret_cast<CFXJSE_Value*>(hOldFunction); 165 return pValue->SetFunctionBind(pOldFunction, pNewThis);
189 CFXJSE_Value* lpNewThis = reinterpret_cast<CFXJSE_Value*>(hNewThis);
190 ASSERT(lpValue && lpOldFunction && lpNewThis);
191 return lpValue->SetFunctionBind(lpOldFunction, lpNewThis);
192 } 166 }
193 167
194 FXJSE_HVALUE FXJSE_Value_Create(v8::Isolate* pIsolate) { 168 CFXJSE_Value* FXJSE_Value_Create(v8::Isolate* pIsolate) {
195 return reinterpret_cast<FXJSE_HVALUE>(CFXJSE_Value::Create(pIsolate)); 169 return CFXJSE_Value::Create(pIsolate);
196 } 170 }
197 171
198 void FXJSE_Value_Release(FXJSE_HVALUE hValue) { 172 void FXJSE_Value_Release(CFXJSE_Value* pValue) {
199 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hValue); 173 delete pValue;
200 delete lpValue;
201 } 174 }
202 175
203 void FXJSE_ThrowMessage(const CFX_ByteStringC& utf8Name, 176 void FXJSE_ThrowMessage(const CFX_ByteStringC& utf8Name,
204 const CFX_ByteStringC& utf8Message) { 177 const CFX_ByteStringC& utf8Message) {
205 v8::Isolate* pIsolate = v8::Isolate::GetCurrent(); 178 v8::Isolate* pIsolate = v8::Isolate::GetCurrent();
206 ASSERT(pIsolate); 179 ASSERT(pIsolate);
207 180
208 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(pIsolate); 181 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(pIsolate);
209 v8::Local<v8::String> hMessage = v8::String::NewFromUtf8( 182 v8::Local<v8::String> hMessage = v8::String::NewFromUtf8(
210 pIsolate, utf8Message.c_str(), v8::String::kNormalString, 183 pIsolate, utf8Message.c_str(), v8::String::kNormalString,
(...skipping 22 matching lines...) Expand all
233 } 206 }
234 207
235 CFXJSE_Value* CFXJSE_Value::Create(v8::Isolate* pIsolate) { 208 CFXJSE_Value* CFXJSE_Value::Create(v8::Isolate* pIsolate) {
236 return new CFXJSE_Value(pIsolate); 209 return new CFXJSE_Value(pIsolate);
237 } 210 }
238 211
239 void* CFXJSE_Value::ToObject(CFXJSE_Class* lpClass) const { 212 void* CFXJSE_Value::ToObject(CFXJSE_Class* lpClass) const {
240 ASSERT(!m_hValue.IsEmpty()); 213 ASSERT(!m_hValue.IsEmpty());
241 214
242 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(m_pIsolate); 215 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(m_pIsolate);
243 v8::Local<v8::Value> hValue = v8::Local<v8::Value>::New(m_pIsolate, m_hValue); 216 v8::Local<v8::Value> pValue = v8::Local<v8::Value>::New(m_pIsolate, m_hValue);
244 ASSERT(!hValue.IsEmpty()); 217 ASSERT(!pValue.IsEmpty());
245 218
246 if (!hValue->IsObject()) 219 if (!pValue->IsObject())
247 return nullptr; 220 return nullptr;
248 221
249 return FXJSE_RetrieveObjectBinding(hValue.As<v8::Object>(), lpClass); 222 return FXJSE_RetrieveObjectBinding(pValue.As<v8::Object>(), lpClass);
250 } 223 }
251 224
252 V8_INLINE static double FXJSE_ftod(FX_FLOAT fNumber) { 225 V8_INLINE static double FXJSE_ftod(FX_FLOAT fNumber) {
253 if (sizeof(FX_FLOAT) != 4) { 226 if (sizeof(FX_FLOAT) != 4) {
254 ASSERT(FALSE); 227 ASSERT(FALSE);
255 return fNumber; 228 return fNumber;
256 } 229 }
257 230
258 uint32_t nFloatBits = (uint32_t&)fNumber; 231 uint32_t nFloatBits = (uint32_t&)fNumber;
259 uint8_t nExponent = (uint8_t)(nFloatBits >> 16 >> 7); 232 uint8_t nExponent = (uint8_t)(nFloatBits >> 16 >> 7);
(...skipping 24 matching lines...) Expand all
284 } while (iErrPosMin < iErrPosMax); 257 } while (iErrPosMin < iErrPosMax);
285 iErrPos = iErrPosMax; 258 iErrPos = iErrPosMax;
286 } 259 }
287 double dPow = pow(10.0, iErrPos); 260 double dPow = pow(10.0, iErrPos);
288 return fNumber < 0 ? ceil(dNumber * dPow - 0.5) / dPow 261 return fNumber < 0 ? ceil(dNumber * dPow - 0.5) / dPow
289 : floor(dNumber * dPow + 0.5) / dPow; 262 : floor(dNumber * dPow + 0.5) / dPow;
290 } 263 }
291 264
292 void CFXJSE_Value::SetFloat(FX_FLOAT fFloat) { 265 void CFXJSE_Value::SetFloat(FX_FLOAT fFloat) {
293 CFXJSE_ScopeUtil_IsolateHandle scope(m_pIsolate); 266 CFXJSE_ScopeUtil_IsolateHandle scope(m_pIsolate);
294 v8::Local<v8::Value> hValue = v8::Number::New(m_pIsolate, FXJSE_ftod(fFloat)); 267 v8::Local<v8::Value> pValue = v8::Number::New(m_pIsolate, FXJSE_ftod(fFloat));
295 m_hValue.Reset(m_pIsolate, hValue); 268 m_hValue.Reset(m_pIsolate, pValue);
296 } 269 }
297 270
298 void CFXJSE_Value::SetHostObject(void* lpObject, CFXJSE_Class* lpClass) { 271 void CFXJSE_Value::SetHostObject(void* lpObject, CFXJSE_Class* lpClass) {
299 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(m_pIsolate); 272 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(m_pIsolate);
300 ASSERT(lpClass); 273 ASSERT(lpClass);
301 v8::Local<v8::FunctionTemplate> hClass = 274 v8::Local<v8::FunctionTemplate> hClass =
302 v8::Local<v8::FunctionTemplate>::New(m_pIsolate, lpClass->m_hTemplate); 275 v8::Local<v8::FunctionTemplate>::New(m_pIsolate, lpClass->m_hTemplate);
303 v8::Local<v8::Object> hObject = hClass->InstanceTemplate()->NewInstance(); 276 v8::Local<v8::Object> hObject = hClass->InstanceTemplate()->NewInstance();
304 FXJSE_UpdateObjectBinding(hObject, lpObject); 277 FXJSE_UpdateObjectBinding(hObject, lpObject);
305 m_hValue.Reset(m_pIsolate, hObject); 278 m_hValue.Reset(m_pIsolate, hObject);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 } 389 }
417 390
418 FX_BOOL CFXJSE_Value::SetObjectOwnProperty(const CFX_ByteStringC& szPropName, 391 FX_BOOL CFXJSE_Value::SetObjectOwnProperty(const CFX_ByteStringC& szPropName,
419 CFXJSE_Value* lpPropValue) { 392 CFXJSE_Value* lpPropValue) {
420 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(m_pIsolate); 393 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(m_pIsolate);
421 v8::Local<v8::Value> hObject = 394 v8::Local<v8::Value> hObject =
422 v8::Local<v8::Value>::New(m_pIsolate, m_hValue); 395 v8::Local<v8::Value>::New(m_pIsolate, m_hValue);
423 if (!hObject->IsObject()) 396 if (!hObject->IsObject())
424 return FALSE; 397 return FALSE;
425 398
426 v8::Local<v8::Value> hValue = 399 v8::Local<v8::Value> pValue =
427 v8::Local<v8::Value>::New(m_pIsolate, lpPropValue->m_hValue); 400 v8::Local<v8::Value>::New(m_pIsolate, lpPropValue->m_hValue);
428 return hObject.As<v8::Object>() 401 return hObject.As<v8::Object>()
429 ->DefineOwnProperty( 402 ->DefineOwnProperty(
430 m_pIsolate->GetCurrentContext(), 403 m_pIsolate->GetCurrentContext(),
431 v8::String::NewFromUtf8(m_pIsolate, szPropName.c_str(), 404 v8::String::NewFromUtf8(m_pIsolate, szPropName.c_str(),
432 v8::String::kNormalString, 405 v8::String::kNormalString,
433 szPropName.GetLength()), 406 szPropName.GetLength()),
434 hValue) 407 pValue)
435 .FromMaybe(false); 408 .FromMaybe(false);
436 } 409 }
437 410
438 FX_BOOL CFXJSE_Value::SetFunctionBind(CFXJSE_Value* lpOldFunction, 411 FX_BOOL CFXJSE_Value::SetFunctionBind(CFXJSE_Value* lpOldFunction,
439 CFXJSE_Value* lpNewThis) { 412 CFXJSE_Value* lpNewThis) {
440 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(m_pIsolate); 413 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(m_pIsolate);
441 v8::Local<v8::Value> rgArgs[2]; 414 v8::Local<v8::Value> rgArgs[2];
442 v8::Local<v8::Value> hOldFunction = 415 v8::Local<v8::Value> hOldFunction =
443 v8::Local<v8::Value>::New(m_pIsolate, lpOldFunction->DirectGetValue()); 416 v8::Local<v8::Value>::New(m_pIsolate, lpOldFunction->DirectGetValue());
444 if (hOldFunction.IsEmpty() || !hOldFunction->IsFunction()) 417 if (hOldFunction.IsEmpty() || !hOldFunction->IsFunction())
(...skipping 18 matching lines...) Expand all
463 return FALSE; 436 return FALSE;
464 437
465 m_hValue.Reset(m_pIsolate, hBoundFunction); 438 m_hValue.Reset(m_pIsolate, hBoundFunction);
466 return TRUE; 439 return TRUE;
467 } 440 }
468 441
469 #define FXJSE_INVALID_PTR ((void*)(intptr_t)-1) 442 #define FXJSE_INVALID_PTR ((void*)(intptr_t)-1)
470 FX_BOOL CFXJSE_Value::Call(CFXJSE_Value* lpReceiver, 443 FX_BOOL CFXJSE_Value::Call(CFXJSE_Value* lpReceiver,
471 CFXJSE_Value* lpRetValue, 444 CFXJSE_Value* lpRetValue,
472 uint32_t nArgCount, 445 uint32_t nArgCount,
473 FXJSE_HVALUE* lpArgs) { 446 CFXJSE_Value** lpArgs) {
474 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(m_pIsolate); 447 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(m_pIsolate);
475 v8::Local<v8::Value> hFunctionValue = 448 v8::Local<v8::Value> hFunctionValue =
476 v8::Local<v8::Value>::New(m_pIsolate, DirectGetValue()); 449 v8::Local<v8::Value>::New(m_pIsolate, DirectGetValue());
477 v8::Local<v8::Object> hFunctionObject = 450 v8::Local<v8::Object> hFunctionObject =
478 !hFunctionValue.IsEmpty() && hFunctionValue->IsObject() 451 !hFunctionValue.IsEmpty() && hFunctionValue->IsObject()
479 ? hFunctionValue.As<v8::Object>() 452 ? hFunctionValue.As<v8::Object>()
480 : v8::Local<v8::Object>(); 453 : v8::Local<v8::Object>();
481 454
482 v8::TryCatch trycatch(m_pIsolate); 455 v8::TryCatch trycatch(m_pIsolate);
483 if (hFunctionObject.IsEmpty() || !hFunctionObject->IsCallable()) { 456 if (hFunctionObject.IsEmpty() || !hFunctionObject->IsCallable()) {
484 if (lpRetValue) 457 if (lpRetValue)
485 lpRetValue->ForceSetValue(FXJSE_CreateReturnValue(m_pIsolate, trycatch)); 458 lpRetValue->ForceSetValue(FXJSE_CreateReturnValue(m_pIsolate, trycatch));
486 return FALSE; 459 return FALSE;
487 } 460 }
488 461
489 v8::Local<v8::Value> hReturnValue; 462 v8::Local<v8::Value> hReturnValue;
490 v8::Local<v8::Value>* lpLocalArgs = NULL; 463 v8::Local<v8::Value>* lpLocalArgs = NULL;
491 if (nArgCount) { 464 if (nArgCount) {
492 lpLocalArgs = FX_Alloc(v8::Local<v8::Value>, nArgCount); 465 lpLocalArgs = FX_Alloc(v8::Local<v8::Value>, nArgCount);
493 for (uint32_t i = 0; i < nArgCount; i++) { 466 for (uint32_t i = 0; i < nArgCount; i++) {
494 new (lpLocalArgs + i) v8::Local<v8::Value>; 467 new (lpLocalArgs + i) v8::Local<v8::Value>;
495 CFXJSE_Value* lpArg = (CFXJSE_Value*)lpArgs[i]; 468 CFXJSE_Value* lpArg = lpArgs[i];
496 if (lpArg) { 469 if (lpArg) {
497 lpLocalArgs[i] = 470 lpLocalArgs[i] =
498 v8::Local<v8::Value>::New(m_pIsolate, lpArg->DirectGetValue()); 471 v8::Local<v8::Value>::New(m_pIsolate, lpArg->DirectGetValue());
499 } 472 }
500 if (lpLocalArgs[i].IsEmpty()) { 473 if (lpLocalArgs[i].IsEmpty()) {
501 lpLocalArgs[i] = v8::Undefined(m_pIsolate); 474 lpLocalArgs[i] = v8::Undefined(m_pIsolate);
502 } 475 }
503 } 476 }
504 } 477 }
505 478
(...skipping 25 matching lines...) Expand all
531 if (lpRetValue) 504 if (lpRetValue)
532 lpRetValue->ForceSetValue(hReturnValue); 505 lpRetValue->ForceSetValue(hReturnValue);
533 506
534 if (lpLocalArgs) { 507 if (lpLocalArgs) {
535 for (uint32_t i = 0; i < nArgCount; i++) 508 for (uint32_t i = 0; i < nArgCount; i++)
536 lpLocalArgs[i].~Local(); 509 lpLocalArgs[i].~Local();
537 FX_Free(lpLocalArgs); 510 FX_Free(lpLocalArgs);
538 } 511 }
539 return bRetValue; 512 return bRetValue;
540 } 513 }
OLDNEW
« no previous file with comments | « xfa/fxjse/value.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698