Improve wxWebViewEdge::RunScriptSync() error handling

This commit is contained in:
Tobias Taschner
2020-01-16 09:56:36 +01:00
parent 9f11abd8fc
commit 5dae0333b3

View File

@@ -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