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

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

Issue 1883273003: Pass WideStrings without narrowing to c_str in javascript/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Missed one caller. Created 4 years, 8 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/PublicMethods.cpp ('k') | fpdfsdk/jsapi/fxjs_v8.cpp » ('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 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 226
227 void JSGlobalAlternate::UpdateGlobalPersistentVariables() { 227 void JSGlobalAlternate::UpdateGlobalPersistentVariables() {
228 for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) { 228 for (int i = 0, sz = m_pGlobalData->GetSize(); i < sz; i++) {
229 CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i); 229 CJS_GlobalData_Element* pData = m_pGlobalData->GetAt(i);
230 switch (pData->data.nType) { 230 switch (pData->data.nType) {
231 case JS_GLOBALDATA_TYPE_NUMBER: 231 case JS_GLOBALDATA_TYPE_NUMBER:
232 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER, 232 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NUMBER,
233 pData->data.dData, false, "", 233 pData->data.dData, false, "",
234 v8::Local<v8::Object>(), pData->bPersistent == 1); 234 v8::Local<v8::Object>(), pData->bPersistent == 1);
235 FXJS_PutObjectNumber(NULL, m_pJSObject->ToV8Object(), 235 FXJS_PutObjectNumber(NULL, m_pJSObject->ToV8Object(),
236 pData->data.sKey.UTF8Decode().c_str(), 236 pData->data.sKey.UTF8Decode(), pData->data.dData);
237 pData->data.dData);
238 break; 237 break;
239 case JS_GLOBALDATA_TYPE_BOOLEAN: 238 case JS_GLOBALDATA_TYPE_BOOLEAN:
240 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_BOOLEAN, 0, 239 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_BOOLEAN, 0,
241 (bool)(pData->data.bData == 1), "", 240 (bool)(pData->data.bData == 1), "",
242 v8::Local<v8::Object>(), pData->bPersistent == 1); 241 v8::Local<v8::Object>(), pData->bPersistent == 1);
243 FXJS_PutObjectBoolean(NULL, m_pJSObject->ToV8Object(), 242 FXJS_PutObjectBoolean(NULL, m_pJSObject->ToV8Object(),
244 pData->data.sKey.UTF8Decode().c_str(), 243 pData->data.sKey.UTF8Decode(),
245 (bool)(pData->data.bData == 1)); 244 (bool)(pData->data.bData == 1));
246 break; 245 break;
247 case JS_GLOBALDATA_TYPE_STRING: 246 case JS_GLOBALDATA_TYPE_STRING:
248 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_STRING, 0, 247 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_STRING, 0,
249 false, pData->data.sData, v8::Local<v8::Object>(), 248 false, pData->data.sData, v8::Local<v8::Object>(),
250 pData->bPersistent == 1); 249 pData->bPersistent == 1);
251 FXJS_PutObjectString(NULL, m_pJSObject->ToV8Object(), 250 FXJS_PutObjectString(NULL, m_pJSObject->ToV8Object(),
252 pData->data.sKey.UTF8Decode().c_str(), 251 pData->data.sKey.UTF8Decode(),
253 pData->data.sData.UTF8Decode().c_str()); 252 pData->data.sData.UTF8Decode());
254 break; 253 break;
255 case JS_GLOBALDATA_TYPE_OBJECT: { 254 case JS_GLOBALDATA_TYPE_OBJECT: {
256 v8::Isolate* pRuntime = m_pJSObject->ToV8Object()->GetIsolate(); 255 v8::Isolate* pRuntime = m_pJSObject->ToV8Object()->GetIsolate();
257 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj(pRuntime, NULL, -1); 256 v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj(pRuntime, NULL, -1);
258 257
259 PutObjectProperty(pObj, &pData->data); 258 PutObjectProperty(pObj, &pData->data);
260 259
261 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_OBJECT, 0, 260 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_OBJECT, 0,
262 false, "", pObj, pData->bPersistent == 1); 261 false, "", pObj, pData->bPersistent == 1);
263 FXJS_PutObjectObject(NULL, m_pJSObject->ToV8Object(), 262 FXJS_PutObjectObject(NULL, m_pJSObject->ToV8Object(),
264 pData->data.sKey.UTF8Decode().c_str(), pObj); 263 pData->data.sKey.UTF8Decode(), pObj);
265 } break; 264 } break;
266 case JS_GLOBALDATA_TYPE_NULL: 265 case JS_GLOBALDATA_TYPE_NULL:
267 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false, 266 SetGlobalVariables(pData->data.sKey, JS_GLOBALDATA_TYPE_NULL, 0, false,
268 "", v8::Local<v8::Object>(), 267 "", v8::Local<v8::Object>(),
269 pData->bPersistent == 1); 268 pData->bPersistent == 1);
270 FXJS_PutObjectNull(NULL, m_pJSObject->ToV8Object(), 269 FXJS_PutObjectNull(NULL, m_pJSObject->ToV8Object(),
271 pData->data.sKey.UTF8Decode().c_str()); 270 pData->data.sKey.UTF8Decode());
272 break; 271 break;
273 } 272 }
274 } 273 }
275 } 274 }
276 275
277 void JSGlobalAlternate::CommitGlobalPersisitentVariables(IJS_Context* cc) { 276 void JSGlobalAlternate::CommitGlobalPersisitentVariables(IJS_Context* cc) {
278 for (auto it = m_mapGlobal.begin(); it != m_mapGlobal.end(); ++it) { 277 for (auto it = m_mapGlobal.begin(); it != m_mapGlobal.end(); ++it) {
279 CFX_ByteString name = it->first; 278 CFX_ByteString name = it->first;
280 JSGlobalData* pData = it->second; 279 JSGlobalData* pData = it->second;
281 if (pData->bDeleted) { 280 if (pData->bDeleted) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 v8::Isolate* isolate = pObj->GetIsolate(); 316 v8::Isolate* isolate = pObj->GetIsolate();
318 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 317 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
319 318
320 v8::Local<v8::Array> pKeyList = FXJS_GetObjectElementNames(isolate, pObj); 319 v8::Local<v8::Array> pKeyList = FXJS_GetObjectElementNames(isolate, pObj);
321 int nObjElements = pKeyList->Length(); 320 int nObjElements = pKeyList->Length();
322 for (int i = 0; i < nObjElements; i++) { 321 for (int i = 0; i < nObjElements; i++) {
323 CFX_WideString ws = 322 CFX_WideString ws =
324 FXJS_ToString(isolate, FXJS_GetArrayElement(isolate, pKeyList, i)); 323 FXJS_ToString(isolate, FXJS_GetArrayElement(isolate, pKeyList, i));
325 CFX_ByteString sKey = ws.UTF8Encode(); 324 CFX_ByteString sKey = ws.UTF8Encode();
326 325
327 v8::Local<v8::Value> v = FXJS_GetObjectElement(isolate, pObj, ws.c_str()); 326 v8::Local<v8::Value> v = FXJS_GetObjectElement(isolate, pObj, ws);
328 switch (GET_VALUE_TYPE(v)) { 327 switch (GET_VALUE_TYPE(v)) {
329 case CJS_Value::VT_number: { 328 case CJS_Value::VT_number: {
330 CJS_KeyValue* pObjElement = new CJS_KeyValue; 329 CJS_KeyValue* pObjElement = new CJS_KeyValue;
331 pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER; 330 pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER;
332 pObjElement->sKey = sKey; 331 pObjElement->sKey = sKey;
333 pObjElement->dData = FXJS_ToNumber(isolate, v); 332 pObjElement->dData = FXJS_ToNumber(isolate, v);
334 array.Add(pObjElement); 333 array.Add(pObjElement);
335 } break; 334 } break;
336 case CJS_Value::VT_boolean: { 335 case CJS_Value::VT_boolean: {
337 CJS_KeyValue* pObjElement = new CJS_KeyValue; 336 CJS_KeyValue* pObjElement = new CJS_KeyValue;
(...skipping 29 matching lines...) Expand all
367 } 366 }
368 } 367 }
369 } 368 }
370 369
371 void JSGlobalAlternate::PutObjectProperty(v8::Local<v8::Object> pObj, 370 void JSGlobalAlternate::PutObjectProperty(v8::Local<v8::Object> pObj,
372 CJS_KeyValue* pData) { 371 CJS_KeyValue* pData) {
373 for (int i = 0, sz = pData->objData.Count(); i < sz; i++) { 372 for (int i = 0, sz = pData->objData.Count(); i < sz; i++) {
374 CJS_KeyValue* pObjData = pData->objData.GetAt(i); 373 CJS_KeyValue* pObjData = pData->objData.GetAt(i);
375 switch (pObjData->nType) { 374 switch (pObjData->nType) {
376 case JS_GLOBALDATA_TYPE_NUMBER: 375 case JS_GLOBALDATA_TYPE_NUMBER:
377 FXJS_PutObjectNumber(NULL, pObj, pObjData->sKey.UTF8Decode().c_str(), 376 FXJS_PutObjectNumber(NULL, pObj, pObjData->sKey.UTF8Decode(),
378 pObjData->dData); 377 pObjData->dData);
379 break; 378 break;
380 case JS_GLOBALDATA_TYPE_BOOLEAN: 379 case JS_GLOBALDATA_TYPE_BOOLEAN:
381 FXJS_PutObjectBoolean(NULL, pObj, pObjData->sKey.UTF8Decode().c_str(), 380 FXJS_PutObjectBoolean(NULL, pObj, pObjData->sKey.UTF8Decode(),
382 pObjData->bData == 1); 381 pObjData->bData == 1);
383 break; 382 break;
384 case JS_GLOBALDATA_TYPE_STRING: 383 case JS_GLOBALDATA_TYPE_STRING:
385 FXJS_PutObjectString(NULL, pObj, pObjData->sKey.UTF8Decode().c_str(), 384 FXJS_PutObjectString(NULL, pObj, pObjData->sKey.UTF8Decode(),
386 pObjData->sData.UTF8Decode().c_str()); 385 pObjData->sData.UTF8Decode());
387 break; 386 break;
388 case JS_GLOBALDATA_TYPE_OBJECT: { 387 case JS_GLOBALDATA_TYPE_OBJECT: {
389 v8::Isolate* pRuntime = m_pJSObject->ToV8Object()->GetIsolate(); 388 v8::Isolate* pRuntime = m_pJSObject->ToV8Object()->GetIsolate();
390 v8::Local<v8::Object> pNewObj = 389 v8::Local<v8::Object> pNewObj =
391 FXJS_NewFxDynamicObj(pRuntime, NULL, -1); 390 FXJS_NewFxDynamicObj(pRuntime, NULL, -1);
392 PutObjectProperty(pNewObj, pObjData); 391 PutObjectProperty(pNewObj, pObjData);
393 FXJS_PutObjectObject(NULL, pObj, pObjData->sKey.UTF8Decode().c_str(), 392 FXJS_PutObjectObject(NULL, pObj, pObjData->sKey.UTF8Decode(), pNewObj);
394 pNewObj);
395 } break; 393 } break;
396 case JS_GLOBALDATA_TYPE_NULL: 394 case JS_GLOBALDATA_TYPE_NULL:
397 FXJS_PutObjectNull(NULL, pObj, pObjData->sKey.UTF8Decode().c_str()); 395 FXJS_PutObjectNull(NULL, pObj, pObjData->sKey.UTF8Decode());
398 break; 396 break;
399 } 397 }
400 } 398 }
401 } 399 }
402 400
403 void JSGlobalAlternate::DestroyGlobalPersisitentVariables() { 401 void JSGlobalAlternate::DestroyGlobalPersisitentVariables() {
404 for (const auto& pair : m_mapGlobal) { 402 for (const auto& pair : m_mapGlobal) {
405 delete pair.second; 403 delete pair.second;
406 } 404 }
407 m_mapGlobal.clear(); 405 m_mapGlobal.clear();
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 return CJS_Value::VT_boolean; 502 return CJS_Value::VT_boolean;
505 if (nHash == JSCONST_nDateHash) 503 if (nHash == JSCONST_nDateHash)
506 return CJS_Value::VT_date; 504 return CJS_Value::VT_date;
507 if (nHash == JSCONST_nObjectHash) 505 if (nHash == JSCONST_nObjectHash)
508 return CJS_Value::VT_object; 506 return CJS_Value::VT_object;
509 if (nHash == JSCONST_nFXobjHash) 507 if (nHash == JSCONST_nFXobjHash)
510 return CJS_Value::VT_fxobject; 508 return CJS_Value::VT_fxobject;
511 509
512 return CJS_Value::VT_unknown; 510 return CJS_Value::VT_unknown;
513 } 511 }
OLDNEW
« no previous file with comments | « fpdfsdk/javascript/PublicMethods.cpp ('k') | fpdfsdk/jsapi/fxjs_v8.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698