summaryrefslogtreecommitdiff
path: root/fxjs
diff options
context:
space:
mode:
Diffstat (limited to 'fxjs')
-rw-r--r--fxjs/fxjs_v8.cpp67
-rw-r--r--fxjs/fxjs_v8.h12
2 files changed, 26 insertions, 53 deletions
diff --git a/fxjs/fxjs_v8.cpp b/fxjs/fxjs_v8.cpp
index ce7dc50e63..970e4f144d 100644
--- a/fxjs/fxjs_v8.cpp
+++ b/fxjs/fxjs_v8.cpp
@@ -311,11 +311,8 @@ void CFXJS_Engine::DefineObjMethod(int nObjDefnID,
v8::Local<v8::FunctionTemplate> fun = v8::FunctionTemplate::New(
m_isolate, pMethodCall, v8::Local<v8::Value>(), pObjDef->GetSignature());
fun->RemovePrototype();
- pObjDef->GetInstanceTemplate()->Set(
- v8::String::NewFromUtf8(m_isolate, sMethodName,
- v8::NewStringType::kNormal)
- .ToLocalChecked(),
- fun, v8::ReadOnly);
+ pObjDef->GetInstanceTemplate()->Set(NewString(sMethodName), fun,
+ v8::ReadOnly);
}
void CFXJS_Engine::DefineObjProperty(int nObjDefnID,
@@ -326,10 +323,8 @@ void CFXJS_Engine::DefineObjProperty(int nObjDefnID,
v8::HandleScope handle_scope(m_isolate);
CFXJS_ObjDefinition* pObjDef =
CFXJS_ObjDefinition::ForID(m_isolate, nObjDefnID);
- pObjDef->GetInstanceTemplate()->SetAccessor(
- v8::String::NewFromUtf8(m_isolate, sPropName, v8::NewStringType::kNormal)
- .ToLocalChecked(),
- pPropGet, pPropPut);
+ pObjDef->GetInstanceTemplate()->SetAccessor(NewString(sPropName), pPropGet,
+ pPropPut);
}
void CFXJS_Engine::DefineObjAllProperties(
@@ -363,26 +358,19 @@ void CFXJS_Engine::DefineGlobalMethod(const char* sMethodName,
v8::Local<v8::FunctionTemplate> fun =
v8::FunctionTemplate::New(m_isolate, pMethodCall);
fun->RemovePrototype();
- GetGlobalObjectTemplate(m_isolate)->Set(
- v8::String::NewFromUtf8(m_isolate, sMethodName,
- v8::NewStringType::kNormal)
- .ToLocalChecked(),
- fun, v8::ReadOnly);
+ GetGlobalObjectTemplate(m_isolate)->Set(NewString(sMethodName), fun,
+ v8::ReadOnly);
}
void CFXJS_Engine::DefineGlobalConst(const wchar_t* sConstName,
v8::FunctionCallback pConstGetter) {
v8::Isolate::Scope isolate_scope(m_isolate);
v8::HandleScope handle_scope(m_isolate);
- CFX_ByteString bsConst = FX_UTF8Encode(CFX_WideStringC(sConstName));
v8::Local<v8::FunctionTemplate> fun =
v8::FunctionTemplate::New(m_isolate, pConstGetter);
fun->RemovePrototype();
- GetGlobalObjectTemplate(m_isolate)->SetAccessorProperty(
- v8::String::NewFromUtf8(m_isolate, bsConst.c_str(),
- v8::NewStringType::kNormal)
- .ToLocalChecked(),
- fun);
+ GetGlobalObjectTemplate(m_isolate)->SetAccessorProperty(NewString(sConstName),
+ fun);
}
void CFXJS_Engine::InitializeEngine() {
@@ -419,12 +407,7 @@ void CFXJS_Engine::InitializeEngine() {
.ToLocalChecked());
}
} else if (pObjDef->m_ObjType == FXJSOBJTYPE_STATIC) {
- v8::Local<v8::String> pObjName =
- v8::String::NewFromUtf8(m_isolate, pObjDef->m_ObjName,
- v8::NewStringType::kNormal,
- strlen(pObjDef->m_ObjName))
- .ToLocalChecked();
-
+ v8::Local<v8::String> pObjName = NewString(pObjDef->m_ObjName);
v8::Local<v8::Object> obj = NewFxDynamicObj(i, true);
v8Context->Global()->Set(v8Context, pObjName, obj).FromJust();
m_StaticObjects[i] = new v8::Global<v8::Object>(m_isolate, obj);
@@ -439,7 +422,6 @@ void CFXJS_Engine::ReleaseEngine() {
v8::Local<v8::Context> context =
v8::Local<v8::Context>::New(m_isolate, m_V8PersistentContext);
v8::Context::Scope context_scope(context);
-
FXJS_PerIsolateData* pData = FXJS_PerIsolateData::Get(m_isolate);
if (!pData)
return;
@@ -478,14 +460,9 @@ void CFXJS_Engine::ReleaseEngine() {
int CFXJS_Engine::Execute(const CFX_WideString& script, FXJSErr* pError) {
v8::Isolate::Scope isolate_scope(m_isolate);
v8::TryCatch try_catch(m_isolate);
- CFX_ByteString bsScript = script.UTF8Encode();
v8::Local<v8::Context> context = m_isolate->GetCurrentContext();
v8::Local<v8::Script> compiled_script;
- if (!v8::Script::Compile(context,
- v8::String::NewFromUtf8(m_isolate, bsScript.c_str(),
- v8::NewStringType::kNormal,
- bsScript.GetLength())
- .ToLocalChecked())
+ if (!v8::Script::Compile(context, NewString(script.AsStringC()))
.ToLocal(&compiled_script)) {
v8::String::Utf8Value error(try_catch.Exception());
// TODO(tsepez): return error via pError->message.
@@ -548,14 +525,7 @@ v8::Local<v8::Object> CFXJS_Engine::GetThisObj() {
}
void CFXJS_Engine::Error(const CFX_WideString& message) {
- // Conversion from pdfium's wchar_t wide-strings to v8's uint16_t
- // wide-strings isn't handled by v8, so use UTF8 as a common
- // intermediate format.
- CFX_ByteString utf8_message = message.UTF8Encode();
- m_isolate->ThrowException(v8::String::NewFromUtf8(m_isolate,
- utf8_message.c_str(),
- v8::NewStringType::kNormal)
- .ToLocalChecked());
+ m_isolate->ThrowException(NewString(message.AsStringC()));
}
void CFXJS_Engine::SetObjectPrivate(v8::Local<v8::Object> pObj, void* p) {
@@ -660,30 +630,33 @@ v8::Local<v8::Context> CFXJS_Engine::GetPersistentContext() {
return m_V8PersistentContext.Get(m_isolate);
}
-v8::Local<v8::Value> CFXJS_Engine::NewNumber(int number) {
+v8::Local<v8::Number> CFXJS_Engine::NewNumber(int number) {
return v8::Int32::New(m_isolate, number);
}
-v8::Local<v8::Value> CFXJS_Engine::NewNumber(double number) {
+v8::Local<v8::Number> CFXJS_Engine::NewNumber(double number) {
return v8::Number::New(m_isolate, number);
}
-v8::Local<v8::Value> CFXJS_Engine::NewNumber(float number) {
+v8::Local<v8::Number> CFXJS_Engine::NewNumber(float number) {
return v8::Number::New(m_isolate, (float)number);
}
-v8::Local<v8::Value> CFXJS_Engine::NewBoolean(bool b) {
+v8::Local<v8::Boolean> CFXJS_Engine::NewBoolean(bool b) {
return v8::Boolean::New(m_isolate, b);
}
-v8::Local<v8::Value> CFXJS_Engine::NewString(const CFX_ByteStringC& str) {
+v8::Local<v8::String> CFXJS_Engine::NewString(const CFX_ByteStringC& str) {
v8::Isolate* pIsolate = m_isolate ? m_isolate : v8::Isolate::GetCurrent();
return v8::String::NewFromUtf8(pIsolate, str.c_str(),
v8::NewStringType::kNormal, str.GetLength())
.ToLocalChecked();
}
-v8::Local<v8::Value> CFXJS_Engine::NewString(const CFX_WideStringC& str) {
+v8::Local<v8::String> CFXJS_Engine::NewString(const CFX_WideStringC& str) {
+ // Conversion from pdfium's wchar_t wide-strings to v8's uint16_t
+ // wide-strings isn't handled by v8, so use UTF8 as a common
+ // intermediate format.
return NewString(FX_UTF8Encode(str).AsStringC());
}
diff --git a/fxjs/fxjs_v8.h b/fxjs/fxjs_v8.h
index d44af2f8fa..cdec942d4b 100644
--- a/fxjs/fxjs_v8.h
+++ b/fxjs/fxjs_v8.h
@@ -182,12 +182,12 @@ class CFXJS_Engine {
v8::Local<v8::Value> NewNull();
v8::Local<v8::Array> NewArray();
- v8::Local<v8::Value> NewNumber(int number);
- v8::Local<v8::Value> NewNumber(double number);
- v8::Local<v8::Value> NewNumber(float number);
- v8::Local<v8::Value> NewBoolean(bool b);
- v8::Local<v8::Value> NewString(const CFX_ByteStringC& str);
- v8::Local<v8::Value> NewString(const CFX_WideStringC& str);
+ v8::Local<v8::Number> NewNumber(int number);
+ v8::Local<v8::Number> NewNumber(double number);
+ v8::Local<v8::Number> NewNumber(float number);
+ v8::Local<v8::Boolean> NewBoolean(bool b);
+ v8::Local<v8::String> NewString(const CFX_ByteStringC& str);
+ v8::Local<v8::String> NewString(const CFX_WideStringC& str);
v8::Local<v8::Date> NewDate(double d);
v8::Local<v8::Object> NewFxDynamicObj(int nObjDefnID, bool bStatic = false);