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

Side by Side Diff: fpdfsdk/javascript/global.cpp

Issue 2637503002: Tidy FXJS_V8, backfill tests. (Closed)
Patch Set: rebase Created 3 years, 11 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 | « fpdfsdk/javascript/JS_Value.cpp ('k') | fxjs/fxjs_v8.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 "fpdfsdk/javascript/global.h" 7 #include "fpdfsdk/javascript/global.h"
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 static_cast<CJS_Runtime*>(CFXJS_Engine::CurrentEngineFromIsolate( 185 static_cast<CJS_Runtime*>(CFXJS_Engine::CurrentEngineFromIsolate(
186 m_pJSObject->ToV8Object()->GetIsolate())); 186 m_pJSObject->ToV8Object()->GetIsolate()));
187 187
188 for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) { 188 for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) {
189 CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i); 189 CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i);
190 switch (pData->data.nType) { 190 switch (pData->data.nType) {
191 case JS_GlobalDataType::NUMBER: 191 case JS_GlobalDataType::NUMBER:
192 SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::NUMBER, 192 SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::NUMBER,
193 pData->data.dData, false, "", 193 pData->data.dData, false, "",
194 v8::Local<v8::Object>(), pData->bPersistent == 1); 194 v8::Local<v8::Object>(), pData->bPersistent == 1);
195 pRuntime->PutObjectNumber(m_pJSObject->ToV8Object(), 195 pRuntime->PutObjectProperty(m_pJSObject->ToV8Object(),
196 pData->data.sKey.UTF8Decode(), 196 pData->data.sKey.UTF8Decode(),
197 pData->data.dData); 197 pRuntime->NewNumber(pData->data.dData));
198 break; 198 break;
199 case JS_GlobalDataType::BOOLEAN: 199 case JS_GlobalDataType::BOOLEAN:
200 SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::BOOLEAN, 0, 200 SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::BOOLEAN, 0,
201 (bool)(pData->data.bData == 1), "", 201 pData->data.bData == 1, "", v8::Local<v8::Object>(),
202 v8::Local<v8::Object>(), pData->bPersistent == 1); 202 pData->bPersistent == 1);
203 pRuntime->PutObjectBoolean(m_pJSObject->ToV8Object(), 203 pRuntime->PutObjectProperty(
204 pData->data.sKey.UTF8Decode(), 204 m_pJSObject->ToV8Object(), pData->data.sKey.UTF8Decode(),
205 (bool)(pData->data.bData == 1)); 205 pRuntime->NewBoolean(pData->data.bData == 1));
206 break; 206 break;
207 case JS_GlobalDataType::STRING: 207 case JS_GlobalDataType::STRING:
208 SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::STRING, 0, 208 SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::STRING, 0,
209 false, pData->data.sData, v8::Local<v8::Object>(), 209 false, pData->data.sData, v8::Local<v8::Object>(),
210 pData->bPersistent == 1); 210 pData->bPersistent == 1);
211 pRuntime->PutObjectString(m_pJSObject->ToV8Object(), 211 pRuntime->PutObjectProperty(
212 pData->data.sKey.UTF8Decode(), 212 m_pJSObject->ToV8Object(), pData->data.sKey.UTF8Decode(),
213 pData->data.sData.UTF8Decode()); 213 pRuntime->NewString(pData->data.sData.UTF8Decode()));
214 break; 214 break;
215 case JS_GlobalDataType::OBJECT: { 215 case JS_GlobalDataType::OBJECT: {
216 v8::Local<v8::Object> pObj = pRuntime->NewFxDynamicObj(-1); 216 v8::Local<v8::Object> pObj = pRuntime->NewFxDynamicObj(-1);
217
218 PutObjectProperty(pObj, &pData->data); 217 PutObjectProperty(pObj, &pData->data);
219 SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::OBJECT, 0, 218 SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::OBJECT, 0,
220 false, "", pObj, pData->bPersistent == 1); 219 false, "", pObj, pData->bPersistent == 1);
221 pRuntime->PutObjectObject(m_pJSObject->ToV8Object(), 220 pRuntime->PutObjectProperty(m_pJSObject->ToV8Object(),
222 pData->data.sKey.UTF8Decode(), pObj); 221 pData->data.sKey.UTF8Decode(), pObj);
223 } break; 222 } break;
224 case JS_GlobalDataType::NULLOBJ: 223 case JS_GlobalDataType::NULLOBJ:
225 SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::NULLOBJ, 0, 224 SetGlobalVariables(pData->data.sKey, JS_GlobalDataType::NULLOBJ, 0,
226 false, "", v8::Local<v8::Object>(), 225 false, "", v8::Local<v8::Object>(),
227 pData->bPersistent == 1); 226 pData->bPersistent == 1);
228 pRuntime->PutObjectNull(m_pJSObject->ToV8Object(), 227 pRuntime->PutObjectProperty(m_pJSObject->ToV8Object(),
229 pData->data.sKey.UTF8Decode()); 228 pData->data.sKey.UTF8Decode(),
229 pRuntime->NewNull());
230 break; 230 break;
231 } 231 }
232 } 232 }
233 } 233 }
234 234
235 void JSGlobalAlternate::CommitGlobalPersisitentVariables(IJS_Context* cc) { 235 void JSGlobalAlternate::CommitGlobalPersisitentVariables(IJS_Context* cc) {
236 for (auto it = m_mapGlobal.begin(); it != m_mapGlobal.end(); ++it) { 236 for (auto it = m_mapGlobal.begin(); it != m_mapGlobal.end(); ++it) {
237 CFX_ByteString name = it->first; 237 CFX_ByteString name = it->first;
238 JSGlobalData* pData = it->second; 238 JSGlobalData* pData = it->second;
239 if (pData->bDeleted) { 239 if (pData->bDeleted) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 275 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
276 std::vector<CFX_WideString> pKeyList = pRuntime->GetObjectPropertyNames(pObj); 276 std::vector<CFX_WideString> pKeyList = pRuntime->GetObjectPropertyNames(pObj);
277 for (const auto& ws : pKeyList) { 277 for (const auto& ws : pKeyList) {
278 CFX_ByteString sKey = ws.UTF8Encode(); 278 CFX_ByteString sKey = ws.UTF8Encode();
279 v8::Local<v8::Value> v = pRuntime->GetObjectProperty(pObj, ws); 279 v8::Local<v8::Value> v = pRuntime->GetObjectProperty(pObj, ws);
280 switch (CJS_Value::GetValueType(v)) { 280 switch (CJS_Value::GetValueType(v)) {
281 case CJS_Value::VT_number: { 281 case CJS_Value::VT_number: {
282 CJS_KeyValue* pObjElement = new CJS_KeyValue; 282 CJS_KeyValue* pObjElement = new CJS_KeyValue;
283 pObjElement->nType = JS_GlobalDataType::NUMBER; 283 pObjElement->nType = JS_GlobalDataType::NUMBER;
284 pObjElement->sKey = sKey; 284 pObjElement->sKey = sKey;
285 pObjElement->dData = pRuntime->ToNumber(v); 285 pObjElement->dData = pRuntime->ToDouble(v);
286 array.Add(pObjElement); 286 array.Add(pObjElement);
287 } break; 287 } break;
288 case CJS_Value::VT_boolean: { 288 case CJS_Value::VT_boolean: {
289 CJS_KeyValue* pObjElement = new CJS_KeyValue; 289 CJS_KeyValue* pObjElement = new CJS_KeyValue;
290 pObjElement->nType = JS_GlobalDataType::BOOLEAN; 290 pObjElement->nType = JS_GlobalDataType::BOOLEAN;
291 pObjElement->sKey = sKey; 291 pObjElement->sKey = sKey;
292 pObjElement->dData = pRuntime->ToBoolean(v); 292 pObjElement->dData = pRuntime->ToBoolean(v);
293 array.Add(pObjElement); 293 array.Add(pObjElement);
294 } break; 294 } break;
295 case CJS_Value::VT_string: { 295 case CJS_Value::VT_string: {
(...skipping 26 matching lines...) Expand all
322 322
323 void JSGlobalAlternate::PutObjectProperty(v8::Local<v8::Object> pObj, 323 void JSGlobalAlternate::PutObjectProperty(v8::Local<v8::Object> pObj,
324 CJS_KeyValue* pData) { 324 CJS_KeyValue* pData) {
325 CJS_Runtime* pRuntime = CJS_Runtime::CurrentRuntimeFromIsolate( 325 CJS_Runtime* pRuntime = CJS_Runtime::CurrentRuntimeFromIsolate(
326 m_pJSObject->ToV8Object()->GetIsolate()); 326 m_pJSObject->ToV8Object()->GetIsolate());
327 327
328 for (int i = 0, sz = pData->objData.Count(); i < sz; i++) { 328 for (int i = 0, sz = pData->objData.Count(); i < sz; i++) {
329 CJS_KeyValue* pObjData = pData->objData.GetAt(i); 329 CJS_KeyValue* pObjData = pData->objData.GetAt(i);
330 switch (pObjData->nType) { 330 switch (pObjData->nType) {
331 case JS_GlobalDataType::NUMBER: 331 case JS_GlobalDataType::NUMBER:
332 pRuntime->PutObjectNumber(pObj, pObjData->sKey.UTF8Decode(), 332 pRuntime->PutObjectProperty(pObj, pObjData->sKey.UTF8Decode(),
333 pObjData->dData); 333 pRuntime->NewNumber(pObjData->dData));
334 break; 334 break;
335 case JS_GlobalDataType::BOOLEAN: 335 case JS_GlobalDataType::BOOLEAN:
336 pRuntime->PutObjectBoolean(pObj, pObjData->sKey.UTF8Decode(), 336 pRuntime->PutObjectProperty(pObj, pObjData->sKey.UTF8Decode(),
337 pObjData->bData == 1); 337 pRuntime->NewBoolean(pObjData->bData == 1));
338 break; 338 break;
339 case JS_GlobalDataType::STRING: 339 case JS_GlobalDataType::STRING:
340 pRuntime->PutObjectString(pObj, pObjData->sKey.UTF8Decode(), 340 pRuntime->PutObjectProperty(
341 pObjData->sData.UTF8Decode()); 341 pObj, pObjData->sKey.UTF8Decode(),
342 pRuntime->NewString(pObjData->sData.UTF8Decode()));
342 break; 343 break;
343 case JS_GlobalDataType::OBJECT: { 344 case JS_GlobalDataType::OBJECT: {
344 v8::Local<v8::Object> pNewObj = pRuntime->NewFxDynamicObj(-1); 345 v8::Local<v8::Object> pNewObj = pRuntime->NewFxDynamicObj(-1);
345 PutObjectProperty(pNewObj, pObjData); 346 PutObjectProperty(pNewObj, pObjData);
346 pRuntime->PutObjectObject(pObj, pObjData->sKey.UTF8Decode(), pNewObj); 347 pRuntime->PutObjectProperty(pObj, pObjData->sKey.UTF8Decode(), pNewObj);
347 } break; 348 } break;
348 case JS_GlobalDataType::NULLOBJ: 349 case JS_GlobalDataType::NULLOBJ:
349 pRuntime->PutObjectNull(pObj, pObjData->sKey.UTF8Decode()); 350 pRuntime->PutObjectProperty(pObj, pObjData->sKey.UTF8Decode(),
351 pRuntime->NewNull());
350 break; 352 break;
351 } 353 }
352 } 354 }
353 } 355 }
354 356
355 void JSGlobalAlternate::DestroyGlobalPersisitentVariables() { 357 void JSGlobalAlternate::DestroyGlobalPersisitentVariables() {
356 for (const auto& pair : m_mapGlobal) { 358 for (const auto& pair : m_mapGlobal) {
357 delete pair.second; 359 delete pair.second;
358 } 360 }
359 m_mapGlobal.clear(); 361 m_mapGlobal.clear();
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 pNewData->nType = JS_GlobalDataType::NULLOBJ; 435 pNewData->nType = JS_GlobalDataType::NULLOBJ;
434 pNewData->bPersistent = bDefaultPersistent; 436 pNewData->bPersistent = bDefaultPersistent;
435 } break; 437 } break;
436 default: 438 default:
437 return false; 439 return false;
438 } 440 }
439 441
440 m_mapGlobal[propname] = pNewData; 442 m_mapGlobal[propname] = pNewData;
441 return true; 443 return true;
442 } 444 }
OLDNEW
« no previous file with comments | « fpdfsdk/javascript/JS_Value.cpp ('k') | fxjs/fxjs_v8.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698