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

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

Issue 1394103002: Wean CJS_Value off of v8::Isolate. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 2 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 "JS_Value.h" 7 #include "JS_Value.h"
8 8
9 #include <time.h> 9 #include <time.h>
10 #include <cmath> 10 #include <cmath>
11 #include <limits> 11 #include <limits>
12 12
13 #include "Document.h" 13 #include "Document.h"
14 #include "JS_Define.h" 14 #include "JS_Define.h"
15 #include "JS_Object.h" 15 #include "JS_Object.h"
16 16
17 static const FX_DWORD g_nan[2] = {0, 0x7FF80000}; 17 static const FX_DWORD g_nan[2] = {0, 0x7FF80000};
18 static double GetNan() { 18 static double GetNan() {
19 return *(double*)g_nan; 19 return *(double*)g_nan;
20 } 20 }
21 21
22 /* ---------------------------- CJS_Value ---------------------------- */ 22 /* ---------------------------- CJS_Value ---------------------------- */
23 23
24 CJS_Value::CJS_Value(v8::Isolate* isolate) 24 CJS_Value::CJS_Value(CJS_Runtime* pRuntime)
25 : m_eType(VT_unknown), m_isolate(isolate) {} 25 : m_eType(VT_unknown), m_pJSRuntime(pRuntime) {
26 CJS_Value::CJS_Value(v8::Isolate* isolate, v8::Local<v8::Value> pValue, Type t)
27 : m_eType(t), m_pValue(pValue), m_isolate(isolate) {
28 } 26 }
29 27
30 CJS_Value::CJS_Value(v8::Isolate* isolate, const int& iValue) 28 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue, Type t)
31 : m_isolate(isolate) { 29 : m_eType(t), m_pValue(pValue), m_pJSRuntime(pRuntime) {
30 }
31
32 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const int& iValue)
33 : m_pJSRuntime(pRuntime) {
32 operator=(iValue); 34 operator=(iValue);
33 } 35 }
34 36
35 CJS_Value::CJS_Value(v8::Isolate* isolate, const bool& bValue) 37 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const bool& bValue)
36 : m_isolate(isolate) { 38 : m_pJSRuntime(pRuntime) {
37 operator=(bValue); 39 operator=(bValue);
38 } 40 }
39 41
40 CJS_Value::CJS_Value(v8::Isolate* isolate, const float& fValue) 42 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const float& fValue)
41 : m_isolate(isolate) { 43 : m_pJSRuntime(pRuntime) {
42 operator=(fValue); 44 operator=(fValue);
43 } 45 }
44 46
45 CJS_Value::CJS_Value(v8::Isolate* isolate, const double& dValue) 47 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const double& dValue)
46 : m_isolate(isolate) { 48 : m_pJSRuntime(pRuntime) {
47 operator=(dValue); 49 operator=(dValue);
48 } 50 }
49 51
50 CJS_Value::CJS_Value(v8::Isolate* isolate, v8::Local<v8::Object> pJsObj) 52 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Object> pJsObj)
51 : m_isolate(isolate) { 53 : m_pJSRuntime(pRuntime) {
52 operator=(pJsObj); 54 operator=(pJsObj);
53 } 55 }
54 56
55 CJS_Value::CJS_Value(v8::Isolate* isolate, CJS_Object* pJsObj) 57 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, CJS_Object* pJsObj)
56 : m_isolate(isolate) { 58 : m_pJSRuntime(pRuntime) {
57 operator=(pJsObj); 59 operator=(pJsObj);
58 } 60 }
59 61
60 CJS_Value::CJS_Value(v8::Isolate* isolate, CJS_Document* pJsDoc) 62 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, CJS_Document* pJsDoc)
61 : m_isolate(isolate) { 63 : m_pJSRuntime(pRuntime) {
62 m_eType = VT_object; 64 m_eType = VT_object;
63 if (pJsDoc) 65 if (pJsDoc)
64 m_pValue = pJsDoc->ToV8Object(); 66 m_pValue = pJsDoc->ToV8Object();
65 } 67 }
66 68
67 CJS_Value::CJS_Value(v8::Isolate* isolate, const FX_WCHAR* pWstr) 69 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const FX_WCHAR* pWstr)
68 : m_isolate(isolate) { 70 : m_pJSRuntime(pRuntime) {
69 operator=(pWstr); 71 operator=(pWstr);
70 } 72 }
71 73
72 CJS_Value::CJS_Value(v8::Isolate* isolate, const FX_CHAR* pStr) 74 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const FX_CHAR* pStr)
73 : m_isolate(isolate) { 75 : m_pJSRuntime(pRuntime) {
74 operator=(pStr); 76 operator=(pStr);
75 } 77 }
76 78
77 CJS_Value::CJS_Value(v8::Isolate* isolate, CJS_Array& array) 79 CJS_Value::CJS_Value(CJS_Runtime* pRuntime, CJS_Array& array)
78 : m_isolate(isolate) { 80 : m_pJSRuntime(pRuntime) {
79 operator=(array); 81 operator=(array);
80 } 82 }
81 83
82 CJS_Value::~CJS_Value() {} 84 CJS_Value::~CJS_Value() {}
83 85
84 void CJS_Value::Attach(v8::Local<v8::Value> pValue, Type t) { 86 void CJS_Value::Attach(v8::Local<v8::Value> pValue, Type t) {
85 m_pValue = pValue; 87 m_pValue = pValue;
86 m_eType = t; 88 m_eType = t;
87 } 89 }
88 90
89 void CJS_Value::Attach(CJS_Value* pValue) { 91 void CJS_Value::Attach(CJS_Value* pValue) {
90 if (pValue) 92 if (pValue)
91 Attach(pValue->ToV8Value(), pValue->GetType()); 93 Attach(pValue->ToV8Value(), pValue->GetType());
92 } 94 }
93 95
94 void CJS_Value::Detach() { 96 void CJS_Value::Detach() {
95 m_pValue = v8::Local<v8::Value>(); 97 m_pValue = v8::Local<v8::Value>();
96 m_eType = VT_unknown; 98 m_eType = VT_unknown;
97 } 99 }
98 100
99 /* ----------------------------------------------------------------------------- ----------- 101 /* ----------------------------------------------------------------------------- -----------
100 */ 102 */
101 103
102 int CJS_Value::ToInt() const { 104 int CJS_Value::ToInt() const {
103 return FXJS_ToInt32(m_isolate, m_pValue); 105 return FXJS_ToInt32(m_pJSRuntime->GetIsolate(), m_pValue);
104 } 106 }
105 107
106 bool CJS_Value::ToBool() const { 108 bool CJS_Value::ToBool() const {
107 return FXJS_ToBoolean(m_isolate, m_pValue); 109 return FXJS_ToBoolean(m_pJSRuntime->GetIsolate(), m_pValue);
108 } 110 }
109 111
110 double CJS_Value::ToDouble() const { 112 double CJS_Value::ToDouble() const {
111 return FXJS_ToNumber(m_isolate, m_pValue); 113 return FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pValue);
112 } 114 }
113 115
114 float CJS_Value::ToFloat() const { 116 float CJS_Value::ToFloat() const {
115 return (float)ToDouble(); 117 return (float)ToDouble();
116 } 118 }
117 119
118 CJS_Object* CJS_Value::ToCJSObject() const { 120 CJS_Object* CJS_Value::ToCJSObject() const {
119 v8::Local<v8::Object> pObj = FXJS_ToObject(m_isolate, m_pValue); 121 v8::Local<v8::Object> pObj =
120 return (CJS_Object*)FXJS_GetPrivate(m_isolate, pObj); 122 FXJS_ToObject(m_pJSRuntime->GetIsolate(), m_pValue);
123 return (CJS_Object*)FXJS_GetPrivate(m_pJSRuntime->GetIsolate(), pObj);
121 } 124 }
122 125
123 v8::Local<v8::Object> CJS_Value::ToV8Object() const { 126 v8::Local<v8::Object> CJS_Value::ToV8Object() const {
124 return FXJS_ToObject(m_isolate, m_pValue); 127 return FXJS_ToObject(m_pJSRuntime->GetIsolate(), m_pValue);
125 } 128 }
126 129
127 CFX_WideString CJS_Value::ToCFXWideString() const { 130 CFX_WideString CJS_Value::ToCFXWideString() const {
128 return FXJS_ToString(m_isolate, m_pValue); 131 return FXJS_ToString(m_pJSRuntime->GetIsolate(), m_pValue);
129 } 132 }
130 133
131 CFX_ByteString CJS_Value::ToCFXByteString() const { 134 CFX_ByteString CJS_Value::ToCFXByteString() const {
132 return CFX_ByteString::FromUnicode(ToCFXWideString()); 135 return CFX_ByteString::FromUnicode(ToCFXWideString());
133 } 136 }
134 137
135 v8::Local<v8::Value> CJS_Value::ToV8Value() const { 138 v8::Local<v8::Value> CJS_Value::ToV8Value() const {
136 return m_pValue; 139 return m_pValue;
137 } 140 }
138 141
139 v8::Local<v8::Array> CJS_Value::ToV8Array() const { 142 v8::Local<v8::Array> CJS_Value::ToV8Array() const {
140 if (IsArrayObject()) 143 if (IsArrayObject())
141 return v8::Local<v8::Array>::Cast(FXJS_ToObject(m_isolate, m_pValue)); 144 return v8::Local<v8::Array>::Cast(
145 FXJS_ToObject(m_pJSRuntime->GetIsolate(), m_pValue));
142 return v8::Local<v8::Array>(); 146 return v8::Local<v8::Array>();
143 } 147 }
144 148
145 /* ----------------------------------------------------------------------------- ----------- 149 /* ----------------------------------------------------------------------------- -----------
146 */ 150 */
147 151
148 void CJS_Value::operator=(int iValue) { 152 void CJS_Value::operator=(int iValue) {
149 m_pValue = FXJS_NewNumber(m_isolate, iValue); 153 m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), iValue);
150 m_eType = VT_number; 154 m_eType = VT_number;
151 } 155 }
152 156
153 void CJS_Value::operator=(bool bValue) { 157 void CJS_Value::operator=(bool bValue) {
154 m_pValue = FXJS_NewBoolean(m_isolate, bValue); 158 m_pValue = FXJS_NewBoolean(m_pJSRuntime->GetIsolate(), bValue);
155 m_eType = VT_boolean; 159 m_eType = VT_boolean;
156 } 160 }
157 161
158 void CJS_Value::operator=(double dValue) { 162 void CJS_Value::operator=(double dValue) {
159 m_pValue = FXJS_NewNumber(m_isolate, dValue); 163 m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), dValue);
160 m_eType = VT_number; 164 m_eType = VT_number;
161 } 165 }
162 166
163 void CJS_Value::operator=(float fValue) { 167 void CJS_Value::operator=(float fValue) {
164 m_pValue = FXJS_NewNumber(m_isolate, fValue); 168 m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), fValue);
165 m_eType = VT_number; 169 m_eType = VT_number;
166 } 170 }
167 171
168 void CJS_Value::operator=(v8::Local<v8::Object> pObj) { 172 void CJS_Value::operator=(v8::Local<v8::Object> pObj) {
169 m_pValue = FXJS_NewObject(m_isolate, pObj); 173 m_pValue = FXJS_NewObject(m_pJSRuntime->GetIsolate(), pObj);
170 m_eType = VT_fxobject; 174 m_eType = VT_fxobject;
171 } 175 }
172 176
173 void CJS_Value::operator=(CJS_Object* pObj) { 177 void CJS_Value::operator=(CJS_Object* pObj) {
174 if (pObj) 178 if (pObj)
175 operator=(pObj->ToV8Object()); 179 operator=(pObj->ToV8Object());
176 } 180 }
177 181
178 void CJS_Value::operator=(CJS_Document* pJsDoc) { 182 void CJS_Value::operator=(CJS_Document* pJsDoc) {
179 m_eType = VT_object; 183 m_eType = VT_object;
180 if (pJsDoc) { 184 if (pJsDoc) {
181 m_pValue = pJsDoc->ToV8Object(); 185 m_pValue = pJsDoc->ToV8Object();
182 } 186 }
183 } 187 }
184 188
185 void CJS_Value::operator=(const FX_WCHAR* pWstr) { 189 void CJS_Value::operator=(const FX_WCHAR* pWstr) {
186 m_pValue = FXJS_NewString(m_isolate, (wchar_t*)pWstr); 190 m_pValue = FXJS_NewString(m_pJSRuntime->GetIsolate(), (wchar_t*)pWstr);
187 m_eType = VT_string; 191 m_eType = VT_string;
188 } 192 }
189 193
190 void CJS_Value::SetNull() { 194 void CJS_Value::SetNull() {
191 m_pValue = FXJS_NewNull(); 195 m_pValue = FXJS_NewNull();
192 m_eType = VT_null; 196 m_eType = VT_null;
193 } 197 }
194 198
195 void CJS_Value::operator=(const FX_CHAR* pStr) { 199 void CJS_Value::operator=(const FX_CHAR* pStr) {
196 operator=(CFX_WideString::FromLocal(pStr).c_str()); 200 operator=(CFX_WideString::FromLocal(pStr).c_str());
197 } 201 }
198 202
199 void CJS_Value::operator=(CJS_Array& array) { 203 void CJS_Value::operator=(CJS_Array& array) {
200 m_pValue = FXJS_NewObject2(m_isolate, (v8::Local<v8::Array>)array); 204 m_pValue =
205 FXJS_NewObject2(m_pJSRuntime->GetIsolate(), (v8::Local<v8::Array>)array);
201 m_eType = VT_object; 206 m_eType = VT_object;
202 } 207 }
203 208
204 void CJS_Value::operator=(CJS_Date& date) { 209 void CJS_Value::operator=(CJS_Date& date) {
205 m_pValue = FXJS_NewDate(m_isolate, (double)date); 210 m_pValue = FXJS_NewDate(m_pJSRuntime->GetIsolate(), (double)date);
206 m_eType = VT_date; 211 m_eType = VT_date;
207 } 212 }
208 213
209 void CJS_Value::operator=(CJS_Value value) { 214 void CJS_Value::operator=(CJS_Value value) {
210 m_pValue = value.ToV8Value(); 215 m_pValue = value.ToV8Value();
211 m_eType = value.m_eType; 216 m_eType = value.m_eType;
212 m_isolate = value.m_isolate; 217 m_pJSRuntime = value.m_pJSRuntime;
213 } 218 }
214 219
215 /* ----------------------------------------------------------------------------- ----------- 220 /* ----------------------------------------------------------------------------- -----------
216 */ 221 */
217 222
218 CJS_Value::Type CJS_Value::GetType() const { 223 CJS_Value::Type CJS_Value::GetType() const {
219 if (m_pValue.IsEmpty()) 224 if (m_pValue.IsEmpty())
220 return VT_unknown; 225 return VT_unknown;
221 if (m_pValue->IsString()) 226 if (m_pValue->IsString())
222 return VT_string; 227 return VT_string;
(...skipping 20 matching lines...) Expand all
243 248
244 FX_BOOL CJS_Value::IsDateObject() const { 249 FX_BOOL CJS_Value::IsDateObject() const {
245 if (m_pValue.IsEmpty()) 250 if (m_pValue.IsEmpty())
246 return FALSE; 251 return FALSE;
247 return m_pValue->IsDate(); 252 return m_pValue->IsDate();
248 } 253 }
249 254
250 // CJS_Value::operator CJS_Array() 255 // CJS_Value::operator CJS_Array()
251 FX_BOOL CJS_Value::ConvertToArray(CJS_Array& array) const { 256 FX_BOOL CJS_Value::ConvertToArray(CJS_Array& array) const {
252 if (IsArrayObject()) { 257 if (IsArrayObject()) {
253 array.Attach(FXJS_ToArray(m_isolate, m_pValue)); 258 array.Attach(FXJS_ToArray(m_pJSRuntime->GetIsolate(), m_pValue));
254 return TRUE; 259 return TRUE;
255 } 260 }
256 261
257 return FALSE; 262 return FALSE;
258 } 263 }
259 264
260 FX_BOOL CJS_Value::ConvertToDate(CJS_Date& date) const { 265 FX_BOOL CJS_Value::ConvertToDate(CJS_Date& date) const {
261 // if (GetType() == VT_date) 266 // if (GetType() == VT_date)
262 // { 267 // {
263 // date = (double)(*this); 268 // date = (double)(*this);
264 // return TRUE; 269 // return TRUE;
265 // } 270 // }
266 271
267 if (IsDateObject()) { 272 if (IsDateObject()) {
268 date.Attach(m_pValue); 273 date.Attach(m_pValue);
269 return TRUE; 274 return TRUE;
270 } 275 }
271 276
272 return FALSE; 277 return FALSE;
273 } 278 }
274 279
275 /* ---------------------------- CJS_PropValue ---------------------------- */ 280 /* ---------------------------- CJS_PropValue ---------------------------- */
276 281
277 CJS_PropValue::CJS_PropValue(const CJS_Value& value) 282 CJS_PropValue::CJS_PropValue(const CJS_Value& value)
278 : CJS_Value(value), m_bIsSetting(0) {} 283 : CJS_Value(value), m_bIsSetting(0) {}
279 284
280 CJS_PropValue::CJS_PropValue(v8::Isolate* isolate) 285 CJS_PropValue::CJS_PropValue(CJS_Runtime* pRuntime)
281 : CJS_Value(isolate), m_bIsSetting(0) {} 286 : CJS_Value(pRuntime), m_bIsSetting(0) {
282
283 CJS_PropValue::~CJS_PropValue() {}
284
285 FX_BOOL CJS_PropValue::IsSetting() {
286 return m_bIsSetting;
287 } 287 }
288 288
289 FX_BOOL CJS_PropValue::IsGetting() { 289 CJS_PropValue::~CJS_PropValue() {
290 return !m_bIsSetting;
291 } 290 }
292 291
293 void CJS_PropValue::operator<<(int iValue) { 292 void CJS_PropValue::operator<<(int iValue) {
294 ASSERT(!m_bIsSetting); 293 ASSERT(!m_bIsSetting);
295 CJS_Value::operator=(iValue); 294 CJS_Value::operator=(iValue);
296 } 295 }
297 296
298 void CJS_PropValue::operator>>(int& iValue) const { 297 void CJS_PropValue::operator>>(int& iValue) const {
299 ASSERT(m_bIsSetting); 298 ASSERT(m_bIsSetting);
300 iValue = CJS_Value::ToInt(); 299 iValue = CJS_Value::ToInt();
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 398
400 void CJS_PropValue::operator<<(CJS_Date& date) { 399 void CJS_PropValue::operator<<(CJS_Date& date) {
401 ASSERT(!m_bIsSetting); 400 ASSERT(!m_bIsSetting);
402 CJS_Value::operator=(date); 401 CJS_Value::operator=(date);
403 } 402 }
404 403
405 CJS_PropValue::operator v8::Local<v8::Value>() const { 404 CJS_PropValue::operator v8::Local<v8::Value>() const {
406 return m_pValue; 405 return m_pValue;
407 } 406 }
408 407
409 /* ======================================== CJS_Array 408 CJS_Array::CJS_Array(CJS_Runtime* pRuntime) : m_pJSRuntime(pRuntime) {
410 * ========================================= */ 409 }
411 CJS_Array::CJS_Array(v8::Isolate* isolate) : m_isolate(isolate) {}
412 410
413 CJS_Array::~CJS_Array() {} 411 CJS_Array::~CJS_Array() {}
414 412
415 void CJS_Array::Attach(v8::Local<v8::Array> pArray) { 413 void CJS_Array::Attach(v8::Local<v8::Array> pArray) {
416 m_pArray = pArray; 414 m_pArray = pArray;
417 } 415 }
418 416
419 FX_BOOL CJS_Array::IsAttached() { 417 FX_BOOL CJS_Array::IsAttached() {
420 return FALSE; 418 return FALSE;
421 } 419 }
422 420
423 void CJS_Array::GetElement(unsigned index, CJS_Value& value) { 421 void CJS_Array::GetElement(unsigned index, CJS_Value& value) {
424 if (m_pArray.IsEmpty()) 422 if (m_pArray.IsEmpty())
425 return; 423 return;
426 v8::Local<v8::Value> p = FXJS_GetArrayElement(m_isolate, m_pArray, index); 424 v8::Local<v8::Value> p =
425 FXJS_GetArrayElement(m_pJSRuntime->GetIsolate(), m_pArray, index);
427 value.Attach(p, CJS_Value::VT_object); 426 value.Attach(p, CJS_Value::VT_object);
428 } 427 }
429 428
430 void CJS_Array::SetElement(unsigned index, CJS_Value value) { 429 void CJS_Array::SetElement(unsigned index, CJS_Value value) {
431 if (m_pArray.IsEmpty()) 430 if (m_pArray.IsEmpty())
432 m_pArray = FXJS_NewArray(m_isolate); 431 m_pArray = FXJS_NewArray(m_pJSRuntime->GetIsolate());
433 432
434 FXJS_PutArrayElement(m_isolate, m_pArray, index, value.ToV8Value()); 433 FXJS_PutArrayElement(m_pJSRuntime->GetIsolate(), m_pArray, index,
434 value.ToV8Value());
435 } 435 }
436 436
437 int CJS_Array::GetLength() { 437 int CJS_Array::GetLength() {
438 if (m_pArray.IsEmpty()) 438 if (m_pArray.IsEmpty())
439 return 0; 439 return 0;
440 return FXJS_GetArrayLength(m_pArray); 440 return FXJS_GetArrayLength(m_pArray);
441 } 441 }
442 442
443 CJS_Array::operator v8::Local<v8::Array>() { 443 CJS_Array::operator v8::Local<v8::Array>() {
444 if (m_pArray.IsEmpty()) 444 if (m_pArray.IsEmpty())
445 m_pArray = FXJS_NewArray(m_isolate); 445 m_pArray = FXJS_NewArray(m_pJSRuntime->GetIsolate());
446 446
447 return m_pArray; 447 return m_pArray;
448 } 448 }
449 449
450 /* ======================================== CJS_Date 450 CJS_Date::CJS_Date(CJS_Runtime* pRuntime) : m_pJSRuntime(pRuntime) {
451 * ========================================= */
452
453 CJS_Date::CJS_Date(v8::Isolate* isolate) : m_isolate(isolate) {}
454
455 CJS_Date::CJS_Date(v8::Isolate* isolate, double dMsec_time) {
456 m_isolate = isolate;
457 m_pDate = FXJS_NewDate(isolate, dMsec_time);
458 } 451 }
459 452
460 CJS_Date::CJS_Date(v8::Isolate* isolate, 453 CJS_Date::CJS_Date(CJS_Runtime* pRuntime, double dMsecTime)
454 : m_pJSRuntime(pRuntime) {
455 m_pDate = FXJS_NewDate(pRuntime->GetIsolate(), dMsecTime);
456 }
457
458 CJS_Date::CJS_Date(CJS_Runtime* pRuntime,
461 int year, 459 int year,
462 int mon, 460 int mon,
463 int day, 461 int day,
464 int hour, 462 int hour,
465 int min, 463 int min,
466 int sec) { 464 int sec)
467 m_isolate = isolate; 465 : m_pJSRuntime(pRuntime) {
468 m_pDate = FXJS_NewDate(isolate, MakeDate(year, mon, day, hour, min, sec, 0)); 466 m_pDate = FXJS_NewDate(pRuntime->GetIsolate(),
467 MakeDate(year, mon, day, hour, min, sec, 0));
469 } 468 }
470 469
471 double CJS_Date::MakeDate(int year, 470 double CJS_Date::MakeDate(int year,
472 int mon, 471 int mon,
473 int day, 472 int day,
474 int hour, 473 int hour,
475 int min, 474 int min,
476 int sec, 475 int sec,
477 int ms) { 476 int ms) {
478 return JS_MakeDate(JS_MakeDay(year, mon, day), 477 return JS_MakeDate(JS_MakeDay(year, mon, day),
479 JS_MakeTime(hour, min, sec, ms)); 478 JS_MakeTime(hour, min, sec, ms));
480 } 479 }
481 480
482 CJS_Date::~CJS_Date() {} 481 CJS_Date::~CJS_Date() {}
483 482
484 FX_BOOL CJS_Date::IsValidDate() { 483 FX_BOOL CJS_Date::IsValidDate() {
485 if (m_pDate.IsEmpty()) 484 if (m_pDate.IsEmpty())
486 return FALSE; 485 return FALSE;
487 return !JS_PortIsNan(FXJS_ToNumber(m_isolate, m_pDate)); 486 return !JS_PortIsNan(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate));
488 } 487 }
489 488
490 void CJS_Date::Attach(v8::Local<v8::Value> pDate) { 489 void CJS_Date::Attach(v8::Local<v8::Value> pDate) {
491 m_pDate = pDate; 490 m_pDate = pDate;
492 } 491 }
493 492
494 int CJS_Date::GetYear() { 493 int CJS_Date::GetYear() {
495 if (IsValidDate()) 494 if (IsValidDate())
496 return JS_GetYearFromTime(JS_LocalTime(FXJS_ToNumber(m_isolate, m_pDate))); 495 return JS_GetYearFromTime(
496 JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
497 497
498 return 0; 498 return 0;
499 } 499 }
500 500
501 void CJS_Date::SetYear(int iYear) { 501 void CJS_Date::SetYear(int iYear) {
502 double date = MakeDate(iYear, GetMonth(), GetDay(), GetHours(), GetMinutes(), 502 double date = MakeDate(iYear, GetMonth(), GetDay(), GetHours(), GetMinutes(),
503 GetSeconds(), 0); 503 GetSeconds(), 0);
504 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_isolate, date)); 504 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
505 } 505 }
506 506
507 int CJS_Date::GetMonth() { 507 int CJS_Date::GetMonth() {
508 if (IsValidDate()) 508 if (IsValidDate())
509 return JS_GetMonthFromTime(JS_LocalTime(FXJS_ToNumber(m_isolate, m_pDate))); 509 return JS_GetMonthFromTime(
510 JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
510 511
511 return 0; 512 return 0;
512 } 513 }
513 514
514 void CJS_Date::SetMonth(int iMonth) { 515 void CJS_Date::SetMonth(int iMonth) {
515 double date = MakeDate(GetYear(), iMonth, GetDay(), GetHours(), GetMinutes(), 516 double date = MakeDate(GetYear(), iMonth, GetDay(), GetHours(), GetMinutes(),
516 GetSeconds(), 0); 517 GetSeconds(), 0);
517 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_isolate, date)); 518 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
518 } 519 }
519 520
520 int CJS_Date::GetDay() { 521 int CJS_Date::GetDay() {
521 if (IsValidDate()) 522 if (IsValidDate())
522 return JS_GetDayFromTime(JS_LocalTime(FXJS_ToNumber(m_isolate, m_pDate))); 523 return JS_GetDayFromTime(
524 JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
523 525
524 return 0; 526 return 0;
525 } 527 }
526 528
527 void CJS_Date::SetDay(int iDay) { 529 void CJS_Date::SetDay(int iDay) {
528 double date = MakeDate(GetYear(), GetMonth(), iDay, GetHours(), GetMinutes(), 530 double date = MakeDate(GetYear(), GetMonth(), iDay, GetHours(), GetMinutes(),
529 GetSeconds(), 0); 531 GetSeconds(), 0);
530 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_isolate, date)); 532 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
531 } 533 }
532 534
533 int CJS_Date::GetHours() { 535 int CJS_Date::GetHours() {
534 if (IsValidDate()) 536 if (IsValidDate())
535 return JS_GetHourFromTime(JS_LocalTime(FXJS_ToNumber(m_isolate, m_pDate))); 537 return JS_GetHourFromTime(
538 JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
536 539
537 return 0; 540 return 0;
538 } 541 }
539 542
540 void CJS_Date::SetHours(int iHours) { 543 void CJS_Date::SetHours(int iHours) {
541 double date = MakeDate(GetYear(), GetMonth(), GetDay(), iHours, GetMinutes(), 544 double date = MakeDate(GetYear(), GetMonth(), GetDay(), iHours, GetMinutes(),
542 GetSeconds(), 0); 545 GetSeconds(), 0);
543 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_isolate, date)); 546 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
544 } 547 }
545 548
546 int CJS_Date::GetMinutes() { 549 int CJS_Date::GetMinutes() {
547 if (IsValidDate()) 550 if (IsValidDate())
548 return JS_GetMinFromTime(JS_LocalTime(FXJS_ToNumber(m_isolate, m_pDate))); 551 return JS_GetMinFromTime(
552 JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
549 553
550 return 0; 554 return 0;
551 } 555 }
552 556
553 void CJS_Date::SetMinutes(int minutes) { 557 void CJS_Date::SetMinutes(int minutes) {
554 double date = MakeDate(GetYear(), GetMonth(), GetDay(), GetHours(), minutes, 558 double date = MakeDate(GetYear(), GetMonth(), GetDay(), GetHours(), minutes,
555 GetSeconds(), 0); 559 GetSeconds(), 0);
556 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_isolate, date)); 560 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
557 } 561 }
558 562
559 int CJS_Date::GetSeconds() { 563 int CJS_Date::GetSeconds() {
560 if (IsValidDate()) 564 if (IsValidDate())
561 return JS_GetSecFromTime(JS_LocalTime(FXJS_ToNumber(m_isolate, m_pDate))); 565 return JS_GetSecFromTime(
566 JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
562 567
563 return 0; 568 return 0;
564 } 569 }
565 570
566 void CJS_Date::SetSeconds(int seconds) { 571 void CJS_Date::SetSeconds(int seconds) {
567 double date = MakeDate(GetYear(), GetMonth(), GetDay(), GetHours(), 572 double date = MakeDate(GetYear(), GetMonth(), GetDay(), GetHours(),
568 GetMinutes(), seconds, 0); 573 GetMinutes(), seconds, 0);
569 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_isolate, date)); 574 FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
570 } 575 }
571 576
572 CJS_Date::operator v8::Local<v8::Value>() { 577 CJS_Date::operator v8::Local<v8::Value>() {
573 return m_pDate; 578 return m_pDate;
574 } 579 }
575 580
576 CJS_Date::operator double() const { 581 CJS_Date::operator double() const {
577 if (m_pDate.IsEmpty()) 582 if (m_pDate.IsEmpty())
578 return 0.0; 583 return 0.0;
579 return FXJS_ToNumber(m_isolate, m_pDate); 584 return FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate);
580 } 585 }
581 586
582 CFX_WideString CJS_Date::ToString() const { 587 CFX_WideString CJS_Date::ToString() const {
583 if (m_pDate.IsEmpty()) 588 if (m_pDate.IsEmpty())
584 return L""; 589 return L"";
585 return FXJS_ToString(m_isolate, m_pDate); 590 return FXJS_ToString(m_pJSRuntime->GetIsolate(), m_pDate);
586 } 591 }
587 592
588 double _getLocalTZA() { 593 double _getLocalTZA() {
589 if (!FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS)) 594 if (!FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
590 return 0; 595 return 0;
591 time_t t = 0; 596 time_t t = 0;
592 time(&t); 597 time(&t);
593 localtime(&t); 598 localtime(&t);
594 #if _MSC_VER >= 1900 599 #if _MSC_VER >= 1900
595 // In gcc and in Visual Studio prior to VS 2015 'timezone' is a global 600 // In gcc and in Visual Studio prior to VS 2015 'timezone' is a global
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 return day * 86400000 + time; 862 return day * 86400000 + time;
858 } 863 }
859 864
860 bool JS_PortIsNan(double d) { 865 bool JS_PortIsNan(double d) {
861 return d != d; 866 return d != d;
862 } 867 }
863 868
864 double JS_LocalTime(double d) { 869 double JS_LocalTime(double d) {
865 return JS_GetDateTime() + _getDaylightSavingTA(d); 870 return JS_GetDateTime() + _getDaylightSavingTA(d);
866 } 871 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698