HRESULT WScriptJsrt::CallbackMessage::CallFunction(LPCSTR fileName) { HRESULT hr = S_OK; JsValueRef global; JsValueRef result; JsValueRef stringValue; JsValueType type; JsErrorCode errorCode = JsNoError; IfJsrtErrorHR(ChakraRTInterface::JsGetGlobalObject(&global)); IfJsrtErrorHR(ChakraRTInterface::JsGetValueType(m_function, &type)); if (type == JsString) { AutoString script; size_t length = 0; IfJsrtErrorHR(ChakraRTInterface::JsConvertValueToString(m_function, &stringValue)); IfJsrtErrorHR(ChakraRTInterface::JsStringToPointerUtf8Copy(stringValue, &script, &length)); // Run the code #if ENABLE_TTD errorCode = ChakraRTInterface::JsTTDRunScript(this->GetId(), *script, JS_SOURCE_CONTEXT_NONE, "" /*sourceUrl*/, nullptr /*no result needed*/); #else errorCode = ChakraRTInterface::JsRunScriptUtf8(*script, JS_SOURCE_CONTEXT_NONE, "" /*sourceUrl*/, nullptr /*no result needed*/); #endif } else { #if ENABLE_TTD errorCode = ChakraRTInterface::JsTTDCallFunction(this->GetId(), m_function, &global, 1, &result); #else errorCode = ChakraRTInterface::JsCallFunction(m_function, &global, 1, &result); #endif } if (errorCode != JsNoError) { hr = E_FAIL; PrintException(fileName, errorCode); } Error: return hr; }
HRESULT WScriptJsrt::CallbackMessage::Call(LPCWSTR fileName) { HRESULT hr = S_OK; JsValueRef global; JsValueRef result; JsValueRef stringValue; JsValueType type; JsErrorCode errorCode = JsNoError; IfJsrtErrorHR(ChakraRTInterface::JsGetGlobalObject(&global)); IfJsrtErrorHR(ChakraRTInterface::JsGetValueType(m_function, &type)); if (type == JsString) { LPCWSTR script = nullptr; size_t length = 0; IfJsrtErrorHR(ChakraRTInterface::JsConvertValueToString(m_function, &stringValue)); IfJsrtErrorHR(ChakraRTInterface::JsStringToPointer(stringValue, &script, &length)); // Run the code errorCode = ChakraRTInterface::JsRunScript(script, JS_SOURCE_CONTEXT_NONE, L"" /*sourceUrl*/, nullptr /*no result needed*/); } else { errorCode = ChakraRTInterface::JsCallFunction(m_function, &global, 1, &result); } if (errorCode != JsNoError) { hr = E_FAIL; PrintException(fileName, errorCode); } Error: return hr; }