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

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

Issue 2217253002: Remove backpointer to runtime from CJS_Array. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 4 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
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/JS_Value.h" 7 #include "fpdfsdk/javascript/JS_Value.h"
8 8
9 #include <time.h> 9 #include <time.h>
10 10
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const FX_WCHAR* pWstr) 66 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const FX_WCHAR* pWstr)
67 : m_pJSRuntime(pRuntime) { 67 : m_pJSRuntime(pRuntime) {
68 operator=(pWstr); 68 operator=(pWstr);
69 } 69 }
70 70
71 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const FX_CHAR* pStr) 71 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const FX_CHAR* pStr)
72 : m_pJSRuntime(pRuntime) { 72 : m_pJSRuntime(pRuntime) {
73 operator=(pStr); 73 operator=(pStr);
74 } 74 }
75 75
76 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, CJS_Array& array) 76 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const CJS_Array& array)
77 : m_pJSRuntime(pRuntime) { 77 : m_pValue(array.ToV8Array(pRuntime->GetIsolate())),
78 operator=(array); 78 m_pJSRuntime(pRuntime) {}
79 }
80 79
81 CJS_Value::~CJS_Value() {} 80 CJS_Value::~CJS_Value() {}
82 81
83 CJS_Value::CJS_Value(const CJS_Value& other) = default; 82 CJS_Value::CJS_Value(const CJS_Value& other) = default;
84 83
85 void CJS_Value::Attach(v8::Local<v8::Value> pValue) { 84 void CJS_Value::Attach(v8::Local<v8::Value> pValue) {
86 m_pValue = pValue; 85 m_pValue = pValue;
87 } 86 }
88 87
89 void CJS_Value::Detach() { 88 void CJS_Value::Detach() {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 } 184 }
186 185
187 void CJS_Value::SetNull() { 186 void CJS_Value::SetNull() {
188 m_pValue = FXJS_NewNull(m_pJSRuntime->GetIsolate()); 187 m_pValue = FXJS_NewNull(m_pJSRuntime->GetIsolate());
189 } 188 }
190 189
191 void CJS_Value::operator=(const FX_CHAR* pStr) { 190 void CJS_Value::operator=(const FX_CHAR* pStr) {
192 operator=(CFX_WideString::FromLocal(pStr).c_str()); 191 operator=(CFX_WideString::FromLocal(pStr).c_str());
193 } 192 }
194 193
195 void CJS_Value::operator=(const CJS_Array& array) {
196 ASSERT(m_pJSRuntime == array.GetJSRuntime());
197 m_pValue = array.ToV8Array();
198 }
199
200 void CJS_Value::operator=(const CJS_Date& date) { 194 void CJS_Value::operator=(const CJS_Date& date) {
201 ASSERT(m_pJSRuntime == date.GetJSRuntime()); 195 ASSERT(m_pJSRuntime == date.GetJSRuntime());
202 m_pValue = FXJS_NewDate(m_pJSRuntime->GetIsolate(), date.ToDouble()); 196 m_pValue = FXJS_NewDate(m_pJSRuntime->GetIsolate(), date.ToDouble());
203 } 197 }
204 198
205 void CJS_Value::operator=(const CJS_Value& value) { 199 void CJS_Value::operator=(const CJS_Value& value) {
206 ASSERT(m_pJSRuntime == value.m_pJSRuntime); 200 ASSERT(m_pJSRuntime == value.m_pJSRuntime);
207 m_pValue = value.ToV8Value(); 201 m_pValue = value.ToV8Value();
208 } 202 }
209 203
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 CJS_Value::operator=(wide_string.c_str()); 346 CJS_Value::operator=(wide_string.c_str());
353 } 347 }
354 348
355 void CJS_PropValue::operator>>(CJS_Array& array) const { 349 void CJS_PropValue::operator>>(CJS_Array& array) const {
356 ASSERT(m_bIsSetting); 350 ASSERT(m_bIsSetting);
357 ConvertToArray(array); 351 ConvertToArray(array);
358 } 352 }
359 353
360 void CJS_PropValue::operator<<(CJS_Array& array) { 354 void CJS_PropValue::operator<<(CJS_Array& array) {
361 ASSERT(!m_bIsSetting); 355 ASSERT(!m_bIsSetting);
362 CJS_Value::operator=(array); 356 m_pValue = array.ToV8Array(m_pJSRuntime->GetIsolate());
363 } 357 }
364 358
365 void CJS_PropValue::operator>>(CJS_Date& date) const { 359 void CJS_PropValue::operator>>(CJS_Date& date) const {
366 ASSERT(m_bIsSetting); 360 ASSERT(m_bIsSetting);
367 ConvertToDate(date); 361 ConvertToDate(date);
368 } 362 }
369 363
370 void CJS_PropValue::operator<<(CJS_Date& date) { 364 void CJS_PropValue::operator<<(CJS_Date& date) {
371 ASSERT(!m_bIsSetting); 365 ASSERT(!m_bIsSetting);
372 CJS_Value::operator=(date); 366 CJS_Value::operator=(date);
373 } 367 }
374 368
375 CJS_Array::CJS_Array(CJS_Runtime* pRuntime) : m_pJSRuntime(pRuntime) {} 369 CJS_Array::CJS_Array() {}
370
371 CJS_Array::CJS_Array(const CJS_Array& other) = default;
376 372
377 CJS_Array::~CJS_Array() {} 373 CJS_Array::~CJS_Array() {}
378 374
379 CJS_Array::CJS_Array(const CJS_Array& other) = default;
380
381 void CJS_Array::Attach(v8::Local<v8::Array> pArray) { 375 void CJS_Array::Attach(v8::Local<v8::Array> pArray) {
382 m_pArray = pArray; 376 m_pArray = pArray;
383 } 377 }
384 378
385 void CJS_Array::GetElement(unsigned index, CJS_Value& value) const { 379 void CJS_Array::GetElement(v8::Isolate* pIsolate,
386 if (m_pArray.IsEmpty()) 380 unsigned index,
387 return; 381 CJS_Value& value) const {
388 v8::Local<v8::Value> p = 382 if (!m_pArray.IsEmpty())
389 FXJS_GetArrayElement(m_pJSRuntime->GetIsolate(), m_pArray, index); 383 value.Attach(FXJS_GetArrayElement(pIsolate, m_pArray, index));
390 value.Attach(p);
391 } 384 }
392 385
393 void CJS_Array::SetElement(unsigned index, CJS_Value value) { 386 void CJS_Array::SetElement(v8::Isolate* pIsolate,
387 unsigned index,
388 const CJS_Value& value) {
394 if (m_pArray.IsEmpty()) 389 if (m_pArray.IsEmpty())
395 m_pArray = FXJS_NewArray(m_pJSRuntime->GetIsolate()); 390 m_pArray = FXJS_NewArray(pIsolate);
396 391
397 FXJS_PutArrayElement(m_pJSRuntime->GetIsolate(), m_pArray, index, 392 FXJS_PutArrayElement(pIsolate, m_pArray, index, value.ToV8Value());
398 value.ToV8Value());
399 } 393 }
400 394
401 int CJS_Array::GetLength() const { 395 int CJS_Array::GetLength() const {
402 if (m_pArray.IsEmpty()) 396 if (m_pArray.IsEmpty())
403 return 0; 397 return 0;
404 return FXJS_GetArrayLength(m_pArray); 398 return FXJS_GetArrayLength(m_pArray);
405 } 399 }
406 400
407 v8::Local<v8::Array> CJS_Array::ToV8Array() const { 401 v8::Local<v8::Array> CJS_Array::ToV8Array(v8::Isolate* pIsolate) const {
408 if (m_pArray.IsEmpty()) 402 if (m_pArray.IsEmpty())
409 m_pArray = FXJS_NewArray(m_pJSRuntime->GetIsolate()); 403 m_pArray = FXJS_NewArray(pIsolate);
410 404
411 return m_pArray; 405 return m_pArray;
412 } 406 }
413 407
414 CJS_Date::CJS_Date(CJS_Runtime* pRuntime) : m_pJSRuntime(pRuntime) {} 408 CJS_Date::CJS_Date(CJS_Runtime* pRuntime) : m_pJSRuntime(pRuntime) {}
415 409
416 CJS_Date::CJS_Date(CJS_Runtime* pRuntime, double dMsecTime) 410 CJS_Date::CJS_Date(CJS_Runtime* pRuntime, double dMsecTime)
417 : m_pJSRuntime(pRuntime) { 411 : m_pJSRuntime(pRuntime) {
418 m_pDate = FXJS_NewDate(pRuntime->GetIsolate(), dMsecTime); 412 m_pDate = FXJS_NewDate(pRuntime->GetIsolate(), dMsecTime);
419 } 413 }
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 for (size_t i = 0; i < nKeywords; ++i) { 837 for (size_t i = 0; i < nKeywords; ++i) {
844 const wchar_t* property = va_arg(ap, const wchar_t*); 838 const wchar_t* property = va_arg(ap, const wchar_t*);
845 v8::Local<v8::Value> v8Value = 839 v8::Local<v8::Value> v8Value =
846 FXJS_GetObjectElement(pRuntime->GetIsolate(), pObj, property); 840 FXJS_GetObjectElement(pRuntime->GetIsolate(), pObj, property);
847 if (!v8Value->IsUndefined()) 841 if (!v8Value->IsUndefined())
848 result[i] = CJS_Value(pRuntime, v8Value); 842 result[i] = CJS_Value(pRuntime, v8Value);
849 } 843 }
850 va_end(ap); 844 va_end(ap);
851 return result; 845 return result;
852 } 846 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698