diff options
-rw-r--r-- | fxjs/cfxjse_value.cpp | 109 |
1 files changed, 71 insertions, 38 deletions
diff --git a/fxjs/cfxjse_value.cpp b/fxjs/cfxjse_value.cpp index 6d0f6f7fdf..7559f02e49 100644 --- a/fxjs/cfxjse_value.cpp +++ b/fxjs/cfxjse_value.cpp @@ -57,9 +57,11 @@ void FXJSE_ThrowMessage(const ByteStringView& utf8Message) { ASSERT(pIsolate); CFXJSE_ScopeUtil_IsolateHandleRootContext scope(pIsolate); - v8::Local<v8::String> hMessage = v8::String::NewFromUtf8( - pIsolate, utf8Message.unterminated_c_str(), v8::String::kNormalString, - utf8Message.GetLength()); + v8::Local<v8::String> hMessage = + v8::String::NewFromUtf8(pIsolate, utf8Message.unterminated_c_str(), + v8::NewStringType::kNormal, + utf8Message.GetLength()) + .ToLocalChecked(); v8::Local<v8::Value> hError = v8::Exception::Error(hMessage); pIsolate->ThrowException(hError); } @@ -97,17 +99,23 @@ void CFXJSE_Value::SetArray( CFXJSE_ScopeUtil_IsolateHandleRootContext scope(GetIsolate()); v8::Local<v8::Array> hArrayObject = v8::Array::New(GetIsolate(), values.size()); + v8::Local<v8::Context> context = GetIsolate()->GetCurrentContext(); uint32_t count = 0; for (auto& v : values) { - hArrayObject->Set(count++, v8::Local<v8::Value>::New( - GetIsolate(), v.get()->DirectGetValue())); + hArrayObject + ->Set( + context, count++, + v8::Local<v8::Value>::New(GetIsolate(), v.get()->DirectGetValue())) + .FromJust(); } m_hValue.Reset(GetIsolate(), hArrayObject); } void CFXJSE_Value::SetDate(double dDouble) { CFXJSE_ScopeUtil_IsolateHandleRootContext scope(GetIsolate()); - v8::Local<v8::Value> hDate = v8::Date::New(GetIsolate(), dDouble); + v8::Local<v8::Value> hDate = + v8::Date::New(GetIsolate()->GetCurrentContext(), dDouble) + .ToLocalChecked(); m_hValue.Reset(GetIsolate(), hDate); } @@ -126,13 +134,16 @@ bool CFXJSE_Value::SetObjectProperty(const ByteStringView& szPropName, if (!hObject->IsObject()) return false; + v8::Local<v8::String> hPropName = + v8::String::NewFromUtf8(GetIsolate(), szPropName.unterminated_c_str(), + v8::NewStringType::kNormal, + szPropName.GetLength()) + .ToLocalChecked(); v8::Local<v8::Value> hPropValue = v8::Local<v8::Value>::New(GetIsolate(), lpPropValue->DirectGetValue()); - return static_cast<bool>(hObject.As<v8::Object>()->Set( - v8::String::NewFromUtf8(GetIsolate(), szPropName.unterminated_c_str(), - v8::String::kNormalString, - szPropName.GetLength()), - hPropValue)); + return hObject.As<v8::Object>() + ->Set(GetIsolate()->GetCurrentContext(), hPropName, hPropValue) + .FromJust(); } bool CFXJSE_Value::GetObjectProperty(const ByteStringView& szPropName, @@ -144,10 +155,15 @@ bool CFXJSE_Value::GetObjectProperty(const ByteStringView& szPropName, if (!hObject->IsObject()) return false; + v8::Local<v8::String> hPropName = + v8::String::NewFromUtf8(GetIsolate(), szPropName.unterminated_c_str(), + v8::NewStringType::kNormal, + szPropName.GetLength()) + .ToLocalChecked(); v8::Local<v8::Value> hPropValue = - hObject.As<v8::Object>()->Get(v8::String::NewFromUtf8( - GetIsolate(), szPropName.unterminated_c_str(), - v8::String::kNormalString, szPropName.GetLength())); + hObject.As<v8::Object>() + ->Get(GetIsolate()->GetCurrentContext(), hPropName) + .ToLocalChecked(); lpPropValue->ForceSetValue(hPropValue); return true; } @@ -162,7 +178,9 @@ bool CFXJSE_Value::SetObjectProperty(uint32_t uPropIdx, v8::Local<v8::Value> hPropValue = v8::Local<v8::Value>::New(GetIsolate(), lpPropValue->DirectGetValue()); - return static_cast<bool>(hObject.As<v8::Object>()->Set(uPropIdx, hPropValue)); + return hObject.As<v8::Object>() + ->Set(GetIsolate()->GetCurrentContext(), uPropIdx, hPropValue) + .FromJust(); } bool CFXJSE_Value::GetObjectPropertyByIdx(uint32_t uPropIdx, @@ -173,7 +191,10 @@ bool CFXJSE_Value::GetObjectPropertyByIdx(uint32_t uPropIdx, if (!hObject->IsObject()) return false; - v8::Local<v8::Value> hPropValue = hObject.As<v8::Object>()->Get(uPropIdx); + v8::Local<v8::Value> hPropValue = + hObject.As<v8::Object>() + ->Get(GetIsolate()->GetCurrentContext(), uPropIdx) + .ToLocalChecked(); lpPropValue->ForceSetValue(hPropValue); return true; } @@ -185,10 +206,14 @@ bool CFXJSE_Value::DeleteObjectProperty(const ByteStringView& szPropName) { if (!hObject->IsObject()) return false; - hObject.As<v8::Object>()->Delete(v8::String::NewFromUtf8( - GetIsolate(), szPropName.unterminated_c_str(), v8::String::kNormalString, - szPropName.GetLength())); - return true; + v8::Local<v8::String> hPropName = + v8::String::NewFromUtf8(GetIsolate(), szPropName.unterminated_c_str(), + v8::NewStringType::kNormal, + szPropName.GetLength()) + .ToLocalChecked(); + return hObject.As<v8::Object>() + ->Delete(GetIsolate()->GetCurrentContext(), hPropName) + .FromJust(); } bool CFXJSE_Value::HasObjectOwnProperty(const ByteStringView& szPropName, @@ -199,10 +224,14 @@ bool CFXJSE_Value::HasObjectOwnProperty(const ByteStringView& szPropName, if (!hObject->IsObject()) return false; - v8::Local<v8::String> hKey = v8::String::NewFromUtf8( - GetIsolate(), szPropName.unterminated_c_str(), v8::String::kNormalString, - szPropName.GetLength()); - return hObject.As<v8::Object>()->HasRealNamedProperty(hKey) || + v8::Local<v8::String> hKey = + v8::String::NewFromUtf8(GetIsolate(), szPropName.unterminated_c_str(), + v8::NewStringType::kNormal, + szPropName.GetLength()) + .ToLocalChecked(); + return hObject.As<v8::Object>() + ->HasRealNamedProperty(GetIsolate()->GetCurrentContext(), hKey) + .FromJust() || (bUseTypeGetter && hObject.As<v8::Object>() ->HasOwnProperty(GetIsolate()->GetCurrentContext(), hKey) @@ -218,15 +247,15 @@ bool CFXJSE_Value::SetObjectOwnProperty(const ByteStringView& szPropName, if (!hObject->IsObject()) return false; + v8::Local<v8::String> hPropName = + v8::String::NewFromUtf8(GetIsolate(), szPropName.unterminated_c_str(), + v8::NewStringType::kNormal, + szPropName.GetLength()) + .ToLocalChecked(); v8::Local<v8::Value> pValue = v8::Local<v8::Value>::New(GetIsolate(), lpPropValue->m_hValue); return hObject.As<v8::Object>() - ->DefineOwnProperty( - GetIsolate()->GetCurrentContext(), - v8::String::NewFromUtf8(GetIsolate(), szPropName.unterminated_c_str(), - v8::String::kNormalString, - szPropName.GetLength()), - pValue) + ->DefineOwnProperty(GetIsolate()->GetCurrentContext(), hPropName, pValue) .FromMaybe(false); } @@ -251,7 +280,9 @@ bool CFXJSE_Value::SetFunctionBind(CFXJSE_Value* lpOldFunction, v8::Local<v8::String> hBinderFuncSource = v8::String::NewFromUtf8(GetIsolate(), "(function (oldfunction, newthis) { return " - "oldfunction.bind(newthis); })"); + "oldfunction.bind(newthis); })", + v8::NewStringType::kNormal) + .ToLocalChecked(); v8::Local<v8::Context> hContext = GetIsolate()->GetCurrentContext(); v8::Local<v8::Function> hBinderFunc = v8::Script::Compile(hContext, hBinderFuncSource) @@ -260,7 +291,8 @@ bool CFXJSE_Value::SetFunctionBind(CFXJSE_Value* lpOldFunction, .ToLocalChecked() .As<v8::Function>(); v8::Local<v8::Value> hBoundFunction = - hBinderFunc->Call(hContext->Global(), 2, rgArgs); + hBinderFunc->Call(hContext, hContext->Global(), 2, rgArgs) + .ToLocalChecked(); if (hBoundFunction.IsEmpty() || !hBoundFunction->IsFunction()) return false; @@ -408,7 +440,8 @@ ByteString CFXJSE_Value::ToString() const { CFXJSE_ScopeUtil_IsolateHandleRootContext scope(GetIsolate()); v8::Local<v8::Value> hValue = v8::Local<v8::Value>::New(GetIsolate(), m_hValue); - v8::Local<v8::String> hString = hValue->ToString(GetIsolate()); + v8::Local<v8::String> hString = + hValue->ToString(GetIsolate()->GetCurrentContext()).ToLocalChecked(); v8::String::Utf8Value hStringVal(GetIsolate(), hString); return ByteString(*hStringVal); } @@ -427,8 +460,7 @@ void CFXJSE_Value::SetNull() { void CFXJSE_Value::SetBoolean(bool bBoolean) { CFXJSE_ScopeUtil_IsolateHandle scope(GetIsolate()); - v8::Local<v8::Value> hValue = - v8::Boolean::New(GetIsolate(), bBoolean != false); + v8::Local<v8::Value> hValue = v8::Boolean::New(GetIsolate(), !!bBoolean); m_hValue.Reset(GetIsolate(), hValue); } @@ -446,9 +478,10 @@ void CFXJSE_Value::SetDouble(double dDouble) { void CFXJSE_Value::SetString(const ByteStringView& szString) { CFXJSE_ScopeUtil_IsolateHandle scope(GetIsolate()); - v8::Local<v8::Value> hValue = v8::String::NewFromUtf8( - GetIsolate(), reinterpret_cast<const char*>(szString.raw_str()), - v8::String::kNormalString, szString.GetLength()); + v8::Local<v8::Value> hValue = + v8::String::NewFromUtf8(GetIsolate(), szString.unterminated_c_str(), + v8::NewStringType::kNormal, szString.GetLength()) + .ToLocalChecked(); m_hValue.Reset(GetIsolate(), hValue); } |