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

Side by Side Diff: fpdfsdk/src/jsapi/fxjs_v8.cpp

Issue 1235303003: Make v8 embedder data slot configurable (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: updates Created 5 years, 5 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/src/javascript/JS_Runtime.cpp ('k') | public/fpdf_formfill.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 "../../../core/include/fxcrt/fx_basic.h" 7 #include "../../../core/include/fxcrt/fx_basic.h"
8 #include "../../../core/include/fxcrt/fx_ext.h" 8 #include "../../../core/include/fxcrt/fx_ext.h"
9 #include "../../include/jsapi/fxjs_v8.h" 9 #include "../../include/jsapi/fxjs_v8.h"
10 #include "../../include/fsdk_define.h" 10 #include "../../include/fsdk_define.h"
11 #include "time.h" 11 #include "time.h"
12 #include <cmath> 12 #include <cmath>
13 #include <limits> 13 #include <limits>
14 14
15 #define VALUE_NAME_STRING L"string" 15 #define VALUE_NAME_STRING L"string"
16 #define VALUE_NAME_NUMBER L"number" 16 #define VALUE_NAME_NUMBER L"number"
17 #define VALUE_NAME_BOOLEAN L"boolean" 17 #define VALUE_NAME_BOOLEAN L"boolean"
18 #define VALUE_NAME_DATE L"date" 18 #define VALUE_NAME_DATE L"date"
19 #define VALUE_NAME_OBJECT L"object" 19 #define VALUE_NAME_OBJECT L"object"
20 #define VALUE_NAME_FXOBJ L"fxobj" 20 #define VALUE_NAME_FXOBJ L"fxobj"
21 #define VALUE_NAME_NULL L"null" 21 #define VALUE_NAME_NULL L"null"
22 #define VALUE_NAME_UNDEFINED L"undefined" 22 #define VALUE_NAME_UNDEFINED L"undefined"
23 23
24 const static FX_DWORD g_nan[2] = {0,0x7FF80000 }; 24 const static FX_DWORD g_nan[2] = {0,0x7FF80000 };
25 static double GetNan() 25 static double GetNan()
26 { 26 {
27 return *(double*)g_nan; 27 return *(double*)g_nan;
28 } 28 }
29 static unsigned int g_embedderDataSlot = 0u;
29 30
30 31
31 class CJS_PrivateData 32 class CJS_PrivateData
32 { 33 {
33 public: 34 public:
34 CJS_PrivateData():ObjDefID(-1), pPrivate(NULL) {} 35 CJS_PrivateData():ObjDefID(-1), pPrivate(NULL) {}
35 int ObjDefID; 36 int ObjDefID;
36 void* pPrivate; 37 void* pPrivate;
37 }; 38 };
38 39
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 73
73 v8::Global<v8::ObjectTemplate> m_objTemplate; 74 v8::Global<v8::ObjectTemplate> m_objTemplate;
74 v8::Global<v8::Object> m_StaticObj; 75 v8::Global<v8::Object> m_StaticObj;
75 }; 76 };
76 77
77 int JS_DefineObj(IJS_Runtime* pJSRuntime, const wchar_t* sObjName, FXJSOBJTYPE e ObjType, LP_CONSTRUCTOR pConstructor, LP_DESTRUCTOR pDestructor, unsigned bApply New) 78 int JS_DefineObj(IJS_Runtime* pJSRuntime, const wchar_t* sObjName, FXJSOBJTYPE e ObjType, LP_CONSTRUCTOR pConstructor, LP_DESTRUCTOR pDestructor, unsigned bApply New)
78 { 79 {
79 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; 80 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
80 v8::Isolate::Scope isolate_scope(isolate); 81 v8::Isolate::Scope isolate_scope(isolate);
81 v8::HandleScope handle_scope(isolate); 82 v8::HandleScope handle_scope(isolate);
82 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 83 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
83 if(!pArray) 84 if(!pArray)
84 { 85 {
85 pArray = new CFX_PtrArray(); 86 pArray = new CFX_PtrArray();
86 » » isolate->SetData(0, pArray); 87 » » isolate->SetData(g_embedderDataSlot, pArray);
87 } 88 }
88 CJS_ObjDefintion* pObjDef = new CJS_ObjDefintion(isolate, sObjName, eObj Type, pConstructor, pDestructor, bApplyNew); 89 CJS_ObjDefintion* pObjDef = new CJS_ObjDefintion(isolate, sObjName, eObj Type, pConstructor, pDestructor, bApplyNew);
89 pArray->Add(pObjDef); 90 pArray->Add(pObjDef);
90 return pArray->GetSize()-1; 91 return pArray->GetSize()-1;
91 } 92 }
92 93
93 int JS_DefineObjMethod(IJS_Runtime* pJSRuntime, int nObjDefnID, const wchar_t* s MethodName, v8::FunctionCallback pMethodCall) 94 int JS_DefineObjMethod(IJS_Runtime* pJSRuntime, int nObjDefnID, const wchar_t* s MethodName, v8::FunctionCallback pMethodCall)
94 { 95 {
95 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; 96 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
96 v8::Isolate::Scope isolate_scope(isolate); 97 v8::Isolate::Scope isolate_scope(isolate);
97 v8::HandleScope handle_scope(isolate); 98 v8::HandleScope handle_scope(isolate);
98 99
99 CFX_WideString ws = CFX_WideString(sMethodName); 100 CFX_WideString ws = CFX_WideString(sMethodName);
100 CFX_ByteString bsMethodName = ws.UTF8Encode(); 101 CFX_ByteString bsMethodName = ws.UTF8Encode();
101 102
102 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 103 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
103 if(!pArray) return 0; 104 if(!pArray) return 0;
104 105
105 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0; 106 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0;
106 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ; 107 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ;
107 v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::N ew(isolate, pObjDef->m_objTemplate); 108 v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::N ew(isolate, pObjDef->m_objTemplate);
108 objTemp->Set(v8::String::NewFromUtf8(isolate, bsMethodName.c_str(), v8:: NewStringType::kNormal).ToLocalChecked(), v8::FunctionTemplate::New(isolate, pMe thodCall), v8::ReadOnly); 109 objTemp->Set(v8::String::NewFromUtf8(isolate, bsMethodName.c_str(), v8:: NewStringType::kNormal).ToLocalChecked(), v8::FunctionTemplate::New(isolate, pMe thodCall), v8::ReadOnly);
109 pObjDef->m_objTemplate.Reset(isolate,objTemp); 110 pObjDef->m_objTemplate.Reset(isolate,objTemp);
110 return 0; 111 return 0;
111 } 112 }
112 113
113 int JS_DefineObjProperty(IJS_Runtime* pJSRuntime, int nObjDefnID, const wchar_t* sPropName, v8::AccessorGetterCallback pPropGet, v8::AccessorSetterCallback pPro pPut) 114 int JS_DefineObjProperty(IJS_Runtime* pJSRuntime, int nObjDefnID, const wchar_t* sPropName, v8::AccessorGetterCallback pPropGet, v8::AccessorSetterCallback pPro pPut)
114 { 115 {
115 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; 116 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
116 v8::Isolate::Scope isolate_scope(isolate); 117 v8::Isolate::Scope isolate_scope(isolate);
117 v8::HandleScope handle_scope(isolate); 118 v8::HandleScope handle_scope(isolate);
118 119
119 CFX_WideString ws = CFX_WideString(sPropName); 120 CFX_WideString ws = CFX_WideString(sPropName);
120 CFX_ByteString bsPropertyName = ws.UTF8Encode(); 121 CFX_ByteString bsPropertyName = ws.UTF8Encode();
121 122
122 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 123 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
123 if(!pArray) return 0; 124 if(!pArray) return 0;
124 125
125 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0; 126 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0;
126 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ; 127 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ;
127 v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::N ew(isolate, pObjDef->m_objTemplate); 128 v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::N ew(isolate, pObjDef->m_objTemplate);
128 objTemp->SetAccessor(v8::String::NewFromUtf8(isolate, bsPropertyName.c_s tr(), v8::NewStringType::kNormal).ToLocalChecked(), pPropGet, pPropPut); 129 objTemp->SetAccessor(v8::String::NewFromUtf8(isolate, bsPropertyName.c_s tr(), v8::NewStringType::kNormal).ToLocalChecked(), pPropGet, pPropPut);
129 pObjDef->m_objTemplate.Reset(isolate,objTemp); 130 pObjDef->m_objTemplate.Reset(isolate,objTemp);
130 return 0; 131 return 0;
131 } 132 }
132 133
133 int JS_DefineObjAllProperties(IJS_Runtime* pJSRuntime, int nObjDefnID, v8::N amedPropertyQueryCallback pPropQurey, v8::NamedPropertyGetterCallback pPropGet, v8::NamedPropertySetterCallback pPropPut, v8::NamedPropertyDeleterCallback pProp Del) 134 int JS_DefineObjAllProperties(IJS_Runtime* pJSRuntime, int nObjDefnID, v8::N amedPropertyQueryCallback pPropQurey, v8::NamedPropertyGetterCallback pPropGet, v8::NamedPropertySetterCallback pPropPut, v8::NamedPropertyDeleterCallback pProp Del)
134 { 135 {
135 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; 136 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
136 v8::Isolate::Scope isolate_scope(isolate); 137 v8::Isolate::Scope isolate_scope(isolate);
137 v8::HandleScope handle_scope(isolate); 138 v8::HandleScope handle_scope(isolate);
138 139
139 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 140 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
140 if(!pArray) return 0; 141 if(!pArray) return 0;
141 142
142 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0; 143 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0;
143 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ; 144 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ;
144 v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::N ew(isolate, pObjDef->m_objTemplate); 145 v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::N ew(isolate, pObjDef->m_objTemplate);
145 objTemp->SetNamedPropertyHandler(pPropGet, pPropPut, pPropQurey, pPropDe l); 146 objTemp->SetNamedPropertyHandler(pPropGet, pPropPut, pPropQurey, pPropDe l);
146 pObjDef->m_objTemplate.Reset(isolate,objTemp); 147 pObjDef->m_objTemplate.Reset(isolate,objTemp);
147 return 0; 148 return 0;
148 } 149 }
149 150
150 int JS_DefineObjConst(IJS_Runtime* pJSRuntime, int nObjDefnID, const wchar_t* sC onstName, v8::Local<v8::Value> pDefault) 151 int JS_DefineObjConst(IJS_Runtime* pJSRuntime, int nObjDefnID, const wchar_t* sC onstName, v8::Local<v8::Value> pDefault)
151 { 152 {
152 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; 153 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
153 v8::Isolate::Scope isolate_scope(isolate); 154 v8::Isolate::Scope isolate_scope(isolate);
154 v8::HandleScope handle_scope(isolate); 155 v8::HandleScope handle_scope(isolate);
155 156
156 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 157 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
157 if(!pArray) return 0; 158 if(!pArray) return 0;
158 159
159 CFX_WideString ws = CFX_WideString(sConstName); 160 CFX_WideString ws = CFX_WideString(sConstName);
160 CFX_ByteString bsConstName = ws.UTF8Encode(); 161 CFX_ByteString bsConstName = ws.UTF8Encode();
161 162
162 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0; 163 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return 0;
163 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ; 164 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ;
164 v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::N ew(isolate, pObjDef->m_objTemplate); 165 v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::N ew(isolate, pObjDef->m_objTemplate);
165 objTemp->Set(isolate, bsConstName.c_str(), pDefault); 166 objTemp->Set(isolate, bsConstName.c_str(), pDefault);
166 pObjDef->m_objTemplate.Reset(isolate,objTemp); 167 pObjDef->m_objTemplate.Reset(isolate,objTemp);
167 return 0; 168 return 0;
168 } 169 }
169 170
170 static v8::Global<v8::ObjectTemplate>& _getGlobalObjectTemplate(IJS_Runtime* pJS Runtime) 171 static v8::Global<v8::ObjectTemplate>& _getGlobalObjectTemplate(IJS_Runtime* pJS Runtime)
171 { 172 {
172 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; 173 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
173 v8::Isolate::Scope isolate_scope(isolate); 174 v8::Isolate::Scope isolate_scope(isolate);
174 v8::HandleScope handle_scope(isolate); 175 v8::HandleScope handle_scope(isolate);
175 176
176 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 177 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
177 ASSERT(pArray != NULL); 178 ASSERT(pArray != NULL);
178 for(int i=0; i<pArray->GetSize(); i++) 179 for(int i=0; i<pArray->GetSize(); i++)
179 { 180 {
180 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); 181 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
181 if(pObjDef->m_bSetAsGlobalObject) 182 if(pObjDef->m_bSetAsGlobalObject)
182 return pObjDef->m_objTemplate; 183 return pObjDef->m_objTemplate;
183 } 184 }
184 static v8::Global<v8::ObjectTemplate> gloabalObjectTemplate; 185 static v8::Global<v8::ObjectTemplate> gloabalObjectTemplate;
185 return gloabalObjectTemplate; 186 return gloabalObjectTemplate;
186 } 187 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 v8::Isolate::Scope isolate_scope(isolate); 240 v8::Isolate::Scope isolate_scope(isolate);
240 v8::HandleScope handle_scope(isolate); 241 v8::HandleScope handle_scope(isolate);
241 242
242 v8::Global<v8::ObjectTemplate>& globalObjTemp = _getGlobalObjectTemplate (pJSRuntime); 243 v8::Global<v8::ObjectTemplate>& globalObjTemp = _getGlobalObjectTemplate (pJSRuntime);
243 v8::Local<v8::Context> v8Context = v8::Context::New(isolate, NULL, v8::L ocal<v8::ObjectTemplate>::New(isolate, globalObjTemp)); 244 v8::Local<v8::Context> v8Context = v8::Context::New(isolate, NULL, v8::L ocal<v8::ObjectTemplate>::New(isolate, globalObjTemp));
244 v8::Context::Scope context_scope(v8Context); 245 v8::Context::Scope context_scope(v8Context);
245 246
246 v8::Local<v8::External> ptr = v8::External::New(isolate, pFXRuntime); 247 v8::Local<v8::External> ptr = v8::External::New(isolate, pFXRuntime);
247 v8Context->SetEmbedderData(1, ptr); 248 v8Context->SetEmbedderData(1, ptr);
248 249
249 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 250 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
250 if(!pArray) return; 251 if(!pArray) return;
251 252
252 for(int i=0; i<pArray->GetSize(); i++) 253 for(int i=0; i<pArray->GetSize(); i++)
253 { 254 {
254 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); 255 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
255 CFX_WideString ws = CFX_WideString(pObjDef->objName); 256 CFX_WideString ws = CFX_WideString(pObjDef->objName);
256 CFX_ByteString bs = ws.UTF8Encode(); 257 CFX_ByteString bs = ws.UTF8Encode();
257 v8::Local<v8::String> objName = v8::String::NewFromUtf8(isolate, bs.c_str(), v8::NewStringType::kNormal, bs.GetLength()).ToLocalChecked(); 258 v8::Local<v8::String> objName = v8::String::NewFromUtf8(isolate, bs.c_str(), v8::NewStringType::kNormal, bs.GetLength()).ToLocalChecked();
258 259
259 260
(...skipping 23 matching lines...) Expand all
283 } 284 }
284 285
285 void JS_ReleaseRuntime(IJS_Runtime* pJSRuntime, v8::Global<v8::Context>& v8Persi stentContext) 286 void JS_ReleaseRuntime(IJS_Runtime* pJSRuntime, v8::Global<v8::Context>& v8Persi stentContext)
286 { 287 {
287 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; 288 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
288 v8::Isolate::Scope isolate_scope(isolate); 289 v8::Isolate::Scope isolate_scope(isolate);
289 v8::HandleScope handle_scope(isolate); 290 v8::HandleScope handle_scope(isolate);
290 v8::Local<v8::Context> context = v8::Local<v8::Context>::New(isolate, v8 PersistentContext); 291 v8::Local<v8::Context> context = v8::Local<v8::Context>::New(isolate, v8 PersistentContext);
291 v8::Context::Scope context_scope(context); 292 v8::Context::Scope context_scope(context);
292 293
293 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 294 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
294 if(!pArray) return ; 295 if(!pArray) return ;
295 296
296 for(int i=0; i<pArray->GetSize(); i++) 297 for(int i=0; i<pArray->GetSize(); i++)
297 { 298 {
298 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); 299 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
299 if(!pObjDef->m_StaticObj.IsEmpty()) 300 if(!pObjDef->m_StaticObj.IsEmpty())
300 { 301 {
301 v8::Local<v8::Object> pObj = v8::Local<v8::Object>::New( isolate, pObjDef->m_StaticObj); 302 v8::Local<v8::Object> pObj = v8::Local<v8::Object>::New( isolate, pObjDef->m_StaticObj);
302 if(pObjDef->m_pDestructor) 303 if(pObjDef->m_pDestructor)
303 pObjDef->m_pDestructor(pObj); 304 pObjDef->m_pDestructor(pObj);
304 JS_FreePrivate(pObj); 305 JS_FreePrivate(pObj);
305 } 306 }
306 delete pObjDef; 307 delete pObjDef;
307 } 308 }
308 delete pArray; 309 delete pArray;
309 » isolate->SetData(0,NULL); 310 » isolate->SetData(g_embedderDataSlot,NULL);
310 } 311 }
311 312
312 void JS_Initial() 313 void JS_Initial(unsigned int embedderDataSlot)
313 { 314 {
315 g_embedderDataSlot = embedderDataSlot;
314 } 316 }
315 void JS_Release() 317 void JS_Release()
316 { 318 {
317 319
318 } 320 }
319 int JS_Parse(IJS_Runtime* pJSRuntime, IFXJS_Context* pJSContext, const wchar_t* script, long length, FXJSErr* perror) 321 int JS_Parse(IJS_Runtime* pJSRuntime, IFXJS_Context* pJSContext, const wchar_t* script, long length, FXJSErr* perror)
320 { 322 {
321 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; 323 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
322 v8::Isolate::Scope isolate_scope(isolate); 324 v8::Isolate::Scope isolate_scope(isolate);
323 v8::TryCatch try_catch(isolate); 325 v8::TryCatch try_catch(isolate);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 v8::Isolate::Scope isolate_scope(isolate); 367 v8::Isolate::Scope isolate_scope(isolate);
366 v8::Local<v8::Context> context = isolate->GetCurrentContext(); 368 v8::Local<v8::Context> context = isolate->GetCurrentContext();
367 if(-1 == nObjDefnID) 369 if(-1 == nObjDefnID)
368 { 370 {
369 v8::Local<v8::ObjectTemplate> objTempl = v8::ObjectTemplate::New (isolate); 371 v8::Local<v8::ObjectTemplate> objTempl = v8::ObjectTemplate::New (isolate);
370 v8::Local<v8::Object> obj; 372 v8::Local<v8::Object> obj;
371 if (objTempl->NewInstance(context).ToLocal(&obj)) return obj; 373 if (objTempl->NewInstance(context).ToLocal(&obj)) return obj;
372 return v8::Local<v8::Object>(); 374 return v8::Local<v8::Object>();
373 } 375 }
374 376
375 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 377 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
376 if(!pArray) return v8::Local<v8::Object>(); 378 if(!pArray) return v8::Local<v8::Object>();
377 379
378 380
379 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return v8::Local<v8:: Object>(); 381 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return v8::Local<v8:: Object>();
380 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ; 382 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ;
381 383
382 v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::N ew(isolate, pObjDef->m_objTemplate); 384 v8::Local<v8::ObjectTemplate> objTemp = v8::Local<v8::ObjectTemplate>::N ew(isolate, pObjDef->m_objTemplate);
383 v8::Local<v8::Object> obj; 385 v8::Local<v8::Object> obj;
384 if (!objTemp->NewInstance(context).ToLocal(&obj)) return v8::Local<v8::O bject>(); 386 if (!objTemp->NewInstance(context).ToLocal(&obj)) return v8::Local<v8::O bject>();
385 387
386 CJS_PrivateData* pPrivateData = new CJS_PrivateData; 388 CJS_PrivateData* pPrivateData = new CJS_PrivateData;
387 pPrivateData->ObjDefID = nObjDefnID; 389 pPrivateData->ObjDefID = nObjDefnID;
388 390
389 obj->SetAlignedPointerInInternalField(0, pPrivateData); 391 obj->SetAlignedPointerInInternalField(0, pPrivateData);
390 if(pObjDef->m_pConstructor) 392 if(pObjDef->m_pConstructor)
391 pObjDef->m_pConstructor(pJSContext, obj, context->Global()->GetP rototype()->ToObject(context).ToLocalChecked()); 393 pObjDef->m_pConstructor(pJSContext, obj, context->Global()->GetP rototype()->ToObject(context).ToLocalChecked());
392 394
393 return obj; 395 return obj;
394 } 396 }
395 397
396 v8::Local<v8::Object> JS_GetStaticObj(IJS_Runtime* pJSRuntime, int nObjDefnID) 398 v8::Local<v8::Object> JS_GetStaticObj(IJS_Runtime* pJSRuntime, int nObjDefnID)
397 { 399 {
398 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; 400 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
399 v8::Isolate::Scope isolate_scope(isolate); 401 v8::Isolate::Scope isolate_scope(isolate);
400 402
401 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 403 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
402 if(!pArray) return v8::Local<v8::Object>(); 404 if(!pArray) return v8::Local<v8::Object>();
403 405
404 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return v8::Local<v8:: Object>(); 406 if(nObjDefnID<0 || nObjDefnID>= pArray->GetSize()) return v8::Local<v8:: Object>();
405 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ; 407 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID) ;
406 v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(isolate,pObjDef-> m_StaticObj); 408 v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(isolate,pObjDef-> m_StaticObj);
407 return obj; 409 return obj;
408 } 410 }
409 411
410 void JS_SetThisObj(IJS_Runtime* pJSRuntime, int nThisObjID) 412 void JS_SetThisObj(IJS_Runtime* pJSRuntime, int nThisObjID)
411 { 413 {
412 //Do nothing. 414 //Do nothing.
413 } 415 }
414 v8::Local<v8::Object> JS_GetThisObj(IJS_Runtime * pJSRuntime) 416 v8::Local<v8::Object> JS_GetThisObj(IJS_Runtime * pJSRuntime)
415 { 417 {
416 //Return the global object. 418 //Return the global object.
417 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; 419 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
418 v8::Isolate::Scope isolate_scope(isolate); 420 v8::Isolate::Scope isolate_scope(isolate);
419 421
420 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 422 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
421 if(!pArray) return v8::Local<v8::Object>(); 423 if(!pArray) return v8::Local<v8::Object>();
422 424
423 v8::Local<v8::Context> context = isolate->GetCurrentContext(); 425 v8::Local<v8::Context> context = isolate->GetCurrentContext();
424 return context->Global()->GetPrototype()->ToObject(context).ToLocalCheck ed(); 426 return context->Global()->GetPrototype()->ToObject(context).ToLocalCheck ed();
425 } 427 }
426 428
427 int JS_GetObjDefnID(v8::Local<v8::Object> pObj) 429 int JS_GetObjDefnID(v8::Local<v8::Object> pObj)
428 { 430 {
429 if(pObj.IsEmpty() || !pObj->InternalFieldCount()) return -1; 431 if(pObj.IsEmpty() || !pObj->InternalFieldCount()) return -1;
430 CJS_PrivateData* pPrivateData = (CJS_PrivateData*)pObj->GetAlignedPointe rFromInternalField(0); 432 CJS_PrivateData* pPrivateData = (CJS_PrivateData*)pObj->GetAlignedPointe rFromInternalField(0);
431 if(pPrivateData) 433 if(pPrivateData)
432 return pPrivateData->ObjDefID; 434 return pPrivateData->ObjDefID;
433 return -1; 435 return -1;
434 } 436 }
435 437
436 IJS_Runtime* JS_GetRuntime(v8::Local<v8::Object> pObj) 438 IJS_Runtime* JS_GetRuntime(v8::Local<v8::Object> pObj)
437 { 439 {
438 if(pObj.IsEmpty()) return NULL; 440 if(pObj.IsEmpty()) return NULL;
439 v8::Local<v8::Context> context = pObj->CreationContext(); 441 v8::Local<v8::Context> context = pObj->CreationContext();
440 if(context.IsEmpty()) return NULL; 442 if(context.IsEmpty()) return NULL;
441 return context->GetIsolate(); 443 return context->GetIsolate();
442 } 444 }
443 445
444 int JS_GetObjDefnID(IJS_Runtime * pJSRuntime, const wchar_t* pObjName) 446 int JS_GetObjDefnID(IJS_Runtime * pJSRuntime, const wchar_t* pObjName)
445 { 447 {
446 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; 448 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime;
447 v8::Isolate::Scope isolate_scope(isolate); 449 v8::Isolate::Scope isolate_scope(isolate);
448 450
449 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(0); 451 » CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlo t);
450 if(!pArray) return -1; 452 if(!pArray) return -1;
451 453
452 for(int i=0; i<pArray->GetSize(); i++) 454 for(int i=0; i<pArray->GetSize(); i++)
453 { 455 {
454 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); 456 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i);
455 if(FXSYS_wcscmp(pObjDef->objName, pObjName) == 0) 457 if(FXSYS_wcscmp(pObjDef->objName, pObjName) == 0)
456 return i; 458 return i;
457 } 459 }
458 return -1; 460 return -1;
459 } 461 }
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
1060 { 1062 {
1061 return d != d; 1063 return d != d;
1062 } 1064 }
1063 1065
1064 double JS_LocalTime(double d) 1066 double JS_LocalTime(double d)
1065 { 1067 {
1066 return JS_GetDateTime() + _getDaylightSavingTA(d); 1068 return JS_GetDateTime() + _getDaylightSavingTA(d);
1067 } 1069 }
1068 1070
1069 //JavaScript time implement End. 1071 //JavaScript time implement End.
OLDNEW
« no previous file with comments | « fpdfsdk/src/javascript/JS_Runtime.cpp ('k') | public/fpdf_formfill.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698