Add wxWebView::GetBackendVersionInfo()

Allows to get the WebView backend version if available
Currently implemented for IE, Edge and webkit2.
This commit is contained in:
Tobias Taschner
2021-02-03 18:05:41 +01:00
parent 489afb3336
commit 0d82348328
11 changed files with 74 additions and 0 deletions

View File

@@ -19,6 +19,7 @@
#include "wx/log.h"
#include "wx/stdpaths.h"
#include "wx/thread.h"
#include "wx/tokenzr.h"
#include "wx/private/jsscriptwrapper.h"
#include "wx/private/json.h"
#include "wx/msw/private.h"
@@ -53,6 +54,7 @@ GetAvailableCoreWebView2BrowserVersionString_t wxGetAvailableCoreWebView2Browser
wxDynamicLibrary wxWebViewEdgeImpl::ms_loaderDll;
wxString wxWebViewEdgeImpl::ms_browserExecutableDir;
wxString wxWebViewEdgeImpl::ms_version;
wxWebViewEdgeImpl::wxWebViewEdgeImpl(wxWebViewEdge* webview):
m_ctrl(webview)
@@ -135,6 +137,7 @@ bool wxWebViewEdgeImpl::Initialize()
wxLogApiError("GetCoreWebView2BrowserVersionInfo", hr);
return false;
}
ms_version = versionStr;
ms_loaderDll.Attach(loaderDll.Detach());
@@ -876,6 +879,18 @@ bool wxWebViewFactoryEdge::IsAvailable()
return wxWebViewEdgeImpl::Initialize();
}
wxVersionInfo wxWebViewFactoryEdge::GetVersionInfo()
{
IsAvailable(); // Make sure ms_version string is initialized (if available)
long versions[3] = { 0, 0, 0 };
wxArrayString tokens = wxStringTokenize(wxWebViewEdgeImpl::ms_version, ". ");
for (size_t i = 0; i < 3; i++)
{
if (tokens.size() > i)
tokens[i].ToLong(&versions[i]);
}
return wxVersionInfo("Microsoft Edge WebView2", versions[0], versions[1], versions[2]);
}
// ----------------------------------------------------------------------------
// Module ensuring all global/singleton objects are destroyed on shutdown.