| 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 "xfa/fxjse/context.h" | 7 #include "xfa/fxjse/context.h" |
| 8 | 8 |
| 9 #include "xfa/fxjse/class.h" | 9 #include "xfa/fxjse/class.h" |
| 10 #include "xfa/fxjse/scope_inline.h" | 10 #include "xfa/fxjse/scope_inline.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 CFXJSE_Context* pContext = reinterpret_cast<CFXJSE_Context*>(hContext); | 30 CFXJSE_Context* pContext = reinterpret_cast<CFXJSE_Context*>(hContext); |
| 31 if (!pContext) { | 31 if (!pContext) { |
| 32 return NULL; | 32 return NULL; |
| 33 } | 33 } |
| 34 CFXJSE_Value* lpValue = CFXJSE_Value::Create(pContext->GetRuntime()); | 34 CFXJSE_Value* lpValue = CFXJSE_Value::Create(pContext->GetRuntime()); |
| 35 ASSERT(lpValue); | 35 ASSERT(lpValue); |
| 36 pContext->GetGlobalObject(lpValue); | 36 pContext->GetGlobalObject(lpValue); |
| 37 return reinterpret_cast<FXJSE_HVALUE>(lpValue); | 37 return reinterpret_cast<FXJSE_HVALUE>(lpValue); |
| 38 } | 38 } |
| 39 | 39 |
| 40 FXJSE_HRUNTIME FXJSE_Context_GetRuntime(FXJSE_HCONTEXT hContext) { | |
| 41 CFXJSE_Context* pContext = reinterpret_cast<CFXJSE_Context*>(hContext); | |
| 42 return pContext ? reinterpret_cast<FXJSE_HRUNTIME>(pContext->GetRuntime()) | |
| 43 : NULL; | |
| 44 } | |
| 45 | |
| 46 static const FX_CHAR* szCompatibleModeScripts[] = { | 40 static const FX_CHAR* szCompatibleModeScripts[] = { |
| 47 "(function(global, list) {\n" | 41 "(function(global, list) {\n" |
| 48 " 'use strict';\n" | 42 " 'use strict';\n" |
| 49 " var objname;\n" | 43 " var objname;\n" |
| 50 " for (objname in list) {\n" | 44 " for (objname in list) {\n" |
| 51 " var globalobj = global[objname];\n" | 45 " var globalobj = global[objname];\n" |
| 52 " if (globalobj) {\n" | 46 " if (globalobj) {\n" |
| 53 " list[objname].forEach(function(name) {\n" | 47 " list[objname].forEach(function(name) {\n" |
| 54 " if (!globalobj[name]) {\n" | 48 " if (!globalobj[name]) {\n" |
| 55 " Object.defineProperty(globalobj, name, {\n" | 49 " Object.defineProperty(globalobj, name, {\n" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 hReturnValue->Set(4, hMessage->GetSourceLine()); | 114 hReturnValue->Set(4, hMessage->GetSourceLine()); |
| 121 v8::Maybe<int32_t> maybe_int = | 115 v8::Maybe<int32_t> maybe_int = |
| 122 hMessage->GetStartColumn(pIsolate->GetCurrentContext()); | 116 hMessage->GetStartColumn(pIsolate->GetCurrentContext()); |
| 123 hReturnValue->Set(5, v8::Integer::New(pIsolate, maybe_int.FromMaybe(0))); | 117 hReturnValue->Set(5, v8::Integer::New(pIsolate, maybe_int.FromMaybe(0))); |
| 124 maybe_int = hMessage->GetEndColumn(pIsolate->GetCurrentContext()); | 118 maybe_int = hMessage->GetEndColumn(pIsolate->GetCurrentContext()); |
| 125 hReturnValue->Set(6, v8::Integer::New(pIsolate, maybe_int.FromMaybe(0))); | 119 hReturnValue->Set(6, v8::Integer::New(pIsolate, maybe_int.FromMaybe(0))); |
| 126 } | 120 } |
| 127 return hReturnValue; | 121 return hReturnValue; |
| 128 } | 122 } |
| 129 | 123 |
| 130 FX_BOOL FXJSE_ReturnValue_GetMessage(FXJSE_HVALUE hRetValue, | |
| 131 CFX_ByteString& utf8Name, | |
| 132 CFX_ByteString& utf8Message) { | |
| 133 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hRetValue); | |
| 134 if (!lpValue) { | |
| 135 return FALSE; | |
| 136 } | |
| 137 v8::Isolate* pIsolate = lpValue->GetIsolate(); | |
| 138 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(pIsolate); | |
| 139 v8::Local<v8::Value> hValue = | |
| 140 v8::Local<v8::Value>::New(pIsolate, lpValue->DirectGetValue()); | |
| 141 if (!hValue->IsObject()) { | |
| 142 return FALSE; | |
| 143 } | |
| 144 v8::String::Utf8Value hStringVal0( | |
| 145 hValue.As<v8::Object>()->Get(0)->ToString()); | |
| 146 utf8Name = *hStringVal0; | |
| 147 v8::String::Utf8Value hStringVal1( | |
| 148 hValue.As<v8::Object>()->Get(1)->ToString()); | |
| 149 utf8Message = *hStringVal1; | |
| 150 return TRUE; | |
| 151 } | |
| 152 | |
| 153 FX_BOOL FXJSE_ReturnValue_GetLineInfo(FXJSE_HVALUE hRetValue, | |
| 154 int32_t& nLine, | |
| 155 int32_t& nCol) { | |
| 156 CFXJSE_Value* lpValue = reinterpret_cast<CFXJSE_Value*>(hRetValue); | |
| 157 if (!lpValue) { | |
| 158 return FALSE; | |
| 159 } | |
| 160 v8::Isolate* pIsolate = lpValue->GetIsolate(); | |
| 161 CFXJSE_ScopeUtil_IsolateHandleRootContext scope(pIsolate); | |
| 162 v8::Local<v8::Value> hValue = | |
| 163 v8::Local<v8::Value>::New(pIsolate, lpValue->DirectGetValue()); | |
| 164 if (!hValue->IsObject()) { | |
| 165 return FALSE; | |
| 166 } | |
| 167 v8::MaybeLocal<v8::Int32> maybe_int = | |
| 168 hValue.As<v8::Object>()->Get(3)->ToInt32(pIsolate->GetCurrentContext()); | |
| 169 nLine = maybe_int.FromMaybe(v8::Local<v8::Int32>())->Value(); | |
| 170 maybe_int = | |
| 171 hValue.As<v8::Object>()->Get(5)->ToInt32(pIsolate->GetCurrentContext()); | |
| 172 nCol = maybe_int.FromMaybe(v8::Local<v8::Int32>())->Value(); | |
| 173 return TRUE; | |
| 174 } | |
| 175 | |
| 176 CFXJSE_Context* CFXJSE_Context::Create(v8::Isolate* pIsolate, | 124 CFXJSE_Context* CFXJSE_Context::Create(v8::Isolate* pIsolate, |
| 177 const FXJSE_CLASS* lpGlobalClass, | 125 const FXJSE_CLASS* lpGlobalClass, |
| 178 void* lpGlobalObject) { | 126 void* lpGlobalObject) { |
| 179 CFXJSE_ScopeUtil_IsolateHandle scope(pIsolate); | 127 CFXJSE_ScopeUtil_IsolateHandle scope(pIsolate); |
| 180 CFXJSE_Context* pContext = new CFXJSE_Context(pIsolate); | 128 CFXJSE_Context* pContext = new CFXJSE_Context(pIsolate); |
| 181 CFXJSE_Class* lpGlobalClassObj = NULL; | 129 CFXJSE_Class* lpGlobalClassObj = NULL; |
| 182 v8::Local<v8::ObjectTemplate> hObjectTemplate; | 130 v8::Local<v8::ObjectTemplate> hObjectTemplate; |
| 183 if (lpGlobalClass) { | 131 if (lpGlobalClass) { |
| 184 lpGlobalClassObj = CFXJSE_Class::Create(pContext, lpGlobalClass, TRUE); | 132 lpGlobalClassObj = CFXJSE_Class::Create(pContext, lpGlobalClass, TRUE); |
| 185 ASSERT(lpGlobalClassObj); | 133 ASSERT(lpGlobalClassObj); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 return TRUE; | 214 return TRUE; |
| 267 } | 215 } |
| 268 } | 216 } |
| 269 if (lpRetValue) { | 217 if (lpRetValue) { |
| 270 lpRetValue->m_hValue.Reset(m_pIsolate, | 218 lpRetValue->m_hValue.Reset(m_pIsolate, |
| 271 FXJSE_CreateReturnValue(m_pIsolate, trycatch)); | 219 FXJSE_CreateReturnValue(m_pIsolate, trycatch)); |
| 272 } | 220 } |
| 273 return FALSE; | 221 return FALSE; |
| 274 } | 222 } |
| 275 } | 223 } |
| OLD | NEW |