--- a/eric7/WebBrowser/Tools/WebBrowserTools.py Tue Jun 21 17:16:38 2022 +0200 +++ b/eric7/WebBrowser/Tools/WebBrowserTools.py Tue Jun 21 18:09:22 2022 +0200 @@ -214,28 +214,44 @@ def getWebEngineVersions(): """ - Module function to extract the web engine version from the default user - agent string. + Module function to extract the web engine related versions from the default + user agent string. - @return tuple containing the Chrome version and the QtWebEngine version - @rtype tuple of str - """ - from PyQt6.QtWebEngineCore import QWebEngineProfile + Note: For PyQt 6.3.1 or newer the data is extracted via some Qt functions. - useragent = QWebEngineProfile.defaultProfile().httpUserAgent() - match = re.search(r"""Chrome/([\d.]+)""", useragent) - chromeVersion = ( - match.group(1) - if match else - QCoreApplication.translate("WebBrowserTools", "<unknown>") - ) - match = re.search(r"""QtWebEngine/([\d.]+)""", useragent) - webengineVersion = ( - match.group(1) - if match else - QCoreApplication.translate("WebBrowserTools", "<unknown>") - ) - return (chromeVersion, webengineVersion) + @return tuple containing the Chromium version, the Chromium security patch + version and the QtWebEngine version + @rtype tuple of (str, str, str) + """ + try: + from PyQt6.QtWebEngineCore import ( + qWebEngineVersion, qWebEngineChromiumVersion, + qWebEngineChromiumSecurityPatchVersion + ) + chromiumVersion = qWebEngineChromiumVersion() + chromiumSecurityVersion = qWebEngineChromiumSecurityPatchVersion() + webengineVersion = qWebEngineVersion() + except ImportError: + # backwards compatibility for PyQt < 6.3.1 + from PyQt6.QtWebEngineCore import QWebEngineProfile + + useragent = QWebEngineProfile.defaultProfile().httpUserAgent() + match = re.search(r"""Chrome/([\d.]+)""", useragent) + chromiumVersion = ( + match.group(1) + if match else + QCoreApplication.translate("WebBrowserTools", "<unknown>") + ) + match = re.search(r"""QtWebEngine/([\d.]+)""", useragent) + webengineVersion = ( + match.group(1) + if match else + QCoreApplication.translate("WebBrowserTools", "<unknown>") + ) + chromiumSecurityVersion = "" + # not available via the user agent string + + return (chromiumVersion, chromiumSecurityVersion, webengineVersion) def getHtmlPage(pageFileName):