Improve wxWebViewEdge::RunScriptSync() error handling
This commit is contained in:
@@ -702,29 +702,32 @@ bool wxWebViewEdge::RunScriptSync(const wxString& javascript, wxString* output)
|
|||||||
{
|
{
|
||||||
bool scriptExecuted = false;
|
bool scriptExecuted = false;
|
||||||
|
|
||||||
HRESULT hr = m_impl->m_webView->ExecuteScript(javascript.wc_str(), Callback<IWebView2ExecuteScriptCompletedHandler>(
|
// Start script execution
|
||||||
[&scriptExecuted, output](HRESULT error, PCWSTR result) -> HRESULT
|
HRESULT executionResult = m_impl->m_webView->ExecuteScript(javascript.wc_str(), Callback<IWebView2ExecuteScriptCompletedHandler>(
|
||||||
|
[&scriptExecuted, &executionResult, output](HRESULT error, PCWSTR result) -> HRESULT
|
||||||
{
|
{
|
||||||
|
// Handle script execution callback
|
||||||
if (error == S_OK)
|
if (error == S_OK)
|
||||||
{
|
{
|
||||||
if (output)
|
if (output)
|
||||||
output->assign(result);
|
output->assign(result);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
wxLogError(_("RunScript failed: %.8x"), error);
|
executionResult = error;
|
||||||
|
|
||||||
scriptExecuted = true;
|
scriptExecuted = true;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}).Get());
|
}).Get());
|
||||||
|
|
||||||
|
// Wait for script exection
|
||||||
while (!scriptExecuted)
|
while (!scriptExecuted)
|
||||||
wxYield();
|
wxYield();
|
||||||
|
|
||||||
if (FAILED(hr))
|
if (FAILED(executionResult))
|
||||||
{
|
{
|
||||||
wxLogApiError("ExecuteScript", hr);
|
if (output)
|
||||||
|
output->Printf("%s (0x%08lx)", wxSysErrorMsgStr(executionResult), executionResult);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user