eric7/WebBrowser/Tools/WebBrowserTools.py

branch
eric7
changeset 9167
2d2b9a26e904
parent 9162
8b75b1668583
--- 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):

eric ide

mercurial