| Index: fpdfsdk/src/jsapi/fxjs_v8.cpp
|
| diff --git a/fpdfsdk/src/jsapi/fxjs_v8.cpp b/fpdfsdk/src/jsapi/fxjs_v8.cpp
|
| index bd82d6b2cfd8bac43274b5dd1f7b36d06f5e58f2..b0fd6fbb9fa89d3eabf076f149fc2de9402f2c35 100644
|
| --- a/fpdfsdk/src/jsapi/fxjs_v8.cpp
|
| +++ b/fpdfsdk/src/jsapi/fxjs_v8.cpp
|
| @@ -12,14 +12,14 @@
|
| #include <cmath>
|
| #include <limits>
|
|
|
| -#define VALUE_NAME_STRING L"string"
|
| -#define VALUE_NAME_NUMBER L"number"
|
| -#define VALUE_NAME_BOOLEAN L"boolean"
|
| -#define VALUE_NAME_DATE L"date"
|
| -#define VALUE_NAME_OBJECT L"object"
|
| -#define VALUE_NAME_FXOBJ L"fxobj"
|
| -#define VALUE_NAME_NULL L"null"
|
| -#define VALUE_NAME_UNDEFINED L"undefined"
|
| +const wchar_t kFXJSValueNameString[] = L"string";
|
| +const wchar_t kFXJSValueNameNumber[] = L"number";
|
| +const wchar_t kFXJSValueNameBoolean[] = L"boolean";
|
| +const wchar_t kFXJSValueNameDate[] = L"date";
|
| +const wchar_t kFXJSValueNameObject[] = L"object";
|
| +const wchar_t kFXJSValueNameFxobj[] = L"fxobj";
|
| +const wchar_t kFXJSValueNameNull[] = L"null";
|
| +const wchar_t kFXJSValueNameUndefined[] = L"undefined";
|
|
|
| const static FX_DWORD g_nan[2] = {0, 0x7FF80000};
|
| static double GetNan() {
|
| @@ -93,22 +93,18 @@ int JS_DefineObj(v8::Isolate* pIsolate,
|
| return pArray->GetSize() - 1;
|
| }
|
|
|
| -int JS_DefineObjMethod(v8::Isolate* pIsolate,
|
| - int nObjDefnID,
|
| - const wchar_t* sMethodName,
|
| - v8::FunctionCallback pMethodCall) {
|
| +void JS_DefineObjMethod(v8::Isolate* pIsolate,
|
| + int nObjDefnID,
|
| + const wchar_t* sMethodName,
|
| + v8::FunctionCallback pMethodCall) {
|
| v8::Isolate::Scope isolate_scope(pIsolate);
|
| v8::HandleScope handle_scope(pIsolate);
|
|
|
| CFX_WideString ws = CFX_WideString(sMethodName);
|
| CFX_ByteString bsMethodName = ws.UTF8Encode();
|
| -
|
| CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot);
|
| - if (!pArray)
|
| - return 0;
|
|
|
| - if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize())
|
| - return 0;
|
| + // Note: GetAt() halts if out-of-range even in release builds.
|
| CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
|
| v8::Local<v8::ObjectTemplate> objTemp =
|
| v8::Local<v8::ObjectTemplate>::New(pIsolate, pObjDef->m_objTemplate);
|
| @@ -117,26 +113,21 @@ int JS_DefineObjMethod(v8::Isolate* pIsolate,
|
| v8::NewStringType::kNormal).ToLocalChecked(),
|
| v8::FunctionTemplate::New(pIsolate, pMethodCall), v8::ReadOnly);
|
| pObjDef->m_objTemplate.Reset(pIsolate, objTemp);
|
| - return 0;
|
| }
|
|
|
| -int JS_DefineObjProperty(v8::Isolate* pIsolate,
|
| - int nObjDefnID,
|
| - const wchar_t* sPropName,
|
| - v8::AccessorGetterCallback pPropGet,
|
| - v8::AccessorSetterCallback pPropPut) {
|
| +void JS_DefineObjProperty(v8::Isolate* pIsolate,
|
| + int nObjDefnID,
|
| + const wchar_t* sPropName,
|
| + v8::AccessorGetterCallback pPropGet,
|
| + v8::AccessorSetterCallback pPropPut) {
|
| v8::Isolate::Scope isolate_scope(pIsolate);
|
| v8::HandleScope handle_scope(pIsolate);
|
|
|
| CFX_WideString ws = CFX_WideString(sPropName);
|
| CFX_ByteString bsPropertyName = ws.UTF8Encode();
|
| -
|
| CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot);
|
| - if (!pArray)
|
| - return 0;
|
|
|
| - if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize())
|
| - return 0;
|
| + // Note: GetAt() halts if out-of-range even in release builds.
|
| CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
|
| v8::Local<v8::ObjectTemplate> objTemp =
|
| v8::Local<v8::ObjectTemplate>::New(pIsolate, pObjDef->m_objTemplate);
|
| @@ -145,54 +136,43 @@ int JS_DefineObjProperty(v8::Isolate* pIsolate,
|
| v8::NewStringType::kNormal).ToLocalChecked(),
|
| pPropGet, pPropPut);
|
| pObjDef->m_objTemplate.Reset(pIsolate, objTemp);
|
| - return 0;
|
| }
|
|
|
| -int JS_DefineObjAllProperties(v8::Isolate* pIsolate,
|
| - int nObjDefnID,
|
| - v8::NamedPropertyQueryCallback pPropQurey,
|
| - v8::NamedPropertyGetterCallback pPropGet,
|
| - v8::NamedPropertySetterCallback pPropPut,
|
| - v8::NamedPropertyDeleterCallback pPropDel) {
|
| +void JS_DefineObjAllProperties(v8::Isolate* pIsolate,
|
| + int nObjDefnID,
|
| + v8::NamedPropertyQueryCallback pPropQurey,
|
| + v8::NamedPropertyGetterCallback pPropGet,
|
| + v8::NamedPropertySetterCallback pPropPut,
|
| + v8::NamedPropertyDeleterCallback pPropDel) {
|
| v8::Isolate::Scope isolate_scope(pIsolate);
|
| v8::HandleScope handle_scope(pIsolate);
|
| -
|
| CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot);
|
| - if (!pArray)
|
| - return 0;
|
|
|
| - if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize())
|
| - return 0;
|
| + // Note: GetAt() halts if out-of-range even in release builds.
|
| CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
|
| v8::Local<v8::ObjectTemplate> objTemp =
|
| v8::Local<v8::ObjectTemplate>::New(pIsolate, pObjDef->m_objTemplate);
|
| objTemp->SetNamedPropertyHandler(pPropGet, pPropPut, pPropQurey, pPropDel);
|
| pObjDef->m_objTemplate.Reset(pIsolate, objTemp);
|
| - return 0;
|
| }
|
|
|
| -int JS_DefineObjConst(v8::Isolate* pIsolate,
|
| - int nObjDefnID,
|
| - const wchar_t* sConstName,
|
| - v8::Local<v8::Value> pDefault) {
|
| +void JS_DefineObjConst(v8::Isolate* pIsolate,
|
| + int nObjDefnID,
|
| + const wchar_t* sConstName,
|
| + v8::Local<v8::Value> pDefault) {
|
| v8::Isolate::Scope isolate_scope(pIsolate);
|
| v8::HandleScope handle_scope(pIsolate);
|
|
|
| - CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot);
|
| - if (!pArray)
|
| - return 0;
|
| -
|
| CFX_WideString ws = CFX_WideString(sConstName);
|
| CFX_ByteString bsConstName = ws.UTF8Encode();
|
| + CFX_PtrArray* pArray = (CFX_PtrArray*)pIsolate->GetData(g_embedderDataSlot);
|
|
|
| - if (nObjDefnID < 0 || nObjDefnID >= pArray->GetSize())
|
| - return 0;
|
| + // Note: GetAt() halts if out-of-range even in release builds.
|
| CJS_ObjDefintion* pObjDef = (CJS_ObjDefintion*)pArray->GetAt(nObjDefnID);
|
| v8::Local<v8::ObjectTemplate> objTemp =
|
| v8::Local<v8::ObjectTemplate>::New(pIsolate, pObjDef->m_objTemplate);
|
| objTemp->Set(pIsolate, bsConstName.c_str(), pDefault);
|
| pObjDef->m_objTemplate.Reset(pIsolate, objTemp);
|
| - return 0;
|
| }
|
|
|
| static v8::Global<v8::ObjectTemplate>& _getGlobalObjectTemplate(
|
| @@ -211,9 +191,9 @@ static v8::Global<v8::ObjectTemplate>& _getGlobalObjectTemplate(
|
| return gloabalObjectTemplate;
|
| }
|
|
|
| -int JS_DefineGlobalMethod(v8::Isolate* pIsolate,
|
| - const wchar_t* sMethodName,
|
| - v8::FunctionCallback pMethodCall) {
|
| +void JS_DefineGlobalMethod(v8::Isolate* pIsolate,
|
| + const wchar_t* sMethodName,
|
| + v8::FunctionCallback pMethodCall) {
|
| v8::Isolate::Scope isolate_scope(pIsolate);
|
| v8::HandleScope handle_scope(pIsolate);
|
|
|
| @@ -236,13 +216,11 @@ int JS_DefineGlobalMethod(v8::Isolate* pIsolate,
|
| funTempl, v8::ReadOnly);
|
|
|
| globalObjTemp.Reset(pIsolate, objTemp);
|
| -
|
| - return 0;
|
| }
|
|
|
| -int JS_DefineGlobalConst(v8::Isolate* pIsolate,
|
| - const wchar_t* sConstName,
|
| - v8::Local<v8::Value> pDefault) {
|
| +void JS_DefineGlobalConst(v8::Isolate* pIsolate,
|
| + const wchar_t* sConstName,
|
| + v8::Local<v8::Value> pDefault) {
|
| v8::Isolate::Scope isolate_scope(pIsolate);
|
| v8::HandleScope handle_scope(pIsolate);
|
|
|
| @@ -263,8 +241,6 @@ int JS_DefineGlobalConst(v8::Isolate* pIsolate,
|
| pDefault, v8::ReadOnly);
|
|
|
| globalObjTemp.Reset(pIsolate, objTemp);
|
| -
|
| - return 0;
|
| }
|
|
|
| void JS_InitialRuntime(v8::Isolate* pIsolate,
|
| @@ -519,19 +495,19 @@ const wchar_t* JS_GetTypeof(v8::Local<v8::Value> pObj) {
|
| if (pObj.IsEmpty())
|
| return NULL;
|
| if (pObj->IsString())
|
| - return VALUE_NAME_STRING;
|
| + return kFXJSValueNameString;
|
| if (pObj->IsNumber())
|
| - return VALUE_NAME_NUMBER;
|
| + return kFXJSValueNameNumber;
|
| if (pObj->IsBoolean())
|
| - return VALUE_NAME_BOOLEAN;
|
| + return kFXJSValueNameBoolean;
|
| if (pObj->IsDate())
|
| - return VALUE_NAME_DATE;
|
| + return kFXJSValueNameDate;
|
| if (pObj->IsObject())
|
| - return VALUE_NAME_OBJECT;
|
| + return kFXJSValueNameObject;
|
| if (pObj->IsNull())
|
| - return VALUE_NAME_NULL;
|
| + return kFXJSValueNameNull;
|
| if (pObj->IsUndefined())
|
| - return VALUE_NAME_UNDEFINED;
|
| + return kFXJSValueNameUndefined;
|
| return NULL;
|
| }
|
| void JS_SetPrivate(v8::Local<v8::Object> pObj, void* p) {
|
|
|