Use proper namespace instead of CFX_V8 static functions. Closer to what our style guide would suggest. In the end, CFX_V8 should go away as it doesn't buy us anything, esp. given that callbacks will have an isolate but no means of reaching the CFX_V8 wrapping it. Change-Id: If2188767ad829cbeccba007d246ce0f65b0ccf22 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/67491 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fxjs/BUILD.gn b/fxjs/BUILD.gn index f4fbe5f..8f6225f 100644 --- a/fxjs/BUILD.gn +++ b/fxjs/BUILD.gn
@@ -89,6 +89,8 @@ "cjs_zoomtype.h", "fx_date_helpers.cpp", "fx_date_helpers.h", + "fxv8.cpp", + "fxv8.h", "global_timer.cpp", "global_timer.h", "js_define.cpp",
diff --git a/fxjs/cfx_v8.cpp b/fxjs/cfx_v8.cpp index 972f4f7..8972158 100644 --- a/fxjs/cfx_v8.cpp +++ b/fxjs/cfx_v8.cpp
@@ -7,6 +7,7 @@ #include "fxjs/cfx_v8.h" #include "core/fxcrt/fx_memory.h" +#include "fxjs/fxv8.h" #include "third_party/base/allocator/partition_allocator/partition_alloc.h" CFX_V8::CFX_V8(v8::Isolate* isolate) : m_pIsolate(isolate) {} @@ -110,7 +111,7 @@ v8::Local<v8::String> CFX_V8::NewString(ByteStringView str) { v8::Isolate* pIsolate = m_pIsolate ? GetIsolate() : v8::Isolate::GetCurrent(); - return NewStringHelper(pIsolate, str); + return fxv8::NewStringHelper(pIsolate, str); } v8::Local<v8::String> CFX_V8::NewString(WideStringView str) { @@ -135,23 +136,23 @@ } int CFX_V8::ToInt32(v8::Local<v8::Value> pValue) { - return ReentrantToInt32Helper(m_pIsolate.Get(), pValue); + return fxv8::ReentrantToInt32Helper(m_pIsolate.Get(), pValue); } bool CFX_V8::ToBoolean(v8::Local<v8::Value> pValue) { - return ReentrantToBooleanHelper(m_pIsolate.Get(), pValue); + return fxv8::ReentrantToBooleanHelper(m_pIsolate.Get(), pValue); } double CFX_V8::ToDouble(v8::Local<v8::Value> pValue) { - return ReentrantToDoubleHelper(m_pIsolate.Get(), pValue); + return fxv8::ReentrantToDoubleHelper(m_pIsolate.Get(), pValue); } WideString CFX_V8::ToWideString(v8::Local<v8::Value> pValue) { - return ReentrantToWideStringHelper(m_pIsolate.Get(), pValue); + return fxv8::ReentrantToWideStringHelper(m_pIsolate.Get(), pValue); } ByteString CFX_V8::ToByteString(v8::Local<v8::Value> pValue) { - return ReentrantToByteStringHelper(m_pIsolate.Get(), pValue); + return fxv8::ReentrantToByteStringHelper(m_pIsolate.Get(), pValue); } v8::Local<v8::Object> CFX_V8::ToObject(v8::Local<v8::Value> pValue) { @@ -168,70 +169,6 @@ return v8::Local<v8::Array>::Cast(pValue->ToObject(context).ToLocalChecked()); } -// static -v8::Local<v8::String> CFX_V8::NewStringHelper(v8::Isolate* pIsolate, - ByteStringView str) { - return v8::String::NewFromUtf8(pIsolate, str.unterminated_c_str(), - v8::NewStringType::kNormal, str.GetLength()) - .ToLocalChecked(); -} - -// static -v8::Local<v8::String> CFX_V8::NewStringHelper(v8::Isolate* pIsolate, - WideStringView str) { - return NewStringHelper(pIsolate, FX_UTF8Encode(str).AsStringView()); -} - -// static -int CFX_V8::ReentrantToInt32Helper(v8::Isolate* pIsolate, - v8::Local<v8::Value> pValue) { - if (pValue.IsEmpty()) - return 0; - return pValue->Int32Value(pIsolate->GetCurrentContext()).FromMaybe(0); -} - -// static -bool CFX_V8::ReentrantToBooleanHelper(v8::Isolate* pIsolate, - v8::Local<v8::Value> pValue) { - if (pValue.IsEmpty()) - return false; - return pValue->BooleanValue(pIsolate); -} - -// static -double CFX_V8::ReentrantToDoubleHelper(v8::Isolate* pIsolate, - v8::Local<v8::Value> pValue) { - if (pValue.IsEmpty()) - return 0.0; - return pValue->NumberValue(pIsolate->GetCurrentContext()).FromMaybe(0.0); -} - -// static -WideString CFX_V8::ReentrantToWideStringHelper(v8::Isolate* pIsolate, - v8::Local<v8::Value> pValue) { - if (pValue.IsEmpty()) - return WideString(); - v8::MaybeLocal<v8::String> maybe_string = - pValue->ToString(pIsolate->GetCurrentContext()); - if (maybe_string.IsEmpty()) - return WideString(); - v8::String::Utf8Value s(pIsolate, maybe_string.ToLocalChecked()); - return WideString::FromUTF8(ByteStringView(*s, s.length())); -} - -// static -ByteString CFX_V8::ReentrantToByteStringHelper(v8::Isolate* pIsolate, - v8::Local<v8::Value> pValue) { - if (pValue.IsEmpty()) - return ByteString(); - v8::MaybeLocal<v8::String> maybe_string = - pValue->ToString(pIsolate->GetCurrentContext()); - if (maybe_string.IsEmpty()) - return ByteString(); - v8::String::Utf8Value s(pIsolate, maybe_string.ToLocalChecked()); - return ByteString(*s); -} - void* CFX_V8ArrayBufferAllocator::Allocate(size_t length) { if (length > kMaxAllowedBytes) return nullptr;
diff --git a/fxjs/cfx_v8.h b/fxjs/cfx_v8.h index 2f01d4e..cb152ac 100644 --- a/fxjs/cfx_v8.h +++ b/fxjs/cfx_v8.h
@@ -15,22 +15,6 @@ class CFX_V8 { public: - static v8::Local<v8::String> NewStringHelper(v8::Isolate* pIsolate, - ByteStringView str); - static v8::Local<v8::String> NewStringHelper(v8::Isolate* pIsolate, - WideStringView str); - - static int ReentrantToInt32Helper(v8::Isolate* pIsolate, - v8::Local<v8::Value> pValue); - static bool ReentrantToBooleanHelper(v8::Isolate* pIsolate, - v8::Local<v8::Value> pValue); - static double ReentrantToDoubleHelper(v8::Isolate* pIsolate, - v8::Local<v8::Value> pValue); - static WideString ReentrantToWideStringHelper(v8::Isolate* pIsolate, - v8::Local<v8::Value> pValue); - static ByteString ReentrantToByteStringHelper(v8::Isolate* pIsolate, - v8::Local<v8::Value> pValue); - explicit CFX_V8(v8::Isolate* pIsolate); virtual ~CFX_V8();
diff --git a/fxjs/cfxjs_engine.cpp b/fxjs/cfxjs_engine.cpp index c74f57c..2c05992 100644 --- a/fxjs/cfxjs_engine.cpp +++ b/fxjs/cfxjs_engine.cpp
@@ -12,6 +12,7 @@ #include "core/fxcrt/unowned_ptr.h" #include "fxjs/cjs_object.h" +#include "fxjs/fxv8.h" #include "fxjs/xfa/cfxjse_runtimedata.h" #include "third_party/base/ptr_util.h" #include "third_party/base/stl_util.h" @@ -147,7 +148,7 @@ fn->SetCallHandler(CallHandler, v8::Number::New(isolate, eObjType)); if (eObjType == FXJSOBJTYPE_GLOBAL) { fn->InstanceTemplate()->Set(v8::Symbol::GetToStringTag(isolate), - CFX_V8::NewStringHelper(isolate, "global")); + fxv8::NewStringHelper(isolate, "global")); } m_FunctionTemplate.Reset(isolate, fn); m_Signature.Reset(isolate, v8::Signature::New(isolate, fn)); @@ -157,12 +158,12 @@ v8::Isolate* isolate = info.GetIsolate(); if (!info.IsConstructCall()) { isolate->ThrowException( - CFX_V8::NewStringHelper(isolate, "illegal constructor")); + fxv8::NewStringHelper(isolate, "illegal constructor")); return; } if (info.Data().As<v8::Int32>()->Value() != FXJSOBJTYPE_DYNAMIC) { isolate->ThrowException( - CFX_V8::NewStringHelper(isolate, "not a dynamic object")); + fxv8::NewStringHelper(isolate, "not a dynamic object")); return; } v8::Local<v8::Object> holder = info.Holder(); @@ -234,7 +235,7 @@ v8::Local<v8::ObjectTemplate> hGlobalTemplate = v8::ObjectTemplate::New(pIsolate); hGlobalTemplate->Set(v8::Symbol::GetToStringTag(pIsolate), - CFX_V8::NewStringHelper(pIsolate, "global")); + fxv8::NewStringHelper(pIsolate, "global")); g_DefaultGlobalObjectTemplate = new v8::Global<v8::ObjectTemplate>(pIsolate, hGlobalTemplate); }
diff --git a/fxjs/cjs_globalconsts.cpp b/fxjs/cjs_globalconsts.cpp index bea5d54..c10a6f5 100644 --- a/fxjs/cjs_globalconsts.cpp +++ b/fxjs/cjs_globalconsts.cpp
@@ -6,12 +6,13 @@ #include "fxjs/cjs_globalconsts.h" +#include "fxjs/fxv8.h" + #define GLOBAL_STRING(rt, name, value) \ (rt)->DefineGlobalConst( \ (name), [](const v8::FunctionCallbackInfo<v8::Value>& info) { \ - const char* pStr = (value); \ info.GetReturnValue().Set( \ - CFX_V8::NewStringHelper(info.GetIsolate(), pStr)); \ + fxv8::NewStringHelper(info.GetIsolate(), (value))); \ }) // static
diff --git a/fxjs/cjs_runtime.cpp b/fxjs/cjs_runtime.cpp index efa2ba6..dba7e32 100644 --- a/fxjs/cjs_runtime.cpp +++ b/fxjs/cjs_runtime.cpp
@@ -36,6 +36,7 @@ #include "fxjs/cjs_timerobj.h" #include "fxjs/cjs_util.h" #include "fxjs/cjs_zoomtype.h" +#include "fxjs/fxv8.h" #include "fxjs/js_define.h" #include "third_party/base/ptr_util.h" @@ -181,7 +182,7 @@ v8::Isolate::Scope isolate_scope(GetIsolate()); v8::Local<v8::Context> context = GetV8Context(); v8::Context::Scope context_scope(context); - v8::Local<v8::String> str = CFX_V8::NewStringHelper(GetIsolate(), utf8Name); + v8::Local<v8::String> str = fxv8::NewStringHelper(GetIsolate(), utf8Name); v8::MaybeLocal<v8::Value> maybe_propvalue = context->Global()->Get(context, str); if (maybe_propvalue.IsEmpty()) @@ -200,7 +201,7 @@ v8::Isolate::Scope isolate_scope(pIsolate); v8::Local<v8::Context> context = GetV8Context(); v8::Context::Scope context_scope(context); - v8::Local<v8::String> str = CFX_V8::NewStringHelper(pIsolate, utf8Name); + v8::Local<v8::String> str = fxv8::NewStringHelper(pIsolate, utf8Name); v8::Maybe<bool> result = context->Global()->Set(context, str, pValue); return result.IsJust() && result.FromJust(); }
diff --git a/fxjs/fxv8.cpp b/fxjs/fxv8.cpp new file mode 100644 index 0000000..c30461b --- /dev/null +++ b/fxjs/fxv8.cpp
@@ -0,0 +1,67 @@ +// Copyright 2020 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "fxjs/fxv8.h" + +namespace fxv8 { + +v8::Local<v8::String> NewStringHelper(v8::Isolate* pIsolate, + ByteStringView str) { + return v8::String::NewFromUtf8(pIsolate, str.unterminated_c_str(), + v8::NewStringType::kNormal, str.GetLength()) + .ToLocalChecked(); +} + +v8::Local<v8::String> NewStringHelper(v8::Isolate* pIsolate, + WideStringView str) { + return NewStringHelper(pIsolate, FX_UTF8Encode(str).AsStringView()); +} + +int ReentrantToInt32Helper(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue) { + if (pValue.IsEmpty()) + return 0; + return pValue->Int32Value(pIsolate->GetCurrentContext()).FromMaybe(0); +} + +bool ReentrantToBooleanHelper(v8::Isolate* pIsolate, + v8::Local<v8::Value> pValue) { + if (pValue.IsEmpty()) + return false; + return pValue->BooleanValue(pIsolate); +} + +double ReentrantToDoubleHelper(v8::Isolate* pIsolate, + v8::Local<v8::Value> pValue) { + if (pValue.IsEmpty()) + return 0.0; + return pValue->NumberValue(pIsolate->GetCurrentContext()).FromMaybe(0.0); +} + +WideString ReentrantToWideStringHelper(v8::Isolate* pIsolate, + v8::Local<v8::Value> pValue) { + if (pValue.IsEmpty()) + return WideString(); + v8::MaybeLocal<v8::String> maybe_string = + pValue->ToString(pIsolate->GetCurrentContext()); + if (maybe_string.IsEmpty()) + return WideString(); + v8::String::Utf8Value s(pIsolate, maybe_string.ToLocalChecked()); + return WideString::FromUTF8(ByteStringView(*s, s.length())); +} + +ByteString ReentrantToByteStringHelper(v8::Isolate* pIsolate, + v8::Local<v8::Value> pValue) { + if (pValue.IsEmpty()) + return ByteString(); + v8::MaybeLocal<v8::String> maybe_string = + pValue->ToString(pIsolate->GetCurrentContext()); + if (maybe_string.IsEmpty()) + return ByteString(); + v8::String::Utf8Value s(pIsolate, maybe_string.ToLocalChecked()); + return ByteString(*s); +} + +} // namespace fxv8
diff --git a/fxjs/fxv8.h b/fxjs/fxv8.h new file mode 100644 index 0000000..690beb3 --- /dev/null +++ b/fxjs/fxv8.h
@@ -0,0 +1,32 @@ +// Copyright 2020 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef FXJS_FXV8_H_ +#define FXJS_FXV8_H_ + +#include "core/fxcrt/fx_string.h" +#include "v8/include/v8.h" + +namespace fxv8 { + +v8::Local<v8::String> NewStringHelper(v8::Isolate* pIsolate, + ByteStringView str); +v8::Local<v8::String> NewStringHelper(v8::Isolate* pIsolate, + WideStringView str); + +int ReentrantToInt32Helper(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue); +bool ReentrantToBooleanHelper(v8::Isolate* pIsolate, + v8::Local<v8::Value> pValue); +double ReentrantToDoubleHelper(v8::Isolate* pIsolate, + v8::Local<v8::Value> pValue); +WideString ReentrantToWideStringHelper(v8::Isolate* pIsolate, + v8::Local<v8::Value> pValue); +ByteString ReentrantToByteStringHelper(v8::Isolate* pIsolate, + v8::Local<v8::Value> pValue); + +} // namespace fxv8 + +#endif // FXJS_FXV8_H_
diff --git a/fxjs/js_define.cpp b/fxjs/js_define.cpp index fbb1e84..352370f 100644 --- a/fxjs/js_define.cpp +++ b/fxjs/js_define.cpp
@@ -15,6 +15,7 @@ #include "fxjs/cjs_document.h" #include "fxjs/cjs_object.h" #include "fxjs/fx_date_helpers.h" +#include "fxjs/fxv8.h" void JSDestructor(v8::Local<v8::Object> obj) { CFXJS_Engine::SetObjectPrivate(obj, nullptr); @@ -30,17 +31,17 @@ // Use the built-in object method. v8::Local<v8::Value> v = context->Global() - ->Get(context, CFX_V8::NewStringHelper(pIsolate, "Date")) + ->Get(context, fxv8::NewStringHelper(pIsolate, "Date")) .ToLocalChecked(); if (v->IsObject()) { v8::Local<v8::Object> o = v->ToObject(context).ToLocalChecked(); - v = o->Get(context, CFX_V8::NewStringHelper(pIsolate, "parse")) + v = o->Get(context, fxv8::NewStringHelper(pIsolate, "parse")) .ToLocalChecked(); if (v->IsFunction()) { v8::Local<v8::Function> funC = v8::Local<v8::Function>::Cast(v); const int argc = 1; v8::Local<v8::String> timeStr = - CFX_V8::NewStringHelper(pIsolate, str.AsStringView()); + fxv8::NewStringHelper(pIsolate, str.AsStringView()); v8::Local<v8::Value> argv[argc] = {timeStr}; v = funC->Call(context, context->Global(), argc, argv).ToLocalChecked(); if (v->IsNumber()) {
diff --git a/fxjs/xfa/cfxjse_class.cpp b/fxjs/xfa/cfxjse_class.cpp index e4d83b6..75d4081 100644 --- a/fxjs/xfa/cfxjse_class.cpp +++ b/fxjs/xfa/cfxjse_class.cpp
@@ -11,6 +11,7 @@ #include "fxjs/cfx_v8.h" #include "fxjs/cjs_result.h" +#include "fxjs/fxv8.h" #include "fxjs/js_resources.h" #include "fxjs/xfa/cfxjse_context.h" #include "fxjs/xfa/cfxjse_isolatetracker.h" @@ -67,7 +68,7 @@ if (info.This() == info.Holder() && lpClass->name) { ByteString szStringVal = ByteString::Format("[object %s]", lpClass->name); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), szStringVal.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), szStringVal.AsStringView())); return; } v8::Local<v8::String> local_str = @@ -105,7 +106,7 @@ WideString err = JSFormatErrorString(pClassDescriptor->name, *szPropName, result.Error()); v8::Local<v8::String> str = - CFX_V8::NewStringHelper(info.GetIsolate(), err.AsStringView()); + fxv8::NewStringHelper(info.GetIsolate(), err.AsStringView()); info.GetIsolate()->ThrowException(str); return; } @@ -140,7 +141,7 @@ hCallBackInfo->SetAlignedPointerInInternalField( 0, const_cast<FXJSE_CLASS_DESCRIPTOR*>(lpClass)); hCallBackInfo->SetInternalField( - 1, CFX_V8::NewStringHelper(pIsolate, szPropName)); + 1, fxv8::NewStringHelper(pIsolate, szPropName)); pValue->ForceSetValue( v8::Function::New(pIsolate->GetCurrentContext(), DynPropGetterAdapter_MethodCallback, hCallBackInfo, @@ -283,7 +284,7 @@ v8::External::New( pIsolate, const_cast<FXJSE_CLASS_DESCRIPTOR*>(lpClassDefinition))); hFunctionTemplate->SetClassName( - CFX_V8::NewStringHelper(pIsolate, lpClassDefinition->name)); + fxv8::NewStringHelper(pIsolate, lpClassDefinition->name)); hFunctionTemplate->InstanceTemplate()->SetInternalFieldCount(2); v8::Local<v8::ObjectTemplate> hObjectTemplate = hFunctionTemplate->InstanceTemplate(); @@ -297,7 +298,7 @@ lpClassDefinition->methods + i))); fun->RemovePrototype(); hObjectTemplate->Set( - CFX_V8::NewStringHelper(pIsolate, lpClassDefinition->methods[i].name), + fxv8::NewStringHelper(pIsolate, lpClassDefinition->methods[i].name), fun, static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontDelete)); } @@ -309,7 +310,7 @@ v8::External::New( pIsolate, const_cast<FXJSE_CLASS_DESCRIPTOR*>(lpClassDefinition))); fn->RemovePrototype(); - hObjectTemplate->Set(CFX_V8::NewStringHelper(pIsolate, "toString"), fn); + hObjectTemplate->Set(fxv8::NewStringHelper(pIsolate, "toString"), fn); } pClass->m_hTemplate.Reset(lpContext->GetIsolate(), hFunctionTemplate); CFXJSE_Class* pResult = pClass.get();
diff --git a/fxjs/xfa/cfxjse_context.cpp b/fxjs/xfa/cfxjse_context.cpp index c5eafbe..a250755 100644 --- a/fxjs/xfa/cfxjse_context.cpp +++ b/fxjs/xfa/cfxjse_context.cpp
@@ -9,6 +9,7 @@ #include <utility> #include "fxjs/cfxjs_engine.h" +#include "fxjs/fxv8.h" #include "fxjs/xfa/cfxjse_class.h" #include "fxjs/xfa/cfxjse_isolatetracker.h" #include "fxjs/xfa/cfxjse_runtimedata.h" @@ -68,18 +69,18 @@ v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); v8::Local<v8::Value> hException = trycatch->Exception(); if (hException->IsObject()) { - v8::Local<v8::String> hNameStr = CFX_V8::NewStringHelper(pIsolate, "name"); + v8::Local<v8::String> hNameStr = fxv8::NewStringHelper(pIsolate, "name"); v8::Local<v8::Value> hValue = hException.As<v8::Object>()->Get(context, hNameStr).ToLocalChecked(); if (hValue->IsString() || hValue->IsStringObject()) { hReturnValue->Set(context, 0, hValue).FromJust(); } else { v8::Local<v8::String> hErrorStr = - CFX_V8::NewStringHelper(pIsolate, "Error"); + fxv8::NewStringHelper(pIsolate, "Error"); hReturnValue->Set(context, 0, hErrorStr).FromJust(); } v8::Local<v8::String> hMessageStr = - CFX_V8::NewStringHelper(pIsolate, "message"); + fxv8::NewStringHelper(pIsolate, "message"); hValue = hException.As<v8::Object>()->Get(context, hMessageStr).ToLocalChecked(); if (hValue->IsString() || hValue->IsStringObject()) @@ -87,8 +88,7 @@ else hReturnValue->Set(context, 1, hMessage->Get()).FromJust(); } else { - v8::Local<v8::String> hErrorStr = - CFX_V8::NewStringHelper(pIsolate, "Error"); + v8::Local<v8::String> hErrorStr = fxv8::NewStringHelper(pIsolate, "Error"); hReturnValue->Set(context, 0, hErrorStr).FromJust(); hReturnValue->Set(context, 1, hMessage->Get()).FromJust(); } @@ -191,7 +191,7 @@ hObjectTemplate->SetInternalFieldCount(2); } hObjectTemplate->Set(v8::Symbol::GetToStringTag(pIsolate), - CFX_V8::NewStringHelper(pIsolate, "global")); + fxv8::NewStringHelper(pIsolate, "global")); v8::Local<v8::Context> hNewContext = v8::Context::New(pIsolate, nullptr, hObjectTemplate); @@ -252,7 +252,7 @@ v8::Local<v8::Context> hContext = GetIsolate()->GetCurrentContext(); v8::TryCatch trycatch(GetIsolate()); v8::Local<v8::String> hScriptString = - CFX_V8::NewStringHelper(GetIsolate(), szScript); + fxv8::NewStringHelper(GetIsolate(), szScript); if (!lpNewThisObject) { v8::Local<v8::Script> hScript; if (v8::Script::Compile(hContext, hScriptString).ToLocal(&hScript)) { @@ -273,7 +273,7 @@ v8::Local<v8::Value> hNewThis = v8::Local<v8::Value>::New( GetIsolate(), lpNewThisObject->DirectGetValue()); ASSERT(!hNewThis.IsEmpty()); - v8::Local<v8::String> hEval = CFX_V8::NewStringHelper( + v8::Local<v8::String> hEval = fxv8::NewStringHelper( GetIsolate(), "(function () { return eval(arguments[0]); })"); v8::Local<v8::Script> hWrapper = v8::Script::Compile(hContext, hEval).ToLocalChecked();
diff --git a/fxjs/xfa/cfxjse_formcalc_context.cpp b/fxjs/xfa/cfxjse_formcalc_context.cpp index 9d702b6..cad930c 100644 --- a/fxjs/xfa/cfxjse_formcalc_context.cpp +++ b/fxjs/xfa/cfxjse_formcalc_context.cpp
@@ -14,6 +14,7 @@ #include "core/fxcrt/cfx_widetextbuf.h" #include "core/fxcrt/fx_extension.h" #include "core/fxcrt/fx_random.h" +#include "fxjs/fxv8.h" #include "fxjs/xfa/cfxjse_class.h" #include "fxjs/xfa/cfxjse_context.h" #include "fxjs/xfa/cfxjse_engine.h" @@ -1941,7 +1942,7 @@ ByteString bsFormat = GetStandardDateFormat(pThis, iStyle, bsLocale.AsStringView()); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), bsFormat.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), bsFormat.AsStringView())); } // static @@ -2050,7 +2051,7 @@ ByteString bsFormat = GetLocalDateFormat(pThis, iStyle, bsLocale.AsStringView(), false); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), bsFormat.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), bsFormat.AsStringView())); } // static @@ -2088,7 +2089,7 @@ ByteString bsFormat = GetLocalTimeFormat(pThis, iStyle, bsLocale.AsStringView(), false); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), bsFormat.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), bsFormat.AsStringView())); } // static @@ -2229,7 +2230,7 @@ ByteString::Format("%d%02d%02d", iYear + i, iMonth, iDay).AsStringView(), bsFormat.AsStringView(), bsLocale.AsStringView()); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), bsLocalDate.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), bsLocalDate.AsStringView())); } // static @@ -2276,7 +2277,7 @@ ByteString bsGMTTime = Num2AllTime(pThis, iTime, bsFormat.AsStringView(), bsLocale.AsStringView(), true); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), bsGMTTime.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), bsGMTTime.AsStringView())); } // static @@ -2324,7 +2325,7 @@ Num2AllTime(pThis, static_cast<int32_t>(fTime), bsFormat.AsStringView(), bsLocale.AsStringView(), false); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), bsLocalTime.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), bsLocalTime.AsStringView())); } // static @@ -2462,7 +2463,7 @@ ByteString bsFormat = GetStandardTimeFormat(pThis, iStyle, bsLocale.AsStringView()); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), bsFormat.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), bsFormat.AsStringView())); } // static @@ -3071,16 +3072,16 @@ propertyValue->ToString().AsStringView(), newPropertyValue.get()); } ByteString bsChosen = ValueToUTF8String(newPropertyValue.get()); - info.GetReturnValue().Set(CFX_V8::NewStringHelper( - info.GetIsolate(), bsChosen.AsStringView())); + info.GetReturnValue().Set( + fxv8::NewStringHelper(info.GetIsolate(), bsChosen.AsStringView())); bFound = true; } } else { iValueIndex++; if (iValueIndex == iIndex) { ByteString bsChosen = ValueToUTF8String(argIndexValue.get()); - info.GetReturnValue().Set(CFX_V8::NewStringHelper( - info.GetIsolate(), bsChosen.AsStringView())); + info.GetReturnValue().Set( + fxv8::NewStringHelper(info.GetIsolate(), bsChosen.AsStringView())); bFound = true; } } @@ -3381,24 +3382,19 @@ } switch (eParserStatus) { case VALUETYPE_ISCM: - info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), "cm")); + info.GetReturnValue().Set(fxv8::NewStringHelper(info.GetIsolate(), "cm")); break; case VALUETYPE_ISMM: - info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), "mm")); + info.GetReturnValue().Set(fxv8::NewStringHelper(info.GetIsolate(), "mm")); break; case VALUETYPE_ISPT: - info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), "pt")); + info.GetReturnValue().Set(fxv8::NewStringHelper(info.GetIsolate(), "pt")); break; case VALUETYPE_ISMP: - info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), "mp")); + info.GetReturnValue().Set(fxv8::NewStringHelper(info.GetIsolate(), "mp")); break; default: - info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), "in")); + info.GetReturnValue().Set(fxv8::NewStringHelper(info.GetIsolate(), "in")); break; } } @@ -3596,7 +3592,7 @@ return; } info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), bsResult.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), bsResult.AsStringView())); } // static @@ -3620,7 +3616,7 @@ WideString::FromUTF8(ValueToUTF8String(argOne.get()).AsStringView())); auto result = FX_UTF8Encode(decoded.AsStringView()); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), result.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), result.AsStringView())); return; } @@ -3646,7 +3642,7 @@ auto result = FX_UTF8Encode(decoded.AsStringView()); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), result.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), result.AsStringView())); } // static @@ -3668,7 +3664,7 @@ WideString encoded = EncodeURL(ValueToUTF8String(argOne.get())); auto result = FX_UTF8Encode(encoded.AsStringView()); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), result.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), result.AsStringView())); return; } @@ -3691,7 +3687,7 @@ auto result = FX_UTF8Encode(encoded.AsStringView()); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), result.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), result.AsStringView())); } // static @@ -3770,8 +3766,8 @@ info.GetReturnValue().SetEmptyString(); return; } - info.GetReturnValue().Set(CFX_V8::NewStringHelper( - info.GetIsolate(), wsRet.ToUTF8().AsStringView())); + info.GetReturnValue().Set( + fxv8::NewStringHelper(info.GetIsolate(), wsRet.ToUTF8().AsStringView())); } // static @@ -3793,7 +3789,7 @@ ByteString bsSource = ValueToUTF8String(argOne.get()); int32_t count = std::max(0, ValueToInteger(pThis, argTwo.get())); - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), bsSource.First(count).AsStringView())); } @@ -3846,7 +3842,7 @@ auto result = FX_UTF8Encode(szLowBuf.AsStringView()); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), result.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), result.AsStringView())); } // static @@ -3867,7 +3863,7 @@ ByteString bsSource = ValueToUTF8String(argOne.get()); bsSource.TrimLeft(); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), bsSource.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), bsSource.AsStringView())); } // static @@ -3908,7 +3904,7 @@ } auto result = localeValue.GetValue().ToUTF8(); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), result.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), result.AsStringView())); return; } @@ -3933,7 +3929,7 @@ } auto result = localeValue.GetValue().ToUTF8(); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), result.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), result.AsStringView())); return; } case XFA_VT_DATE: { @@ -3946,7 +3942,7 @@ } auto result = localeValue.GetValue().ToUTF8(); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), result.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), result.AsStringView())); return; } case XFA_VT_TIME: { @@ -3959,7 +3955,7 @@ } auto result = localeValue.GetValue().ToUTF8(); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), result.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), result.AsStringView())); return; } case XFA_VT_TEXT: { @@ -3972,7 +3968,7 @@ } auto result = localeValue.GetValue().ToUTF8(); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), result.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), result.AsStringView())); return; } case XFA_VT_FLOAT: { @@ -4003,8 +3999,8 @@ pLocale, pMgr); if (localeValue.IsValid()) { auto result = localeValue.GetValue().ToUTF8(); - info.GetReturnValue().Set(CFX_V8::NewStringHelper( - info.GetIsolate(), result.AsStringView())); + info.GetReturnValue().Set( + fxv8::NewStringHelper(info.GetIsolate(), result.AsStringView())); return; } } @@ -4070,7 +4066,7 @@ } } szResult << '\0'; - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), ByteStringView(szResult.str().c_str()))); } @@ -4093,7 +4089,7 @@ ByteString bsSource = ValueToUTF8String(argOne.get()); int32_t count = std::max(0, ValueToInteger(pThis, argTwo.get())); - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), bsSource.Last(count).AsStringView())); } @@ -4115,7 +4111,7 @@ ByteString bsSource = ValueToUTF8String(argOne.get()); bsSource.TrimRight(); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), bsSource.AsStringView())); + fxv8::NewStringHelper(info.GetIsolate(), bsSource.AsStringView())); } // static @@ -4141,7 +4137,7 @@ index++; } spaceString << '\0'; - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), ByteStringView(spaceString.str().c_str()))); } @@ -4202,7 +4198,7 @@ ++i; } resultBuf << '\0'; - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), ByteStringView(resultBuf.str().c_str()))); return; } @@ -4222,7 +4218,7 @@ } resultBuf << pData; } - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), ByteStringView(resultBuf.str().c_str()))); return; } @@ -4259,7 +4255,7 @@ ++i; } resultBuf << '\0'; - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), ByteStringView(resultBuf.str().c_str()))); } @@ -4311,7 +4307,7 @@ ++i; } szResult << '\0'; - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), ByteStringView(szResult.str().c_str()))); ; } @@ -4353,7 +4349,7 @@ // Negative values are treated as 0. Can't clamp() due to sign mismatches. size_t iCount = std::max(ValueToInteger(pThis, end_value.get()), 0); iCount = std::min(iCount, iLength - iStart); - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), bsSource.Substr(iStart, iCount).AsStringView())); } @@ -4372,7 +4368,7 @@ std::unique_ptr<CFXJSE_Value> argOne = GetSimpleValue(pThis, info, 0); iNum = static_cast<int32_t>(ValueToFloat(pThis, argOne.get())); } - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), GUIDString(!!iNum).AsStringView())); } @@ -4409,7 +4405,7 @@ } upperStringBuf.AppendChar(0); - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), FX_UTF8Encode(upperStringBuf.AsStringView()).AsStringView())); } @@ -4455,11 +4451,11 @@ if (std::isnan(fNumber) || fNumber < 0.0f || fNumber > 922337203685477550.0f) { - info.GetReturnValue().Set(CFX_V8::NewStringHelper(info.GetIsolate(), "*")); + info.GetReturnValue().Set(fxv8::NewStringHelper(info.GetIsolate(), "*")); return; } - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), WordUS(ByteString::Format("%.2f", fNumber), iIdentifier).AsStringView())); } @@ -4493,7 +4489,7 @@ std::vector<uint8_t> dataBuf(size); pFile->ReadBlock(dataBuf.data(), size); info.GetReturnValue().Set( - CFX_V8::NewStringHelper(info.GetIsolate(), ByteStringView(dataBuf))); + fxv8::NewStringHelper(info.GetIsolate(), ByteStringView(dataBuf))); } // static @@ -4549,7 +4545,7 @@ pContext->ThrowServerDeniedException(); return; } - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), decodedResponse.ToUTF8().AsStringView())); } @@ -5068,7 +5064,7 @@ pContext->ThrowCompilerErrorException(); return; } - info.GetReturnValue().Set(CFX_V8::NewStringHelper( + info.GetReturnValue().Set(fxv8::NewStringHelper( info.GetIsolate(), FX_UTF8Encode(wsJavaScriptBuf.AsStringView()).AsStringView())); } @@ -5762,11 +5758,11 @@ } const ByteString bsName = - CFX_V8::ReentrantToByteStringHelper(info.GetIsolate(), info[2]); + fxv8::ReentrantToByteStringHelper(info.GetIsolate(), info[2]); const bool bHasNoResolveName = bDotAccessor && bsName.IsEmpty(); ByteString bsSomExp = GenerateSomExpression( bsName.AsStringView(), - CFX_V8::ReentrantToInt32Helper(info.GetIsolate(), info[3]), iIndexValue, + fxv8::ReentrantToInt32Helper(info.GetIsolate(), info[3]), iIndexValue, bIsStar); auto argAccessor = @@ -5826,7 +5822,7 @@ XFA_RESOLVENODE_RS resolveNodeRS; bool bRet = false; ByteString bsAccessorName = - CFX_V8::ReentrantToByteStringHelper(info.GetIsolate(), info[1]); + fxv8::ReentrantToByteStringHelper(info.GetIsolate(), info[1]); if (argAccessor->IsObject() || (argAccessor->IsNull() && bsAccessorName.IsEmpty())) { bRet = ResolveObjects(pThis, argAccessor.get(), bsSomExp.AsStringView(),
diff --git a/fxjs/xfa/cfxjse_runtimedata.cpp b/fxjs/xfa/cfxjse_runtimedata.cpp index 2a7acbf..87ff7eb 100644 --- a/fxjs/xfa/cfxjse_runtimedata.cpp +++ b/fxjs/xfa/cfxjse_runtimedata.cpp
@@ -9,6 +9,7 @@ #include <utility> #include "fxjs/cfxjs_engine.h" +#include "fxjs/fxv8.h" #include "fxjs/xfa/cfxjse_isolatetracker.h" CFXJSE_RuntimeData::CFXJSE_RuntimeData() = default; @@ -25,7 +26,7 @@ v8::Local<v8::ObjectTemplate> hGlobalTemplate = hFuncTemplate->InstanceTemplate(); hGlobalTemplate->Set(v8::Symbol::GetToStringTag(pIsolate), - CFX_V8::NewStringHelper(pIsolate, "global")); + fxv8::NewStringHelper(pIsolate, "global")); v8::Local<v8::Context> hContext = v8::Context::New(pIsolate, 0, hGlobalTemplate);
diff --git a/fxjs/xfa/cfxjse_value.cpp b/fxjs/xfa/cfxjse_value.cpp index 40b3d79..97551e5 100644 --- a/fxjs/xfa/cfxjse_value.cpp +++ b/fxjs/xfa/cfxjse_value.cpp
@@ -9,6 +9,7 @@ #include <math.h> #include "fxjs/cfx_v8.h" +#include "fxjs/fxv8.h" #include "fxjs/xfa/cfxjse_class.h" #include "fxjs/xfa/cfxjse_context.h" #include "fxjs/xfa/cfxjse_isolatetracker.h" @@ -59,8 +60,7 @@ ASSERT(pIsolate); CFXJSE_ScopeUtil_IsolateHandleRootContext scope(pIsolate); - v8::Local<v8::String> hMessage = - CFX_V8::NewStringHelper(pIsolate, utf8Message); + v8::Local<v8::String> hMessage = fxv8::NewStringHelper(pIsolate, utf8Message); v8::Local<v8::Value> hError = v8::Exception::Error(hMessage); pIsolate->ThrowException(hError); } @@ -138,7 +138,7 @@ return false; v8::Local<v8::String> hPropName = - CFX_V8::NewStringHelper(GetIsolate(), szPropName); + fxv8::NewStringHelper(GetIsolate(), szPropName); v8::Local<v8::Value> hPropValue = v8::Local<v8::Value>::New(GetIsolate(), lpPropValue->DirectGetValue()); v8::Maybe<bool> result = hObject.As<v8::Object>()->Set( @@ -156,7 +156,7 @@ return false; v8::Local<v8::String> hPropName = - CFX_V8::NewStringHelper(GetIsolate(), szPropName); + fxv8::NewStringHelper(GetIsolate(), szPropName); v8::Local<v8::Value> hPropValue = hObject.As<v8::Object>() ->Get(GetIsolate()->GetCurrentContext(), hPropName) @@ -188,7 +188,7 @@ return hObject->IsObject() && hObject.As<v8::Object>() ->Delete(GetIsolate()->GetCurrentContext(), - CFX_V8::NewStringHelper(GetIsolate(), szPropName)) + fxv8::NewStringHelper(GetIsolate(), szPropName)) .FromJust(); } @@ -200,8 +200,7 @@ if (!hObject->IsObject()) return false; - v8::Local<v8::String> hKey = - CFX_V8::NewStringHelper(GetIsolate(), szPropName); + v8::Local<v8::String> hKey = fxv8::NewStringHelper(GetIsolate(), szPropName); return hObject.As<v8::Object>() ->HasRealNamedProperty(GetIsolate()->GetCurrentContext(), hKey) .FromJust() || @@ -221,7 +220,7 @@ return false; v8::Local<v8::String> hPropName = - CFX_V8::NewStringHelper(GetIsolate(), szPropName); + fxv8::NewStringHelper(GetIsolate(), szPropName); v8::Local<v8::Value> pValue = v8::Local<v8::Value>::New(GetIsolate(), lpPropValue->m_hValue); return hObject.As<v8::Object>() @@ -249,9 +248,9 @@ rgArgs[1] = hNewThis; v8::Local<v8::String> hBinderFuncSource = - CFX_V8::NewStringHelper(GetIsolate(), - "(function (oldfunction, newthis) { return " - "oldfunction.bind(newthis); })"); + fxv8::NewStringHelper(GetIsolate(), + "(function (oldfunction, newthis) { return " + "oldfunction.bind(newthis); })"); v8::Local<v8::Context> hContext = GetIsolate()->GetCurrentContext(); v8::Local<v8::Function> hBinderFunc = v8::Script::Compile(hContext, hBinderFuncSource) @@ -366,7 +365,7 @@ bool CFXJSE_Value::ToBoolean() const { ASSERT(!IsEmpty()); CFXJSE_ScopeUtil_IsolateHandleRootContext scope(GetIsolate()); - return CFX_V8::ReentrantToBooleanHelper( + return fxv8::ReentrantToBooleanHelper( GetIsolate(), v8::Local<v8::Value>::New(GetIsolate(), m_hValue)); } @@ -377,21 +376,21 @@ double CFXJSE_Value::ToDouble() const { ASSERT(!IsEmpty()); CFXJSE_ScopeUtil_IsolateHandleRootContext scope(GetIsolate()); - return CFX_V8::ReentrantToDoubleHelper( + return fxv8::ReentrantToDoubleHelper( GetIsolate(), v8::Local<v8::Value>::New(GetIsolate(), m_hValue)); } int32_t CFXJSE_Value::ToInteger() const { ASSERT(!IsEmpty()); CFXJSE_ScopeUtil_IsolateHandleRootContext scope(GetIsolate()); - return CFX_V8::ReentrantToInt32Helper( + return fxv8::ReentrantToInt32Helper( GetIsolate(), v8::Local<v8::Value>::New(GetIsolate(), m_hValue)); } ByteString CFXJSE_Value::ToString() const { ASSERT(!IsEmpty()); CFXJSE_ScopeUtil_IsolateHandleRootContext scope(GetIsolate()); - return CFX_V8::ReentrantToByteStringHelper( + return fxv8::ReentrantToByteStringHelper( GetIsolate(), v8::Local<v8::Value>::New(GetIsolate(), m_hValue)); } @@ -427,6 +426,6 @@ void CFXJSE_Value::SetString(ByteStringView szString) { CFXJSE_ScopeUtil_IsolateHandle scope(GetIsolate()); - v8::Local<v8::Value> hValue = CFX_V8::NewStringHelper(GetIsolate(), szString); + v8::Local<v8::Value> hValue = fxv8::NewStringHelper(GetIsolate(), szString); m_hValue.Reset(GetIsolate(), hValue); }