| OLD | NEW |
| 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/jsapi/include/fxjs_v8.h" | 7 #include "fpdfsdk/jsapi/include/fxjs_v8.h" |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 | 236 |
| 237 void FXJS_DefineObjMethod(v8::Isolate* pIsolate, | 237 void FXJS_DefineObjMethod(v8::Isolate* pIsolate, |
| 238 int nObjDefnID, | 238 int nObjDefnID, |
| 239 const wchar_t* sMethodName, | 239 const wchar_t* sMethodName, |
| 240 v8::FunctionCallback pMethodCall) { | 240 v8::FunctionCallback pMethodCall) { |
| 241 v8::Isolate::Scope isolate_scope(pIsolate); | 241 v8::Isolate::Scope isolate_scope(pIsolate); |
| 242 v8::HandleScope handle_scope(pIsolate); | 242 v8::HandleScope handle_scope(pIsolate); |
| 243 CFX_ByteString bsMethodName = CFX_WideString(sMethodName).UTF8Encode(); | 243 CFX_ByteString bsMethodName = CFX_WideString(sMethodName).UTF8Encode(); |
| 244 CFXJS_ObjDefinition* pObjDef = | 244 CFXJS_ObjDefinition* pObjDef = |
| 245 CFXJS_ObjDefinition::ForID(pIsolate, nObjDefnID); | 245 CFXJS_ObjDefinition::ForID(pIsolate, nObjDefnID); |
| 246 v8::Local<v8::FunctionTemplate> fun = v8::FunctionTemplate::New( |
| 247 pIsolate, pMethodCall, v8::Local<v8::Value>(), pObjDef->GetSignature()); |
| 248 fun->RemovePrototype(); |
| 246 pObjDef->GetInstanceTemplate()->Set( | 249 pObjDef->GetInstanceTemplate()->Set( |
| 247 v8::String::NewFromUtf8(pIsolate, bsMethodName.c_str(), | 250 v8::String::NewFromUtf8(pIsolate, bsMethodName.c_str(), |
| 248 v8::NewStringType::kNormal) | 251 v8::NewStringType::kNormal) |
| 249 .ToLocalChecked(), | 252 .ToLocalChecked(), |
| 250 v8::FunctionTemplate::New(pIsolate, pMethodCall, v8::Local<v8::Value>(), | 253 fun, v8::ReadOnly); |
| 251 pObjDef->GetSignature()), | |
| 252 v8::ReadOnly); | |
| 253 } | 254 } |
| 254 | 255 |
| 255 void FXJS_DefineObjProperty(v8::Isolate* pIsolate, | 256 void FXJS_DefineObjProperty(v8::Isolate* pIsolate, |
| 256 int nObjDefnID, | 257 int nObjDefnID, |
| 257 const wchar_t* sPropName, | 258 const wchar_t* sPropName, |
| 258 v8::AccessorGetterCallback pPropGet, | 259 v8::AccessorGetterCallback pPropGet, |
| 259 v8::AccessorSetterCallback pPropPut) { | 260 v8::AccessorSetterCallback pPropPut) { |
| 260 v8::Isolate::Scope isolate_scope(pIsolate); | 261 v8::Isolate::Scope isolate_scope(pIsolate); |
| 261 v8::HandleScope handle_scope(pIsolate); | 262 v8::HandleScope handle_scope(pIsolate); |
| 262 CFX_ByteString bsPropertyName = CFX_WideString(sPropName).UTF8Encode(); | 263 CFX_ByteString bsPropertyName = CFX_WideString(sPropName).UTF8Encode(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 CFXJS_ObjDefinition::ForID(pIsolate, nObjDefnID); | 295 CFXJS_ObjDefinition::ForID(pIsolate, nObjDefnID); |
| 295 pObjDef->GetInstanceTemplate()->Set(pIsolate, bsConstName.c_str(), pDefault); | 296 pObjDef->GetInstanceTemplate()->Set(pIsolate, bsConstName.c_str(), pDefault); |
| 296 } | 297 } |
| 297 | 298 |
| 298 void FXJS_DefineGlobalMethod(v8::Isolate* pIsolate, | 299 void FXJS_DefineGlobalMethod(v8::Isolate* pIsolate, |
| 299 const wchar_t* sMethodName, | 300 const wchar_t* sMethodName, |
| 300 v8::FunctionCallback pMethodCall) { | 301 v8::FunctionCallback pMethodCall) { |
| 301 v8::Isolate::Scope isolate_scope(pIsolate); | 302 v8::Isolate::Scope isolate_scope(pIsolate); |
| 302 v8::HandleScope handle_scope(pIsolate); | 303 v8::HandleScope handle_scope(pIsolate); |
| 303 CFX_ByteString bsMethodName = CFX_WideString(sMethodName).UTF8Encode(); | 304 CFX_ByteString bsMethodName = CFX_WideString(sMethodName).UTF8Encode(); |
| 304 GetGlobalObjectTemplate(pIsolate) | 305 v8::Local<v8::FunctionTemplate> fun = |
| 305 ->Set(v8::String::NewFromUtf8(pIsolate, bsMethodName.c_str(), | 306 v8::FunctionTemplate::New(pIsolate, pMethodCall); |
| 306 v8::NewStringType::kNormal) | 307 fun->RemovePrototype(); |
| 307 .ToLocalChecked(), | 308 GetGlobalObjectTemplate(pIsolate)->Set( |
| 308 v8::FunctionTemplate::New(pIsolate, pMethodCall), v8::ReadOnly); | 309 v8::String::NewFromUtf8(pIsolate, bsMethodName.c_str(), |
| 310 v8::NewStringType::kNormal) |
| 311 .ToLocalChecked(), |
| 312 fun, v8::ReadOnly); |
| 309 } | 313 } |
| 310 | 314 |
| 311 void FXJS_DefineGlobalConst(v8::Isolate* pIsolate, | 315 void FXJS_DefineGlobalConst(v8::Isolate* pIsolate, |
| 312 const wchar_t* sConstName, | 316 const wchar_t* sConstName, |
| 313 v8::FunctionCallback pConstGetter) { | 317 v8::FunctionCallback pConstGetter) { |
| 314 v8::Isolate::Scope isolate_scope(pIsolate); | 318 v8::Isolate::Scope isolate_scope(pIsolate); |
| 315 v8::HandleScope handle_scope(pIsolate); | 319 v8::HandleScope handle_scope(pIsolate); |
| 316 CFX_ByteString bsConst = CFX_WideString(sConstName).UTF8Encode(); | 320 CFX_ByteString bsConst = CFX_WideString(sConstName).UTF8Encode(); |
| 317 GetGlobalObjectTemplate(pIsolate) | 321 v8::Local<v8::FunctionTemplate> fun = |
| 318 ->SetAccessorProperty(v8::String::NewFromUtf8(pIsolate, bsConst.c_str(), | 322 v8::FunctionTemplate::New(pIsolate, pConstGetter); |
| 319 v8::NewStringType::kNormal) | 323 fun->RemovePrototype(); |
| 320 .ToLocalChecked(), | 324 GetGlobalObjectTemplate(pIsolate)->SetAccessorProperty( |
| 321 v8::FunctionTemplate::New(pIsolate, pConstGetter)); | 325 v8::String::NewFromUtf8(pIsolate, bsConst.c_str(), |
| 326 v8::NewStringType::kNormal) |
| 327 .ToLocalChecked(), |
| 328 fun); |
| 322 } | 329 } |
| 323 | 330 |
| 324 void FXJS_InitializeRuntime( | 331 void FXJS_InitializeRuntime( |
| 325 v8::Isolate* pIsolate, | 332 v8::Isolate* pIsolate, |
| 326 IJS_Runtime* pIRuntime, | 333 IJS_Runtime* pIRuntime, |
| 327 v8::Global<v8::Context>* pV8PersistentContext, | 334 v8::Global<v8::Context>* pV8PersistentContext, |
| 328 std::vector<v8::Global<v8::Object>*>* pStaticObjects) { | 335 std::vector<v8::Global<v8::Object>*>* pStaticObjects) { |
| 329 if (pIsolate == g_isolate) | 336 if (pIsolate == g_isolate) |
| 330 ++g_isolate_ref_count; | 337 ++g_isolate_ref_count; |
| 331 | 338 |
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 829 v8::Local<v8::Value> pValue) { | 836 v8::Local<v8::Value> pValue) { |
| 830 if (pValue.IsEmpty()) | 837 if (pValue.IsEmpty()) |
| 831 return v8::Local<v8::Array>(); | 838 return v8::Local<v8::Array>(); |
| 832 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); | 839 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
| 833 return v8::Local<v8::Array>::Cast(pValue->ToObject(context).ToLocalChecked()); | 840 return v8::Local<v8::Array>::Cast(pValue->ToObject(context).ToLocalChecked()); |
| 834 } | 841 } |
| 835 | 842 |
| 836 void FXJS_ValueCopy(v8::Local<v8::Value>& pTo, v8::Local<v8::Value> pFrom) { | 843 void FXJS_ValueCopy(v8::Local<v8::Value>& pTo, v8::Local<v8::Value> pFrom) { |
| 837 pTo = pFrom; | 844 pTo = pFrom; |
| 838 } | 845 } |
| OLD | NEW |