| 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 "../../../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" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 const wchar_t* objName; | 68 const wchar_t* objName; |
| 69 FXJSOBJTYPE objType; | 69 FXJSOBJTYPE objType; |
| 70 LP_CONSTRUCTOR m_pConstructor; | 70 LP_CONSTRUCTOR m_pConstructor; |
| 71 LP_DESTRUCTOR m_pDestructor; | 71 LP_DESTRUCTOR m_pDestructor; |
| 72 FX_BOOL m_bSetAsGlobalObject; | 72 FX_BOOL m_bSetAsGlobalObject; |
| 73 | 73 |
| 74 v8::Global<v8::ObjectTemplate> m_objTemplate; | 74 v8::Global<v8::ObjectTemplate> m_objTemplate; |
| 75 v8::Global<v8::Object> m_StaticObj; | 75 v8::Global<v8::Object> m_StaticObj; |
| 76 }; | 76 }; |
| 77 | 77 |
| 78 int JS_DefineObj(IJS_Runtime* pJSRuntime, | 78 int JS_DefineObj(v8::Isolate* pIsolate, |
| 79 const wchar_t* sObjName, | 79 const wchar_t* sObjName, |
| 80 FXJSOBJTYPE eObjType, | 80 FXJSOBJTYPE eObjType, |
| 81 LP_CONSTRUCTOR pConstructor, | 81 LP_CONSTRUCTOR pConstructor, |
| 82 LP_DESTRUCTOR pDestructor) { | 82 LP_DESTRUCTOR pDestructor) { |
| 83 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 83 v8::Isolate::Scope isolate_scope(pIsolate); |
| 84 v8::Isolate::Scope isolate_scope(isolate); | 84 v8::HandleScope handle_scope(pIsolate); |
| 85 v8::HandleScope handle_scope(isolate); | 85 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 86 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | |
| 87 if (!pArray) { | 86 if (!pArray) { |
| 88 pArray = new CFX_PtrArray(); | 87 pArray = new CFX_PtrArray(); |
| 89 isolate->SetData(g_embedderDataSlot, pArray); | 88 pIsolate->SetData(g_embedderDataSlot, pArray); |
| 90 } | 89 } |
| 91 CJS_ObjDefintion* pObjDef = new CJS_ObjDefintion(isolate, sObjName, eObjType, | 90 CJS_ObjDefintion* pObjDef = new CJS_ObjDefintion(pIsolate, sObjName, eObjType, |
| 92 pConstructor, pDestructor); | 91 pConstructor, pDestructor); |
| 93 pArray->Add(pObjDef); | 92 pArray->Add(pObjDef); |
| 94 return pArray->GetSize() - 1; | 93 return pArray->GetSize() - 1; |
| 95 } | 94 } |
| 96 | 95 |
| 97 int JS_DefineObjMethod(IJS_Runtime* pJSRuntime, | 96 int JS_DefineObjMethod(v8::Isolate* pIsolate, |
| 98 int nObjDefnID, | 97 int nObjDefnID, |
| 99 const wchar_t* sMethodName, | 98 const wchar_t* sMethodName, |
| 100 v8::FunctionCallback pMethodCall) { | 99 v8::FunctionCallback pMethodCall) { |
| 101 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 100 v8::Isolate::Scope isolate_scope(pIsolate); |
| 102 v8::Isolate::Scope isolate_scope(isolate); | 101 v8::HandleScope handle_scope(pIsolate); |
| 103 v8::HandleScope handle_scope(isolate); | |
| 104 | 102 |
| 105 CFX_WideString ws = CFX_WideString(sMethodName); | 103 CFX_WideString ws = CFX_WideString(sMethodName); |
| 106 CFX_ByteString bsMethodName = ws.UTF8Encode(); | 104 CFX_ByteString bsMethodName = ws.UTF8Encode(); |
| 107 | 105 |
| 108 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | 106 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 109 if (!pArray) | 107 if (!pArray) |
| 110 return 0; | 108 return 0; |
| 111 | 109 |
| 112 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) | 110 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) |
| 113 return 0; | 111 return 0; |
| 114 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); | 112 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); |
| 115 v8::Local<v8::ObjectTemplate> objTemp = | 113 v8::Local<v8::ObjectTemplate> objTemp = |
| 116 v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate); | 114 v8::Local<v8::ObjectTemplate>::New(pIsolate, pObjDef->m_objTemplate); |
| 117 objTemp->Set(v8::String::NewFromUtf8(isolate, bsMethodName.c_str(), | 115 objTemp->Set( |
| 118 v8::NewStringType::kNormal) | 116 v8::String::NewFromUtf8(pIsolate, bsMethodName.c_str(), |
| 119 .ToLocalChecked(), | 117 v8::NewStringType::kNormal).ToLocalChecked(), |
| 120 v8::FunctionTemplate::New(isolate, pMethodCall), v8::ReadOnly); | 118 v8::FunctionTemplate::New(pIsolate, pMethodCall), v8::ReadOnly); |
| 121 pObjDef->m_objTemplate.Reset(isolate, objTemp); | 119 pObjDef->m_objTemplate.Reset(pIsolate, objTemp); |
| 122 return 0; | 120 return 0; |
| 123 } | 121 } |
| 124 | 122 |
| 125 int JS_DefineObjProperty(IJS_Runtime* pJSRuntime, | 123 int JS_DefineObjProperty(v8::Isolate* pIsolate, |
| 126 int nObjDefnID, | 124 int nObjDefnID, |
| 127 const wchar_t* sPropName, | 125 const wchar_t* sPropName, |
| 128 v8::AccessorGetterCallback pPropGet, | 126 v8::AccessorGetterCallback pPropGet, |
| 129 v8::AccessorSetterCallback pPropPut) { | 127 v8::AccessorSetterCallback pPropPut) { |
| 130 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 128 v8::Isolate::Scope isolate_scope(pIsolate); |
| 131 v8::Isolate::Scope isolate_scope(isolate); | 129 v8::HandleScope handle_scope(pIsolate); |
| 132 v8::HandleScope handle_scope(isolate); | |
| 133 | 130 |
| 134 CFX_WideString ws = CFX_WideString(sPropName); | 131 CFX_WideString ws = CFX_WideString(sPropName); |
| 135 CFX_ByteString bsPropertyName = ws.UTF8Encode(); | 132 CFX_ByteString bsPropertyName = ws.UTF8Encode(); |
| 136 | 133 |
| 137 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | 134 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 138 if (!pArray) | 135 if (!pArray) |
| 139 return 0; | 136 return 0; |
| 140 | 137 |
| 141 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) | 138 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) |
| 142 return 0; | 139 return 0; |
| 143 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); | 140 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); |
| 144 v8::Local<v8::ObjectTemplate> objTemp = | 141 v8::Local<v8::ObjectTemplate> objTemp = |
| 145 v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate); | 142 v8::Local<v8::ObjectTemplate>::New(pIsolate, pObjDef->m_objTemplate); |
| 146 objTemp->SetAccessor(v8::String::NewFromUtf8(isolate, bsPropertyName.c_str(), | 143 objTemp->SetAccessor( |
| 147 v8::NewStringType::kNormal) | 144 v8::String::NewFromUtf8(pIsolate, bsPropertyName.c_str(), |
| 148 .ToLocalChecked(), | 145 v8::NewStringType::kNormal).ToLocalChecked(), |
| 149 pPropGet, pPropPut); | 146 pPropGet, pPropPut); |
| 150 pObjDef->m_objTemplate.Reset(isolate, objTemp); | 147 pObjDef->m_objTemplate.Reset(pIsolate, objTemp); |
| 151 return 0; | 148 return 0; |
| 152 } | 149 } |
| 153 | 150 |
| 154 int JS_DefineObjAllProperties(IJS_Runtime* pJSRuntime, | 151 int JS_DefineObjAllProperties(v8::Isolate* pIsolate, |
| 155 int nObjDefnID, | 152 int nObjDefnID, |
| 156 v8::NamedPropertyQueryCallback pPropQurey, | 153 v8::NamedPropertyQueryCallback pPropQurey, |
| 157 v8::NamedPropertyGetterCallback pPropGet, | 154 v8::NamedPropertyGetterCallback pPropGet, |
| 158 v8::NamedPropertySetterCallback pPropPut, | 155 v8::NamedPropertySetterCallback pPropPut, |
| 159 v8::NamedPropertyDeleterCallback pPropDel) { | 156 v8::NamedPropertyDeleterCallback pPropDel) { |
| 160 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 157 v8::Isolate::Scope isolate_scope(pIsolate); |
| 161 v8::Isolate::Scope isolate_scope(isolate); | 158 v8::HandleScope handle_scope(pIsolate); |
| 162 v8::HandleScope handle_scope(isolate); | |
| 163 | 159 |
| 164 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | 160 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 165 if (!pArray) | 161 if (!pArray) |
| 166 return 0; | 162 return 0; |
| 167 | 163 |
| 168 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) | 164 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) |
| 169 return 0; | 165 return 0; |
| 170 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); | 166 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); |
| 171 v8::Local<v8::ObjectTemplate> objTemp = | 167 v8::Local<v8::ObjectTemplate> objTemp = |
| 172 v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate); | 168 v8::Local<v8::ObjectTemplate>::New(pIsolate, pObjDef->m_objTemplate); |
| 173 objTemp->SetNamedPropertyHandler(pPropGet, pPropPut, pPropQurey, pPropDel); | 169 objTemp->SetNamedPropertyHandler(pPropGet, pPropPut, pPropQurey, pPropDel); |
| 174 pObjDef->m_objTemplate.Reset(isolate, objTemp); | 170 pObjDef->m_objTemplate.Reset(pIsolate, objTemp); |
| 175 return 0; | 171 return 0; |
| 176 } | 172 } |
| 177 | 173 |
| 178 int JS_DefineObjConst(IJS_Runtime* pJSRuntime, | 174 int JS_DefineObjConst(v8::Isolate* pIsolate, |
| 179 int nObjDefnID, | 175 int nObjDefnID, |
| 180 const wchar_t* sConstName, | 176 const wchar_t* sConstName, |
| 181 v8::Local<v8::Value> pDefault) { | 177 v8::Local<v8::Value> pDefault) { |
| 182 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 178 v8::Isolate::Scope isolate_scope(pIsolate); |
| 183 v8::Isolate::Scope isolate_scope(isolate); | 179 v8::HandleScope handle_scope(pIsolate); |
| 184 v8::HandleScope handle_scope(isolate); | |
| 185 | 180 |
| 186 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | 181 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 187 if (!pArray) | 182 if (!pArray) |
| 188 return 0; | 183 return 0; |
| 189 | 184 |
| 190 CFX_WideString ws = CFX_WideString(sConstName); | 185 CFX_WideString ws = CFX_WideString(sConstName); |
| 191 CFX_ByteString bsConstName = ws.UTF8Encode(); | 186 CFX_ByteString bsConstName = ws.UTF8Encode(); |
| 192 | 187 |
| 193 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) | 188 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) |
| 194 return 0; | 189 return 0; |
| 195 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); | 190 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); |
| 196 v8::Local<v8::ObjectTemplate> objTemp = | 191 v8::Local<v8::ObjectTemplate> objTemp = |
| 197 v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate); | 192 v8::Local<v8::ObjectTemplate>::New(pIsolate, pObjDef->m_objTemplate); |
| 198 objTemp->Set(isolate, bsConstName.c_str(), pDefault); | 193 objTemp->Set(pIsolate, bsConstName.c_str(), pDefault); |
| 199 pObjDef->m_objTemplate.Reset(isolate, objTemp); | 194 pObjDef->m_objTemplate.Reset(pIsolate, objTemp); |
| 200 return 0; | 195 return 0; |
| 201 } | 196 } |
| 202 | 197 |
| 203 static v8::Global<v8::ObjectTemplate>& _getGlobalObjectTemplate( | 198 static v8::Global<v8::ObjectTemplate>& _getGlobalObjectTemplate( |
| 204 IJS_Runtime* pJSRuntime) { | 199 v8::Isolate* pIsolate) { |
| 205 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 200 v8::Isolate::Scope isolate_scope(pIsolate); |
| 206 v8::Isolate::Scope isolate_scope(isolate); | 201 v8::HandleScope handle_scope(pIsolate); |
| 207 v8::HandleScope handle_scope(isolate); | |
| 208 | 202 |
| 209 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | 203 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 210 ASSERT(pArray != NULL); | 204 ASSERT(pArray != NULL); |
| 211 for (int i = 0; i < pArray->GetSize(); i++) { | 205 for (int i = 0; i < pArray->GetSize(); i++) { |
| 212 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); | 206 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); |
| 213 if (pObjDef->m_bSetAsGlobalObject) | 207 if (pObjDef->m_bSetAsGlobalObject) |
| 214 return pObjDef->m_objTemplate; | 208 return pObjDef->m_objTemplate; |
| 215 } | 209 } |
| 216 static v8::Global<v8::ObjectTemplate> gloabalObjectTemplate; | 210 static v8::Global<v8::ObjectTemplate> gloabalObjectTemplate; |
| 217 return gloabalObjectTemplate; | 211 return gloabalObjectTemplate; |
| 218 } | 212 } |
| 219 | 213 |
| 220 int JS_DefineGlobalMethod(IJS_Runtime* pJSRuntime, | 214 int JS_DefineGlobalMethod(v8::Isolate* pIsolate, |
| 221 const wchar_t* sMethodName, | 215 const wchar_t* sMethodName, |
| 222 v8::FunctionCallback pMethodCall) { | 216 v8::FunctionCallback pMethodCall) { |
| 223 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 217 v8::Isolate::Scope isolate_scope(pIsolate); |
| 224 v8::Isolate::Scope isolate_scope(isolate); | 218 v8::HandleScope handle_scope(pIsolate); |
| 225 v8::HandleScope handle_scope(isolate); | |
| 226 | 219 |
| 227 CFX_WideString ws = CFX_WideString(sMethodName); | 220 CFX_WideString ws = CFX_WideString(sMethodName); |
| 228 CFX_ByteString bsMethodName = ws.UTF8Encode(); | 221 CFX_ByteString bsMethodName = ws.UTF8Encode(); |
| 229 | 222 |
| 230 v8::Local<v8::FunctionTemplate> funTempl = | 223 v8::Local<v8::FunctionTemplate> funTempl = |
| 231 v8::FunctionTemplate::New(isolate, pMethodCall); | 224 v8::FunctionTemplate::New(pIsolate, pMethodCall); |
| 232 v8::Local<v8::ObjectTemplate> objTemp; | 225 v8::Local<v8::ObjectTemplate> objTemp; |
| 233 | 226 |
| 234 v8::Global<v8::ObjectTemplate>& globalObjTemp = | 227 v8::Global<v8::ObjectTemplate>& globalObjTemp = |
| 235 _getGlobalObjectTemplate(pJSRuntime); | 228 _getGlobalObjectTemplate(pIsolate); |
| 236 if (globalObjTemp.IsEmpty()) | 229 if (globalObjTemp.IsEmpty()) |
| 237 objTemp = v8::ObjectTemplate::New(isolate); | 230 objTemp = v8::ObjectTemplate::New(pIsolate); |
| 238 else | 231 else |
| 239 objTemp = v8::Local<v8::ObjectTemplate>::New(isolate, globalObjTemp); | 232 objTemp = v8::Local<v8::ObjectTemplate>::New(pIsolate, globalObjTemp); |
| 240 objTemp->Set(v8::String::NewFromUtf8(isolate, bsMethodName.c_str(), | 233 objTemp->Set( |
| 241 v8::NewStringType::kNormal) | 234 v8::String::NewFromUtf8(pIsolate, bsMethodName.c_str(), |
| 242 .ToLocalChecked(), | 235 v8::NewStringType::kNormal).ToLocalChecked(), |
| 243 funTempl, v8::ReadOnly); | 236 funTempl, v8::ReadOnly); |
| 244 | 237 |
| 245 globalObjTemp.Reset(isolate, objTemp); | 238 globalObjTemp.Reset(pIsolate, objTemp); |
| 246 | 239 |
| 247 return 0; | 240 return 0; |
| 248 } | 241 } |
| 249 | 242 |
| 250 int JS_DefineGlobalConst(IJS_Runtime* pJSRuntime, | 243 int JS_DefineGlobalConst(v8::Isolate* pIsolate, |
| 251 const wchar_t* sConstName, | 244 const wchar_t* sConstName, |
| 252 v8::Local<v8::Value> pDefault) { | 245 v8::Local<v8::Value> pDefault) { |
| 253 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 246 v8::Isolate::Scope isolate_scope(pIsolate); |
| 254 v8::Isolate::Scope isolate_scope(isolate); | 247 v8::HandleScope handle_scope(pIsolate); |
| 255 v8::HandleScope handle_scope(isolate); | |
| 256 | 248 |
| 257 CFX_WideString ws = CFX_WideString(sConstName); | 249 CFX_WideString ws = CFX_WideString(sConstName); |
| 258 CFX_ByteString bsConst = ws.UTF8Encode(); | 250 CFX_ByteString bsConst = ws.UTF8Encode(); |
| 259 | 251 |
| 260 v8::Local<v8::ObjectTemplate> objTemp; | 252 v8::Local<v8::ObjectTemplate> objTemp; |
| 261 | 253 |
| 262 v8::Global<v8::ObjectTemplate>& globalObjTemp = | 254 v8::Global<v8::ObjectTemplate>& globalObjTemp = |
| 263 _getGlobalObjectTemplate(pJSRuntime); | 255 _getGlobalObjectTemplate(pIsolate); |
| 264 if (globalObjTemp.IsEmpty()) | 256 if (globalObjTemp.IsEmpty()) |
| 265 objTemp = v8::ObjectTemplate::New(isolate); | 257 objTemp = v8::ObjectTemplate::New(pIsolate); |
| 266 else | 258 else |
| 267 objTemp = v8::Local<v8::ObjectTemplate>::New(isolate, globalObjTemp); | 259 objTemp = v8::Local<v8::ObjectTemplate>::New(pIsolate, globalObjTemp); |
| 268 objTemp->Set(v8::String::NewFromUtf8(isolate, bsConst.c_str(), | 260 objTemp->Set( |
| 269 v8::NewStringType::kNormal) | 261 v8::String::NewFromUtf8(pIsolate, bsConst.c_str(), |
| 270 .ToLocalChecked(), | 262 v8::NewStringType::kNormal).ToLocalChecked(), |
| 271 pDefault, v8::ReadOnly); | 263 pDefault, v8::ReadOnly); |
| 272 | 264 |
| 273 globalObjTemp.Reset(isolate, objTemp); | 265 globalObjTemp.Reset(pIsolate, objTemp); |
| 274 | 266 |
| 275 return 0; | 267 return 0; |
| 276 } | 268 } |
| 277 | 269 |
| 278 void JS_InitialRuntime(IJS_Runtime* pJSRuntime, | 270 void JS_InitialRuntime(v8::Isolate* pIsolate, |
| 279 IFXJS_Runtime* pFXRuntime, | 271 IFXJS_Runtime* pFXRuntime, |
| 280 IFXJS_Context* context, | 272 IFXJS_Context* context, |
| 281 v8::Global<v8::Context>& v8PersistentContext) { | 273 v8::Global<v8::Context>& v8PersistentContext) { |
| 282 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 274 v8::Isolate::Scope isolate_scope(pIsolate); |
| 283 v8::Isolate::Scope isolate_scope(isolate); | 275 v8::HandleScope handle_scope(pIsolate); |
| 284 v8::HandleScope handle_scope(isolate); | |
| 285 | 276 |
| 286 v8::Global<v8::ObjectTemplate>& globalObjTemp = | 277 v8::Global<v8::ObjectTemplate>& globalObjTemp = |
| 287 _getGlobalObjectTemplate(pJSRuntime); | 278 _getGlobalObjectTemplate(pIsolate); |
| 288 v8::Local<v8::Context> v8Context = v8::Context::New( | 279 v8::Local<v8::Context> v8Context = v8::Context::New( |
| 289 isolate, NULL, | 280 pIsolate, NULL, |
| 290 v8::Local<v8::ObjectTemplate>::New(isolate, globalObjTemp)); | 281 v8::Local<v8::ObjectTemplate>::New(pIsolate, globalObjTemp)); |
| 291 v8::Context::Scope context_scope(v8Context); | 282 v8::Context::Scope context_scope(v8Context); |
| 292 | 283 |
| 293 v8::Local<v8::External> ptr = v8::External::New(isolate, pFXRuntime); | 284 v8::Local<v8::External> ptr = v8::External::New(pIsolate, pFXRuntime); |
| 294 v8Context->SetEmbedderData(1, ptr); | 285 v8Context->SetEmbedderData(1, ptr); |
| 295 | 286 |
| 296 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | 287 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 297 if (!pArray) | 288 if (!pArray) |
| 298 return; | 289 return; |
| 299 | 290 |
| 300 for (int i = 0; i < pArray->GetSize(); i++) { | 291 for (int i = 0; i < pArray->GetSize(); i++) { |
| 301 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); | 292 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); |
| 302 CFX_WideString ws = CFX_WideString(pObjDef->objName); | 293 CFX_WideString ws = CFX_WideString(pObjDef->objName); |
| 303 CFX_ByteString bs = ws.UTF8Encode(); | 294 CFX_ByteString bs = ws.UTF8Encode(); |
| 304 v8::Local<v8::String> objName = | 295 v8::Local<v8::String> objName = |
| 305 v8::String::NewFromUtf8(isolate, bs.c_str(), v8::NewStringType::kNormal, | 296 v8::String::NewFromUtf8(pIsolate, bs.c_str(), |
| 306 bs.GetLength()) | 297 v8::NewStringType::kNormal, |
| 307 .ToLocalChecked(); | 298 bs.GetLength()).ToLocalChecked(); |
| 308 | 299 |
| 309 if (pObjDef->objType == JS_DYNAMIC) { | 300 if (pObjDef->objType == JS_DYNAMIC) { |
| 310 // Document is set as global object, need to construct it first. | 301 // Document is set as global object, need to construct it first. |
| 311 if (ws.Equal(L"Document")) { | 302 if (ws.Equal(L"Document")) { |
| 312 CJS_PrivateData* pPrivateData = new CJS_PrivateData; | 303 CJS_PrivateData* pPrivateData = new CJS_PrivateData; |
| 313 pPrivateData->ObjDefID = i; | 304 pPrivateData->ObjDefID = i; |
| 314 | 305 |
| 315 v8Context->Global() | 306 v8Context->Global() |
| 316 ->GetPrototype() | 307 ->GetPrototype() |
| 317 ->ToObject(v8Context) | 308 ->ToObject(v8Context) |
| 318 .ToLocalChecked() | 309 .ToLocalChecked() |
| 319 ->SetAlignedPointerInInternalField(0, pPrivateData); | 310 ->SetAlignedPointerInInternalField(0, pPrivateData); |
| 320 | 311 |
| 321 if (pObjDef->m_pConstructor) | 312 if (pObjDef->m_pConstructor) |
| 322 pObjDef->m_pConstructor(context, v8Context->Global() | 313 pObjDef->m_pConstructor(context, v8Context->Global() |
| 323 ->GetPrototype() | 314 ->GetPrototype() |
| 324 ->ToObject(v8Context) | 315 ->ToObject(v8Context) |
| 325 .ToLocalChecked(), | 316 .ToLocalChecked(), |
| 326 v8Context->Global() | 317 v8Context->Global() |
| 327 ->GetPrototype() | 318 ->GetPrototype() |
| 328 ->ToObject(v8Context) | 319 ->ToObject(v8Context) |
| 329 .ToLocalChecked()); | 320 .ToLocalChecked()); |
| 330 } | 321 } |
| 331 } else { | 322 } else { |
| 332 v8::Local<v8::Object> obj = JS_NewFxDynamicObj(pJSRuntime, context, i); | 323 v8::Local<v8::Object> obj = JS_NewFxDynamicObj(pIsolate, context, i); |
| 333 v8Context->Global()->Set(v8Context, objName, obj).FromJust(); | 324 v8Context->Global()->Set(v8Context, objName, obj).FromJust(); |
| 334 pObjDef->m_StaticObj.Reset(isolate, obj); | 325 pObjDef->m_StaticObj.Reset(pIsolate, obj); |
| 335 } | 326 } |
| 336 } | 327 } |
| 337 v8PersistentContext.Reset(isolate, v8Context); | 328 v8PersistentContext.Reset(pIsolate, v8Context); |
| 338 } | 329 } |
| 339 | 330 |
| 340 void JS_ReleaseRuntime(IJS_Runtime* pJSRuntime, | 331 void JS_ReleaseRuntime(v8::Isolate* pIsolate, |
| 341 v8::Global<v8::Context>& v8PersistentContext) { | 332 v8::Global<v8::Context>& v8PersistentContext) { |
| 342 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 333 v8::Isolate::Scope isolate_scope(pIsolate); |
| 343 v8::Isolate::Scope isolate_scope(isolate); | 334 v8::HandleScope handle_scope(pIsolate); |
| 344 v8::HandleScope handle_scope(isolate); | |
| 345 v8::Local<v8::Context> context = | 335 v8::Local<v8::Context> context = |
| 346 v8::Local<v8::Context>::New(isolate, v8PersistentContext); | 336 v8::Local<v8::Context>::New(pIsolate, v8PersistentContext); |
| 347 v8::Context::Scope context_scope(context); | 337 v8::Context::Scope context_scope(context); |
| 348 | 338 |
| 349 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | 339 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 350 if (!pArray) | 340 if (!pArray) |
| 351 return; | 341 return; |
| 352 | 342 |
| 353 for (int i = 0; i < pArray->GetSize(); i++) { | 343 for (int i = 0; i < pArray->GetSize(); i++) { |
| 354 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); | 344 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); |
| 355 if (!pObjDef->m_StaticObj.IsEmpty()) { | 345 if (!pObjDef->m_StaticObj.IsEmpty()) { |
| 356 v8::Local<v8::Object> pObj = | 346 v8::Local<v8::Object> pObj = |
| 357 v8::Local<v8::Object>::New(isolate, pObjDef->m_StaticObj); | 347 v8::Local<v8::Object>::New(pIsolate, pObjDef->m_StaticObj); |
| 358 if (pObjDef->m_pDestructor) | 348 if (pObjDef->m_pDestructor) |
| 359 pObjDef->m_pDestructor(pObj); | 349 pObjDef->m_pDestructor(pObj); |
| 360 JS_FreePrivate(pObj); | 350 JS_FreePrivate(pObj); |
| 361 } | 351 } |
| 362 delete pObjDef; | 352 delete pObjDef; |
| 363 } | 353 } |
| 364 delete pArray; | 354 delete pArray; |
| 365 isolate->SetData(g_embedderDataSlot, NULL); | 355 pIsolate->SetData(g_embedderDataSlot, NULL); |
| 366 } | 356 } |
| 367 | 357 |
| 368 void JS_Initial(unsigned int embedderDataSlot) { | 358 void JS_Initial(unsigned int embedderDataSlot) { |
| 369 g_embedderDataSlot = embedderDataSlot; | 359 g_embedderDataSlot = embedderDataSlot; |
| 370 } | 360 } |
| 371 | 361 |
| 372 void JS_Release() { | 362 void JS_Release() { |
| 373 } | 363 } |
| 374 | 364 |
| 375 int JS_Execute(IJS_Runtime* pJSRuntime, | 365 int JS_Execute(v8::Isolate* pIsolate, |
| 376 IFXJS_Context* pJSContext, | 366 IFXJS_Context* pJSContext, |
| 377 const wchar_t* script, | 367 const wchar_t* script, |
| 378 long length, | 368 long length, |
| 379 FXJSErr* perror) { | 369 FXJSErr* perror) { |
| 380 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 370 v8::Isolate::Scope isolate_scope(pIsolate); |
| 381 v8::Isolate::Scope isolate_scope(isolate); | 371 v8::TryCatch try_catch(pIsolate); |
| 382 v8::TryCatch try_catch(isolate); | |
| 383 | 372 |
| 384 CFX_WideString wsScript(script); | 373 CFX_WideString wsScript(script); |
| 385 CFX_ByteString bsScript = wsScript.UTF8Encode(); | 374 CFX_ByteString bsScript = wsScript.UTF8Encode(); |
| 386 | 375 |
| 387 v8::Local<v8::Context> context = isolate->GetCurrentContext(); | 376 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
| 388 v8::Local<v8::Script> compiled_script; | 377 v8::Local<v8::Script> compiled_script; |
| 389 if (!v8::Script::Compile(context, | 378 if (!v8::Script::Compile( |
| 390 v8::String::NewFromUtf8(isolate, bsScript.c_str(), | 379 context, v8::String::NewFromUtf8( |
| 391 v8::NewStringType::kNormal, | 380 pIsolate, bsScript.c_str(), v8::NewStringType::kNormal, |
| 392 bsScript.GetLength()) | 381 bsScript.GetLength()).ToLocalChecked()) |
| 393 .ToLocalChecked()) | |
| 394 .ToLocal(&compiled_script)) { | 382 .ToLocal(&compiled_script)) { |
| 395 v8::String::Utf8Value error(try_catch.Exception()); | 383 v8::String::Utf8Value error(try_catch.Exception()); |
| 396 return -1; | 384 return -1; |
| 397 } | 385 } |
| 398 | 386 |
| 399 v8::Local<v8::Value> result; | 387 v8::Local<v8::Value> result; |
| 400 if (!compiled_script->Run(context).ToLocal(&result)) { | 388 if (!compiled_script->Run(context).ToLocal(&result)) { |
| 401 v8::String::Utf8Value error(try_catch.Exception()); | 389 v8::String::Utf8Value error(try_catch.Exception()); |
| 402 return -1; | 390 return -1; |
| 403 } | 391 } |
| 404 return 0; | 392 return 0; |
| 405 } | 393 } |
| 406 | 394 |
| 407 v8::Local<v8::Object> JS_NewFxDynamicObj(IJS_Runtime* pJSRuntime, | 395 v8::Local<v8::Object> JS_NewFxDynamicObj(v8::Isolate* pIsolate, |
| 408 IFXJS_Context* pJSContext, | 396 IFXJS_Context* pJSContext, |
| 409 int nObjDefnID) { | 397 int nObjDefnID) { |
| 410 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 398 v8::Isolate::Scope isolate_scope(pIsolate); |
| 411 v8::Isolate::Scope isolate_scope(isolate); | 399 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
| 412 v8::Local<v8::Context> context = isolate->GetCurrentContext(); | |
| 413 if (-1 == nObjDefnID) { | 400 if (-1 == nObjDefnID) { |
| 414 v8::Local<v8::ObjectTemplate> objTempl = v8::ObjectTemplate::New(isolate); | 401 v8::Local<v8::ObjectTemplate> objTempl = v8::ObjectTemplate::New(pIsolate); |
| 415 v8::Local<v8::Object> obj; | 402 v8::Local<v8::Object> obj; |
| 416 if (objTempl->NewInstance(context).ToLocal(&obj)) | 403 if (objTempl->NewInstance(context).ToLocal(&obj)) |
| 417 return obj; | 404 return obj; |
| 418 return v8::Local<v8::Object>(); | 405 return v8::Local<v8::Object>(); |
| 419 } | 406 } |
| 420 | 407 |
| 421 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | 408 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 422 if (!pArray) | 409 if (!pArray) |
| 423 return v8::Local<v8::Object>(); | 410 return v8::Local<v8::Object>(); |
| 424 | 411 |
| 425 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) | 412 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) |
| 426 return v8::Local<v8::Object>(); | 413 return v8::Local<v8::Object>(); |
| 427 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); | 414 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); |
| 428 | 415 |
| 429 v8::Local<v8::ObjectTemplate> objTemp = | 416 v8::Local<v8::ObjectTemplate> objTemp = |
| 430 v8::Local<v8::ObjectTemplate>::New(isolate, pObjDef->m_objTemplate); | 417 v8::Local<v8::ObjectTemplate>::New(pIsolate, pObjDef->m_objTemplate); |
| 431 v8::Local<v8::Object> obj; | 418 v8::Local<v8::Object> obj; |
| 432 if (!objTemp->NewInstance(context).ToLocal(&obj)) | 419 if (!objTemp->NewInstance(context).ToLocal(&obj)) |
| 433 return v8::Local<v8::Object>(); | 420 return v8::Local<v8::Object>(); |
| 434 | 421 |
| 435 CJS_PrivateData* pPrivateData = new CJS_PrivateData; | 422 CJS_PrivateData* pPrivateData = new CJS_PrivateData; |
| 436 pPrivateData->ObjDefID = nObjDefnID; | 423 pPrivateData->ObjDefID = nObjDefnID; |
| 437 | 424 |
| 438 obj->SetAlignedPointerInInternalField(0, pPrivateData); | 425 obj->SetAlignedPointerInInternalField(0, pPrivateData); |
| 439 if (pObjDef->m_pConstructor) | 426 if (pObjDef->m_pConstructor) |
| 440 pObjDef->m_pConstructor( | 427 pObjDef->m_pConstructor( |
| 441 pJSContext, obj, | 428 pJSContext, obj, |
| 442 context->Global()->GetPrototype()->ToObject(context).ToLocalChecked()); | 429 context->Global()->GetPrototype()->ToObject(context).ToLocalChecked()); |
| 443 | 430 |
| 444 return obj; | 431 return obj; |
| 445 } | 432 } |
| 446 | 433 |
| 447 v8::Local<v8::Object> JS_GetStaticObj(IJS_Runtime* pJSRuntime, int nObjDefnID) { | 434 v8::Local<v8::Object> JS_GetStaticObj(v8::Isolate* pIsolate, int nObjDefnID) { |
| 448 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 435 v8::Isolate::Scope isolate_scope(pIsolate); |
| 449 v8::Isolate::Scope isolate_scope(isolate); | 436 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 450 | |
| 451 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | |
| 452 if (!pArray) | 437 if (!pArray) |
| 453 return v8::Local<v8::Object>(); | 438 return v8::Local<v8::Object>(); |
| 454 | 439 |
| 455 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) | 440 if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize()) |
| 456 return v8::Local<v8::Object>(); | 441 return v8::Local<v8::Object>(); |
| 457 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); | 442 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID); |
| 458 v8::Local<v8::Object> obj = | 443 v8::Local<v8::Object> obj = |
| 459 v8::Local<v8::Object>::New(isolate, pObjDef->m_StaticObj); | 444 v8::Local<v8::Object>::New(pIsolate, pObjDef->m_StaticObj); |
| 460 return obj; | 445 return obj; |
| 461 } | 446 } |
| 462 | 447 |
| 463 void JS_SetThisObj(IJS_Runtime* pJSRuntime, int nThisObjID) { | 448 v8::Local<v8::Object> JS_GetThisObj(v8::Isolate* pIsolate) { |
| 464 // Do nothing. | |
| 465 } | |
| 466 v8::Local<v8::Object> JS_GetThisObj(IJS_Runtime* pJSRuntime) { | |
| 467 // Return the global object. | 449 // Return the global object. |
| 468 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 450 v8::Isolate::Scope isolate_scope(pIsolate); |
| 469 v8::Isolate::Scope isolate_scope(isolate); | 451 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 470 | |
| 471 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | |
| 472 if (!pArray) | 452 if (!pArray) |
| 473 return v8::Local<v8::Object>(); | 453 return v8::Local<v8::Object>(); |
| 474 | 454 |
| 475 v8::Local<v8::Context> context = isolate->GetCurrentContext(); | 455 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
| 476 return context->Global()->GetPrototype()->ToObject(context).ToLocalChecked(); | 456 return context->Global()->GetPrototype()->ToObject(context).ToLocalChecked(); |
| 477 } | 457 } |
| 478 | 458 |
| 479 int JS_GetObjDefnID(v8::Local<v8::Object> pObj) { | 459 int JS_GetObjDefnID(v8::Local<v8::Object> pObj) { |
| 480 if (pObj.IsEmpty() || !pObj->InternalFieldCount()) | 460 if (pObj.IsEmpty() || !pObj->InternalFieldCount()) |
| 481 return -1; | 461 return -1; |
| 482 CJS_PrivateData* pPrivateData = | 462 CJS_PrivateData* pPrivateData = |
| 483 (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0); | 463 (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0); |
| 484 if (pPrivateData) | 464 if (pPrivateData) |
| 485 return pPrivateData->ObjDefID; | 465 return pPrivateData->ObjDefID; |
| 486 return -1; | 466 return -1; |
| 487 } | 467 } |
| 488 | 468 |
| 489 IJS_Runtime* JS_GetRuntime(v8::Local<v8::Object> pObj) { | 469 v8::Isolate* JS_GetRuntime(v8::Local<v8::Object> pObj) { |
| 490 if (pObj.IsEmpty()) | 470 if (pObj.IsEmpty()) |
| 491 return NULL; | 471 return NULL; |
| 492 v8::Local<v8::Context> context = pObj->CreationContext(); | 472 v8::Local<v8::Context> context = pObj->CreationContext(); |
| 493 if (context.IsEmpty()) | 473 if (context.IsEmpty()) |
| 494 return NULL; | 474 return NULL; |
| 495 return context->GetIsolate(); | 475 return context->GetIsolate(); |
| 496 } | 476 } |
| 497 | 477 |
| 498 int JS_GetObjDefnID(IJS_Runtime* pJSRuntime, const wchar_t* pObjName) { | 478 int JS_GetObjDefnID(v8::Isolate* pIsolate, const wchar_t* pObjName) { |
| 499 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 479 v8::Isolate::Scope isolate_scope(pIsolate); |
| 500 v8::Isolate::Scope isolate_scope(isolate); | 480 CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot); |
| 501 | |
| 502 CFX_PtrArray* pArray = (CFX_PtrArray*)isolate->GetData(g_embedderDataSlot); | |
| 503 if (!pArray) | 481 if (!pArray) |
| 504 return -1; | 482 return -1; |
| 505 | 483 |
| 506 for (int i = 0; i < pArray->GetSize(); i++) { | 484 for (int i = 0; i < pArray->GetSize(); i++) { |
| 507 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); | 485 CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(i); |
| 508 if (FXSYS_wcscmp(pObjDef->objName, pObjName) == 0) | 486 if (FXSYS_wcscmp(pObjDef->objName, pObjName) == 0) |
| 509 return i; | 487 return i; |
| 510 } | 488 } |
| 511 return -1; | 489 return -1; |
| 512 } | 490 } |
| 513 | 491 |
| 514 void JS_Error(v8::Isolate* isolate, const CFX_WideString& message) { | 492 void JS_Error(v8::Isolate* pIsolate, const CFX_WideString& message) { |
| 515 // Conversion from pdfium's wchar_t wide-strings to v8's uint16_t | 493 // Conversion from pdfium's wchar_t wide-strings to v8's uint16_t |
| 516 // wide-strings isn't handled by v8, so use UTF8 as a common | 494 // wide-strings isn't handled by v8, so use UTF8 as a common |
| 517 // intermediate format. | 495 // intermediate format. |
| 518 CFX_ByteString utf8_message = message.UTF8Encode(); | 496 CFX_ByteString utf8_message = message.UTF8Encode(); |
| 519 isolate->ThrowException(v8::String::NewFromUtf8(isolate, utf8_message.c_str(), | 497 pIsolate->ThrowException( |
| 520 v8::NewStringType::kNormal) | 498 v8::String::NewFromUtf8(pIsolate, utf8_message.c_str(), |
| 521 .ToLocalChecked()); | 499 v8::NewStringType::kNormal).ToLocalChecked()); |
| 522 } | 500 } |
| 523 | 501 |
| 524 unsigned JS_CalcHash(const wchar_t* main, unsigned nLen) { | 502 unsigned JS_CalcHash(const wchar_t* main, unsigned nLen) { |
| 525 return (unsigned)FX_HashCode_String_GetW(main, nLen); | 503 return (unsigned)FX_HashCode_String_GetW(main, nLen); |
| 526 } | 504 } |
| 527 | 505 |
| 528 unsigned JS_CalcHash(const wchar_t* main) { | 506 unsigned JS_CalcHash(const wchar_t* main) { |
| 529 return (unsigned)FX_HashCode_String_GetW(main, FXSYS_wcslen(main)); | 507 return (unsigned)FX_HashCode_String_GetW(main, FXSYS_wcslen(main)); |
| 530 } | 508 } |
| 531 const wchar_t* JS_GetTypeof(v8::Local<v8::Value> pObj) { | 509 const wchar_t* JS_GetTypeof(v8::Local<v8::Value> pObj) { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 548 return NULL; | 526 return NULL; |
| 549 } | 527 } |
| 550 void JS_SetPrivate(v8::Local<v8::Object> pObj, void* p) { | 528 void JS_SetPrivate(v8::Local<v8::Object> pObj, void* p) { |
| 551 JS_SetPrivate(NULL, pObj, p); | 529 JS_SetPrivate(NULL, pObj, p); |
| 552 } | 530 } |
| 553 | 531 |
| 554 void* JS_GetPrivate(v8::Local<v8::Object> pObj) { | 532 void* JS_GetPrivate(v8::Local<v8::Object> pObj) { |
| 555 return JS_GetPrivate(NULL, pObj); | 533 return JS_GetPrivate(NULL, pObj); |
| 556 } | 534 } |
| 557 | 535 |
| 558 void JS_SetPrivate(IJS_Runtime* pJSRuntime, | 536 void JS_SetPrivate(v8::Isolate* pIsolate, v8::Local<v8::Object> pObj, void* p) { |
| 559 v8::Local<v8::Object> pObj, | |
| 560 void* p) { | |
| 561 if (pObj.IsEmpty() || !pObj->InternalFieldCount()) | 537 if (pObj.IsEmpty() || !pObj->InternalFieldCount()) |
| 562 return; | 538 return; |
| 563 CJS_PrivateData* pPrivateData = | 539 CJS_PrivateData* pPrivateData = |
| 564 (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0); | 540 (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0); |
| 565 if (!pPrivateData) | 541 if (!pPrivateData) |
| 566 return; | 542 return; |
| 567 pPrivateData->pPrivate = p; | 543 pPrivateData->pPrivate = p; |
| 568 } | 544 } |
| 569 | 545 |
| 570 void* JS_GetPrivate(IJS_Runtime* pJSRuntime, v8::Local<v8::Object> pObj) { | 546 void* JS_GetPrivate(v8::Isolate* pIsolate, v8::Local<v8::Object> pObj) { |
| 571 if (pObj.IsEmpty()) | 547 if (pObj.IsEmpty()) |
| 572 return NULL; | 548 return NULL; |
| 573 CJS_PrivateData* pPrivateData = NULL; | 549 CJS_PrivateData* pPrivateData = NULL; |
| 574 if (pObj->InternalFieldCount()) | 550 if (pObj->InternalFieldCount()) |
| 575 pPrivateData = | 551 pPrivateData = |
| 576 (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0); | 552 (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0); |
| 577 else { | 553 else { |
| 578 // It could be a global proxy object. | 554 // It could be a global proxy object. |
| 579 v8::Local<v8::Value> v = pObj->GetPrototype(); | 555 v8::Local<v8::Value> v = pObj->GetPrototype(); |
| 580 v8::Isolate* isolate = (v8::Isolate*)pJSRuntime; | 556 v8::Isolate* isolate = (v8::Isolate*)pIsolate; |
| 581 v8::Local<v8::Context> context = isolate->GetCurrentContext(); | 557 v8::Local<v8::Context> context = isolate->GetCurrentContext(); |
| 582 if (v->IsObject()) | 558 if (v->IsObject()) |
| 583 pPrivateData = (CJS_PrivateData*)v->ToObject(context) | 559 pPrivateData = (CJS_PrivateData*)v->ToObject(context) |
| 584 .ToLocalChecked() | 560 .ToLocalChecked() |
| 585 ->GetAlignedPointerFromInternalField(0); | 561 ->GetAlignedPointerFromInternalField(0); |
| 586 } | 562 } |
| 587 if (!pPrivateData) | 563 if (!pPrivateData) |
| 588 return NULL; | 564 return NULL; |
| 589 return pPrivateData->pPrivate; | 565 return pPrivateData->pPrivate; |
| 590 } | 566 } |
| 591 | 567 |
| 592 void JS_FreePrivate(void* pPrivateData) { | 568 void JS_FreePrivate(void* pPrivateData) { |
| 593 delete (CJS_PrivateData*)pPrivateData; | 569 delete (CJS_PrivateData*)pPrivateData; |
| 594 } | 570 } |
| 595 | 571 |
| 596 void JS_FreePrivate(v8::Local<v8::Object> pObj) { | 572 void JS_FreePrivate(v8::Local<v8::Object> pObj) { |
| 597 if (pObj.IsEmpty() || !pObj->InternalFieldCount()) | 573 if (pObj.IsEmpty() || !pObj->InternalFieldCount()) |
| 598 return; | 574 return; |
| 599 JS_FreePrivate(pObj->GetAlignedPointerFromInternalField(0)); | 575 JS_FreePrivate(pObj->GetAlignedPointerFromInternalField(0)); |
| 600 pObj->SetAlignedPointerInInternalField(0, NULL); | 576 pObj->SetAlignedPointerInInternalField(0, NULL); |
| 601 } | 577 } |
| 602 | 578 |
| 603 v8::Local<v8::Value> JS_GetObjectValue(v8::Local<v8::Object> pObj) { | 579 v8::Local<v8::Value> JS_GetObjectValue(v8::Local<v8::Object> pObj) { |
| 604 return pObj; | 580 return pObj; |
| 605 } | 581 } |
| 606 | 582 |
| 607 v8::Local<v8::String> WSToJSString(IJS_Runtime* pJSRuntime, | 583 v8::Local<v8::String> WSToJSString(v8::Isolate* pIsolate, |
| 608 const wchar_t* PropertyName, | 584 const wchar_t* PropertyName, |
| 609 int Len = -1) { | 585 int Len = -1) { |
| 610 CFX_WideString ws = CFX_WideString(PropertyName, Len); | 586 CFX_WideString ws = CFX_WideString(PropertyName, Len); |
| 611 CFX_ByteString bs = ws.UTF8Encode(); | 587 CFX_ByteString bs = ws.UTF8Encode(); |
| 612 if (!pJSRuntime) | 588 if (!pIsolate) |
| 613 pJSRuntime = v8::Isolate::GetCurrent(); | 589 pIsolate = v8::Isolate::GetCurrent(); |
| 614 return v8::String::NewFromUtf8(pJSRuntime, bs.c_str(), | 590 return v8::String::NewFromUtf8(pIsolate, bs.c_str(), |
| 615 v8::NewStringType::kNormal) | 591 v8::NewStringType::kNormal).ToLocalChecked(); |
| 616 .ToLocalChecked(); | |
| 617 } | 592 } |
| 618 | 593 |
| 619 v8::Local<v8::Value> JS_GetObjectElement(IJS_Runtime* pJSRuntime, | 594 v8::Local<v8::Value> JS_GetObjectElement(v8::Isolate* pIsolate, |
| 620 v8::Local<v8::Object> pObj, | 595 v8::Local<v8::Object> pObj, |
| 621 const wchar_t* PropertyName) { | 596 const wchar_t* PropertyName) { |
| 622 if (pObj.IsEmpty()) | 597 if (pObj.IsEmpty()) |
| 623 return v8::Local<v8::Value>(); | 598 return v8::Local<v8::Value>(); |
| 624 v8::Local<v8::Value> val; | 599 v8::Local<v8::Value> val; |
| 625 if (!pObj->Get(pJSRuntime->GetCurrentContext(), | 600 if (!pObj->Get(pIsolate->GetCurrentContext(), |
| 626 WSToJSString(pJSRuntime, PropertyName)) | 601 WSToJSString(pIsolate, PropertyName)).ToLocal(&val)) |
| 627 .ToLocal(&val)) | |
| 628 return v8::Local<v8::Value>(); | 602 return v8::Local<v8::Value>(); |
| 629 return val; | 603 return val; |
| 630 } | 604 } |
| 631 | 605 |
| 632 v8::Local<v8::Array> JS_GetObjectElementNames(IJS_Runtime* pJSRuntime, | 606 v8::Local<v8::Array> JS_GetObjectElementNames(v8::Isolate* pIsolate, |
| 633 v8::Local<v8::Object> pObj) { | 607 v8::Local<v8::Object> pObj) { |
| 634 if (pObj.IsEmpty()) | 608 if (pObj.IsEmpty()) |
| 635 return v8::Local<v8::Array>(); | 609 return v8::Local<v8::Array>(); |
| 636 v8::Local<v8::Array> val; | 610 v8::Local<v8::Array> val; |
| 637 if (!pObj->GetPropertyNames(pJSRuntime->GetCurrentContext()).ToLocal(&val)) | 611 if (!pObj->GetPropertyNames(pIsolate->GetCurrentContext()).ToLocal(&val)) |
| 638 return v8::Local<v8::Array>(); | 612 return v8::Local<v8::Array>(); |
| 639 return val; | 613 return val; |
| 640 } | 614 } |
| 641 | 615 |
| 642 void JS_PutObjectString(IJS_Runtime* pJSRuntime, | 616 void JS_PutObjectString(v8::Isolate* pIsolate, |
| 643 v8::Local<v8::Object> pObj, | 617 v8::Local<v8::Object> pObj, |
| 644 const wchar_t* PropertyName, | 618 const wchar_t* PropertyName, |
| 645 const wchar_t* sValue) // VT_string | 619 const wchar_t* sValue) // VT_string |
| 646 { | 620 { |
| 647 if (pObj.IsEmpty()) | 621 if (pObj.IsEmpty()) |
| 648 return; | 622 return; |
| 649 pObj->Set(pJSRuntime->GetCurrentContext(), | 623 pObj->Set(pIsolate->GetCurrentContext(), WSToJSString(pIsolate, PropertyName), |
| 650 WSToJSString(pJSRuntime, PropertyName), | 624 WSToJSString(pIsolate, sValue)).FromJust(); |
| 651 WSToJSString(pJSRuntime, sValue)) | |
| 652 .FromJust(); | |
| 653 } | 625 } |
| 654 | 626 |
| 655 void JS_PutObjectNumber(IJS_Runtime* pJSRuntime, | 627 void JS_PutObjectNumber(v8::Isolate* pIsolate, |
| 656 v8::Local<v8::Object> pObj, | 628 v8::Local<v8::Object> pObj, |
| 657 const wchar_t* PropertyName, | 629 const wchar_t* PropertyName, |
| 658 int nValue) { | 630 int nValue) { |
| 659 if (pObj.IsEmpty()) | 631 if (pObj.IsEmpty()) |
| 660 return; | 632 return; |
| 661 pObj->Set(pJSRuntime->GetCurrentContext(), | 633 pObj->Set(pIsolate->GetCurrentContext(), WSToJSString(pIsolate, PropertyName), |
| 662 WSToJSString(pJSRuntime, PropertyName), | 634 v8::Int32::New(pIsolate, nValue)).FromJust(); |
| 663 v8::Int32::New(pJSRuntime, nValue)) | |
| 664 .FromJust(); | |
| 665 } | 635 } |
| 666 | 636 |
| 667 void JS_PutObjectNumber(IJS_Runtime* pJSRuntime, | 637 void JS_PutObjectNumber(v8::Isolate* pIsolate, |
| 668 v8::Local<v8::Object> pObj, | 638 v8::Local<v8::Object> pObj, |
| 669 const wchar_t* PropertyName, | 639 const wchar_t* PropertyName, |
| 670 float fValue) { | 640 float fValue) { |
| 671 if (pObj.IsEmpty()) | 641 if (pObj.IsEmpty()) |
| 672 return; | 642 return; |
| 673 pObj->Set(pJSRuntime->GetCurrentContext(), | 643 pObj->Set(pIsolate->GetCurrentContext(), WSToJSString(pIsolate, PropertyName), |
| 674 WSToJSString(pJSRuntime, PropertyName), | 644 v8::Number::New(pIsolate, (double)fValue)).FromJust(); |
| 675 v8::Number::New(pJSRuntime, (double)fValue)) | |
| 676 .FromJust(); | |
| 677 } | 645 } |
| 678 | 646 |
| 679 void JS_PutObjectNumber(IJS_Runtime* pJSRuntime, | 647 void JS_PutObjectNumber(v8::Isolate* pIsolate, |
| 680 v8::Local<v8::Object> pObj, | 648 v8::Local<v8::Object> pObj, |
| 681 const wchar_t* PropertyName, | 649 const wchar_t* PropertyName, |
| 682 double dValue) { | 650 double dValue) { |
| 683 if (pObj.IsEmpty()) | 651 if (pObj.IsEmpty()) |
| 684 return; | 652 return; |
| 685 pObj->Set(pJSRuntime->GetCurrentContext(), | 653 pObj->Set(pIsolate->GetCurrentContext(), WSToJSString(pIsolate, PropertyName), |
| 686 WSToJSString(pJSRuntime, PropertyName), | 654 v8::Number::New(pIsolate, (double)dValue)).FromJust(); |
| 687 v8::Number::New(pJSRuntime, (double)dValue)) | |
| 688 .FromJust(); | |
| 689 } | 655 } |
| 690 | 656 |
| 691 void JS_PutObjectBoolean(IJS_Runtime* pJSRuntime, | 657 void JS_PutObjectBoolean(v8::Isolate* pIsolate, |
| 692 v8::Local<v8::Object> pObj, | 658 v8::Local<v8::Object> pObj, |
| 693 const wchar_t* PropertyName, | 659 const wchar_t* PropertyName, |
| 694 bool bValue) { | 660 bool bValue) { |
| 695 if (pObj.IsEmpty()) | 661 if (pObj.IsEmpty()) |
| 696 return; | 662 return; |
| 697 pObj->Set(pJSRuntime->GetCurrentContext(), | 663 pObj->Set(pIsolate->GetCurrentContext(), WSToJSString(pIsolate, PropertyName), |
| 698 WSToJSString(pJSRuntime, PropertyName), | 664 v8::Boolean::New(pIsolate, bValue)).FromJust(); |
| 699 v8::Boolean::New(pJSRuntime, bValue)) | |
| 700 .FromJust(); | |
| 701 } | 665 } |
| 702 | 666 |
| 703 void JS_PutObjectObject(IJS_Runtime* pJSRuntime, | 667 void JS_PutObjectObject(v8::Isolate* pIsolate, |
| 704 v8::Local<v8::Object> pObj, | 668 v8::Local<v8::Object> pObj, |
| 705 const wchar_t* PropertyName, | 669 const wchar_t* PropertyName, |
| 706 v8::Local<v8::Object> pPut) { | 670 v8::Local<v8::Object> pPut) { |
| 707 if (pObj.IsEmpty()) | 671 if (pObj.IsEmpty()) |
| 708 return; | 672 return; |
| 709 pObj->Set(pJSRuntime->GetCurrentContext(), | 673 pObj->Set(pIsolate->GetCurrentContext(), WSToJSString(pIsolate, PropertyName), |
| 710 WSToJSString(pJSRuntime, PropertyName), pPut) | 674 pPut).FromJust(); |
| 711 .FromJust(); | |
| 712 } | 675 } |
| 713 | 676 |
| 714 void JS_PutObjectNull(IJS_Runtime* pJSRuntime, | 677 void JS_PutObjectNull(v8::Isolate* pIsolate, |
| 715 v8::Local<v8::Object> pObj, | 678 v8::Local<v8::Object> pObj, |
| 716 const wchar_t* PropertyName) { | 679 const wchar_t* PropertyName) { |
| 717 if (pObj.IsEmpty()) | 680 if (pObj.IsEmpty()) |
| 718 return; | 681 return; |
| 719 pObj->Set(pJSRuntime->GetCurrentContext(), | 682 pObj->Set(pIsolate->GetCurrentContext(), WSToJSString(pIsolate, PropertyName), |
| 720 WSToJSString(pJSRuntime, PropertyName), v8::Local<v8::Object>()) | 683 v8::Local<v8::Object>()).FromJust(); |
| 721 .FromJust(); | |
| 722 } | 684 } |
| 723 | 685 |
| 724 v8::Local<v8::Array> JS_NewArray(IJS_Runtime* pJSRuntime) { | 686 v8::Local<v8::Array> JS_NewArray(v8::Isolate* pIsolate) { |
| 725 return v8::Array::New(pJSRuntime); | 687 return v8::Array::New(pIsolate); |
| 726 } | 688 } |
| 727 | 689 |
| 728 unsigned JS_PutArrayElement(IJS_Runtime* pJSRuntime, | 690 unsigned JS_PutArrayElement(v8::Isolate* pIsolate, |
| 729 v8::Local<v8::Array> pArray, | 691 v8::Local<v8::Array> pArray, |
| 730 unsigned index, | 692 unsigned index, |
| 731 v8::Local<v8::Value> pValue, | 693 v8::Local<v8::Value> pValue, |
| 732 FXJSVALUETYPE eType) { | 694 FXJSVALUETYPE eType) { |
| 733 if (pArray.IsEmpty()) | 695 if (pArray.IsEmpty()) |
| 734 return 0; | 696 return 0; |
| 735 if (pArray->Set(pJSRuntime->GetCurrentContext(), index, pValue).IsNothing()) | 697 if (pArray->Set(pIsolate->GetCurrentContext(), index, pValue).IsNothing()) |
| 736 return 0; | 698 return 0; |
| 737 return 1; | 699 return 1; |
| 738 } | 700 } |
| 739 | 701 |
| 740 v8::Local<v8::Value> JS_GetArrayElement(IJS_Runtime* pJSRuntime, | 702 v8::Local<v8::Value> JS_GetArrayElement(v8::Isolate* pIsolate, |
| 741 v8::Local<v8::Array> pArray, | 703 v8::Local<v8::Array> pArray, |
| 742 unsigned index) { | 704 unsigned index) { |
| 743 if (pArray.IsEmpty()) | 705 if (pArray.IsEmpty()) |
| 744 return v8::Local<v8::Value>(); | 706 return v8::Local<v8::Value>(); |
| 745 v8::Local<v8::Value> val; | 707 v8::Local<v8::Value> val; |
| 746 if (!pArray->Get(pJSRuntime->GetCurrentContext(), index).ToLocal(&val)) | 708 if (!pArray->Get(pIsolate->GetCurrentContext(), index).ToLocal(&val)) |
| 747 return v8::Local<v8::Value>(); | 709 return v8::Local<v8::Value>(); |
| 748 return val; | 710 return val; |
| 749 } | 711 } |
| 750 | 712 |
| 751 unsigned JS_GetArrayLength(v8::Local<v8::Array> pArray) { | 713 unsigned JS_GetArrayLength(v8::Local<v8::Array> pArray) { |
| 752 if (pArray.IsEmpty()) | 714 if (pArray.IsEmpty()) |
| 753 return 0; | 715 return 0; |
| 754 return pArray->Length(); | 716 return pArray->Length(); |
| 755 } | 717 } |
| 756 | 718 |
| 757 v8::Local<v8::Value> JS_NewNumber(IJS_Runtime* pJSRuntime, int number) { | 719 v8::Local<v8::Value> JS_NewNumber(v8::Isolate* pIsolate, int number) { |
| 758 return v8::Int32::New(pJSRuntime, number); | 720 return v8::Int32::New(pIsolate, number); |
| 759 } | 721 } |
| 760 | 722 |
| 761 v8::Local<v8::Value> JS_NewNumber(IJS_Runtime* pJSRuntime, double number) { | 723 v8::Local<v8::Value> JS_NewNumber(v8::Isolate* pIsolate, double number) { |
| 762 return v8::Number::New(pJSRuntime, number); | 724 return v8::Number::New(pIsolate, number); |
| 763 } | 725 } |
| 764 | 726 |
| 765 v8::Local<v8::Value> JS_NewNumber(IJS_Runtime* pJSRuntime, float number) { | 727 v8::Local<v8::Value> JS_NewNumber(v8::Isolate* pIsolate, float number) { |
| 766 return v8::Number::New(pJSRuntime, (float)number); | 728 return v8::Number::New(pIsolate, (float)number); |
| 767 } | 729 } |
| 768 | 730 |
| 769 v8::Local<v8::Value> JS_NewBoolean(IJS_Runtime* pJSRuntime, bool b) { | 731 v8::Local<v8::Value> JS_NewBoolean(v8::Isolate* pIsolate, bool b) { |
| 770 return v8::Boolean::New(pJSRuntime, b); | 732 return v8::Boolean::New(pIsolate, b); |
| 771 } | 733 } |
| 772 | 734 |
| 773 v8::Local<v8::Value> JS_NewObject(IJS_Runtime* pJSRuntime, | 735 v8::Local<v8::Value> JS_NewObject(v8::Isolate* pIsolate, |
| 774 v8::Local<v8::Object> pObj) { | 736 v8::Local<v8::Object> pObj) { |
| 775 if (pObj.IsEmpty()) | 737 if (pObj.IsEmpty()) |
| 776 return v8::Local<v8::Value>(); | 738 return v8::Local<v8::Value>(); |
| 777 return pObj->Clone(); | 739 return pObj->Clone(); |
| 778 } | 740 } |
| 779 | 741 |
| 780 v8::Local<v8::Value> JS_NewObject2(IJS_Runtime* pJSRuntime, | 742 v8::Local<v8::Value> JS_NewObject2(v8::Isolate* pIsolate, |
| 781 v8::Local<v8::Array> pObj) { | 743 v8::Local<v8::Array> pObj) { |
| 782 if (pObj.IsEmpty()) | 744 if (pObj.IsEmpty()) |
| 783 return v8::Local<v8::Value>(); | 745 return v8::Local<v8::Value>(); |
| 784 return pObj->Clone(); | 746 return pObj->Clone(); |
| 785 } | 747 } |
| 786 | 748 |
| 787 v8::Local<v8::Value> JS_NewString(IJS_Runtime* pJSRuntime, | 749 v8::Local<v8::Value> JS_NewString(v8::Isolate* pIsolate, |
| 788 const wchar_t* string) { | 750 const wchar_t* string) { |
| 789 return WSToJSString(pJSRuntime, string); | 751 return WSToJSString(pIsolate, string); |
| 790 } | 752 } |
| 791 | 753 |
| 792 v8::Local<v8::Value> JS_NewString(IJS_Runtime* pJSRuntime, | 754 v8::Local<v8::Value> JS_NewString(v8::Isolate* pIsolate, |
| 793 const wchar_t* string, | 755 const wchar_t* string, |
| 794 unsigned nLen) { | 756 unsigned nLen) { |
| 795 return WSToJSString(pJSRuntime, string, nLen); | 757 return WSToJSString(pIsolate, string, nLen); |
| 796 } | 758 } |
| 797 | 759 |
| 798 v8::Local<v8::Value> JS_NewNull() { | 760 v8::Local<v8::Value> JS_NewNull() { |
| 799 return v8::Local<v8::Value>(); | 761 return v8::Local<v8::Value>(); |
| 800 } | 762 } |
| 801 | 763 |
| 802 v8::Local<v8::Value> JS_NewDate(IJS_Runtime* pJSRuntime, double d) { | 764 v8::Local<v8::Value> JS_NewDate(v8::Isolate* pIsolate, double d) { |
| 803 return v8::Date::New(pJSRuntime->GetCurrentContext(), d).ToLocalChecked(); | 765 return v8::Date::New(pIsolate->GetCurrentContext(), d).ToLocalChecked(); |
| 804 } | 766 } |
| 805 | 767 |
| 806 v8::Local<v8::Value> JS_NewValue(IJS_Runtime* pJSRuntime) { | 768 v8::Local<v8::Value> JS_NewValue(v8::Isolate* pIsolate) { |
| 807 return v8::Local<v8::Value>(); | 769 return v8::Local<v8::Value>(); |
| 808 } | 770 } |
| 809 | 771 |
| 810 v8::Local<v8::Value> JS_GetListValue(IJS_Runtime* pJSRuntime, | 772 v8::Local<v8::Value> JS_GetListValue(v8::Isolate* pIsolate, |
| 811 v8::Local<v8::Value> pList, | 773 v8::Local<v8::Value> pList, |
| 812 int index) { | 774 int index) { |
| 813 v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext(); | 775 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
| 814 if (!pList.IsEmpty() && pList->IsObject()) { | 776 if (!pList.IsEmpty() && pList->IsObject()) { |
| 815 v8::Local<v8::Object> obj; | 777 v8::Local<v8::Object> obj; |
| 816 if (pList->ToObject(context).ToLocal(&obj)) { | 778 if (pList->ToObject(context).ToLocal(&obj)) { |
| 817 v8::Local<v8::Value> val; | 779 v8::Local<v8::Value> val; |
| 818 if (obj->Get(context, index).ToLocal(&val)) | 780 if (obj->Get(context, index).ToLocal(&val)) |
| 819 return val; | 781 return val; |
| 820 } | 782 } |
| 821 } | 783 } |
| 822 return v8::Local<v8::Value>(); | 784 return v8::Local<v8::Value>(); |
| 823 } | 785 } |
| 824 | 786 |
| 825 int JS_ToInt32(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue) { | 787 int JS_ToInt32(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue) { |
| 826 if (pValue.IsEmpty()) | 788 if (pValue.IsEmpty()) |
| 827 return 0; | 789 return 0; |
| 828 v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext(); | 790 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
| 829 return pValue->ToInt32(context).ToLocalChecked()->Value(); | 791 return pValue->ToInt32(context).ToLocalChecked()->Value(); |
| 830 } | 792 } |
| 831 | 793 |
| 832 bool JS_ToBoolean(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue) { | 794 bool JS_ToBoolean(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue) { |
| 833 if (pValue.IsEmpty()) | 795 if (pValue.IsEmpty()) |
| 834 return false; | 796 return false; |
| 835 v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext(); | 797 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
| 836 return pValue->ToBoolean(context).ToLocalChecked()->Value(); | 798 return pValue->ToBoolean(context).ToLocalChecked()->Value(); |
| 837 } | 799 } |
| 838 | 800 |
| 839 double JS_ToNumber(IJS_Runtime* pJSRuntime, v8::Local<v8::Value> pValue) { | 801 double JS_ToNumber(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue) { |
| 840 if (pValue.IsEmpty()) | 802 if (pValue.IsEmpty()) |
| 841 return 0.0; | 803 return 0.0; |
| 842 v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext(); | 804 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
| 843 return pValue->ToNumber(context).ToLocalChecked()->Value(); | 805 return pValue->ToNumber(context).ToLocalChecked()->Value(); |
| 844 } | 806 } |
| 845 | 807 |
| 846 v8::Local<v8::Object> JS_ToObject(IJS_Runtime* pJSRuntime, | 808 v8::Local<v8::Object> JS_ToObject(v8::Isolate* pIsolate, |
| 847 v8::Local<v8::Value> pValue) { | 809 v8::Local<v8::Value> pValue) { |
| 848 if (pValue.IsEmpty()) | 810 if (pValue.IsEmpty()) |
| 849 return v8::Local<v8::Object>(); | 811 return v8::Local<v8::Object>(); |
| 850 v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext(); | 812 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
| 851 return pValue->ToObject(context).ToLocalChecked(); | 813 return pValue->ToObject(context).ToLocalChecked(); |
| 852 } | 814 } |
| 853 | 815 |
| 854 CFX_WideString JS_ToString(IJS_Runtime* pJSRuntime, | 816 CFX_WideString JS_ToString(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue) { |
| 855 v8::Local<v8::Value> pValue) { | |
| 856 if (pValue.IsEmpty()) | 817 if (pValue.IsEmpty()) |
| 857 return L""; | 818 return L""; |
| 858 v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext(); | 819 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
| 859 v8::String::Utf8Value s(pValue->ToString(context).ToLocalChecked()); | 820 v8::String::Utf8Value s(pValue->ToString(context).ToLocalChecked()); |
| 860 return CFX_WideString::FromUTF8(*s, s.length()); | 821 return CFX_WideString::FromUTF8(*s, s.length()); |
| 861 } | 822 } |
| 862 | 823 |
| 863 v8::Local<v8::Array> JS_ToArray(IJS_Runtime* pJSRuntime, | 824 v8::Local<v8::Array> JS_ToArray(v8::Isolate* pIsolate, |
| 864 v8::Local<v8::Value> pValue) { | 825 v8::Local<v8::Value> pValue) { |
| 865 if (pValue.IsEmpty()) | 826 if (pValue.IsEmpty()) |
| 866 return v8::Local<v8::Array>(); | 827 return v8::Local<v8::Array>(); |
| 867 v8::Local<v8::Context> context = pJSRuntime->GetCurrentContext(); | 828 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
| 868 return v8::Local<v8::Array>::Cast(pValue->ToObject(context).ToLocalChecked()); | 829 return v8::Local<v8::Array>::Cast(pValue->ToObject(context).ToLocalChecked()); |
| 869 } | 830 } |
| 870 | 831 |
| 871 void JS_ValueCopy(v8::Local<v8::Value>& pTo, v8::Local<v8::Value> pFrom) { | 832 void JS_ValueCopy(v8::Local<v8::Value>& pTo, v8::Local<v8::Value> pFrom) { |
| 872 pTo = pFrom; | 833 pTo = pFrom; |
| 873 } | 834 } |
| 874 | 835 |
| 875 // JavaScript time implement begin. | 836 // JavaScript time implement begin. |
| 876 | 837 |
| 877 double _getLocalTZA() { | 838 double _getLocalTZA() { |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 | 1110 |
| 1150 bool JS_PortIsNan(double d) { | 1111 bool JS_PortIsNan(double d) { |
| 1151 return d != d; | 1112 return d != d; |
| 1152 } | 1113 } |
| 1153 | 1114 |
| 1154 double JS_LocalTime(double d) { | 1115 double JS_LocalTime(double d) { |
| 1155 return JS_GetDateTime() + _getDaylightSavingTA(d); | 1116 return JS_GetDateTime() + _getDaylightSavingTA(d); |
| 1156 } | 1117 } |
| 1157 | 1118 |
| 1158 // JavaScript time implement End. | 1119 // JavaScript time implement End. |
| OLD | NEW |