src/eric7/WebBrowser/FeaturePermissions/FeaturePermissionManager.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
--- a/src/eric7/WebBrowser/FeaturePermissions/FeaturePermissionManager.py	Wed Jul 13 11:16:20 2022 +0200
+++ b/src/eric7/WebBrowser/FeaturePermissions/FeaturePermissionManager.py	Wed Jul 13 14:55:47 2022 +0200
@@ -19,17 +19,18 @@
     """
     Class implementing the feature permission manager object.
     """
+
     SettingsKeyFormat = "WebBrowser/FeaturePermissions/{0}"
-    
+
     def __init__(self, parent=None):
         """
         Constructor
-        
+
         @param parent reference to the parent object
         @type QObject
         """
         super().__init__(parent)
-        
+
         self.__featurePermissions = {
             QWebEnginePage.Feature.Geolocation: {
                 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: [],
@@ -52,80 +53,92 @@
                 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: [],
             },
             QWebEnginePage.Feature.DesktopVideoCapture: {
-                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser:
-                    [],
-                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser:
-                    [],
+                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: [],
+                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: [],
             },
             QWebEnginePage.Feature.DesktopAudioVideoCapture: {
-                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser:
-                    [],
-                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser:
-                    [],
+                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: [],
+                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: [],
             },
             QWebEnginePage.Feature.Notifications: {
                 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: [],
                 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: [],
-            }
+            },
         }
-        
+
         self.__featurePermissionsKeys = {
-            (QWebEnginePage.Feature.Geolocation,
-             QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
-            "GeolocationGranted",
-            (QWebEnginePage.Feature.Geolocation,
-             QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
-            "GeolocationDenied",
-            (QWebEnginePage.Feature.MediaAudioCapture,
-             QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
-            "MediaAudioCaptureGranted",
-            (QWebEnginePage.Feature.MediaAudioCapture,
-             QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
-            "MediaAudioCaptureDenied",
-            (QWebEnginePage.Feature.MediaVideoCapture,
-             QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
-            "MediaVideoCaptureGranted",
-            (QWebEnginePage.Feature.MediaVideoCapture,
-             QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
-            "MediaVideoCaptureDenied",
-            (QWebEnginePage.Feature.MediaAudioVideoCapture,
-             QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
-            "MediaAudioVideoCaptureGranted",
-            (QWebEnginePage.Feature.MediaAudioVideoCapture,
-             QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
-            "MediaAudioVideoCaptureDenied",
-            (QWebEnginePage.Feature.MouseLock,
-             QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
-            "MouseLockGranted",
-            (QWebEnginePage.Feature.MouseLock,
-             QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
-            "MouseLockDenied",
-            (QWebEnginePage.Feature.DesktopVideoCapture,
-             QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
-            "DesktopVideoCaptureGranted",
-            (QWebEnginePage.Feature.DesktopVideoCapture,
-             QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
-            "DesktopVideoCaptureDenied",
-            (QWebEnginePage.Feature.DesktopAudioVideoCapture,
-             QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
-            "DesktopAudioVideoCaptureGranted",
-            (QWebEnginePage.Feature.DesktopAudioVideoCapture,
-             QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
-            "DesktopAudioVideoCaptureDenied",
-            (QWebEnginePage.Feature.Notifications,
-             QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
-            "NotificationsGranted",
-            (QWebEnginePage.Feature.Notifications,
-             QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
-            "NotificationsDenied",
+            (
+                QWebEnginePage.Feature.Geolocation,
+                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser,
+            ): "GeolocationGranted",
+            (
+                QWebEnginePage.Feature.Geolocation,
+                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser,
+            ): "GeolocationDenied",
+            (
+                QWebEnginePage.Feature.MediaAudioCapture,
+                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser,
+            ): "MediaAudioCaptureGranted",
+            (
+                QWebEnginePage.Feature.MediaAudioCapture,
+                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser,
+            ): "MediaAudioCaptureDenied",
+            (
+                QWebEnginePage.Feature.MediaVideoCapture,
+                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser,
+            ): "MediaVideoCaptureGranted",
+            (
+                QWebEnginePage.Feature.MediaVideoCapture,
+                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser,
+            ): "MediaVideoCaptureDenied",
+            (
+                QWebEnginePage.Feature.MediaAudioVideoCapture,
+                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser,
+            ): "MediaAudioVideoCaptureGranted",
+            (
+                QWebEnginePage.Feature.MediaAudioVideoCapture,
+                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser,
+            ): "MediaAudioVideoCaptureDenied",
+            (
+                QWebEnginePage.Feature.MouseLock,
+                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser,
+            ): "MouseLockGranted",
+            (
+                QWebEnginePage.Feature.MouseLock,
+                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser,
+            ): "MouseLockDenied",
+            (
+                QWebEnginePage.Feature.DesktopVideoCapture,
+                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser,
+            ): "DesktopVideoCaptureGranted",
+            (
+                QWebEnginePage.Feature.DesktopVideoCapture,
+                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser,
+            ): "DesktopVideoCaptureDenied",
+            (
+                QWebEnginePage.Feature.DesktopAudioVideoCapture,
+                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser,
+            ): "DesktopAudioVideoCaptureGranted",
+            (
+                QWebEnginePage.Feature.DesktopAudioVideoCapture,
+                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser,
+            ): "DesktopAudioVideoCaptureDenied",
+            (
+                QWebEnginePage.Feature.Notifications,
+                QWebEnginePage.PermissionPolicy.PermissionGrantedByUser,
+            ): "NotificationsGranted",
+            (
+                QWebEnginePage.Feature.Notifications,
+                QWebEnginePage.PermissionPolicy.PermissionDeniedByUser,
+            ): "NotificationsDenied",
         }
-        
+
         self.__loaded = False
 
     def requestFeaturePermission(self, page, origin, feature):
         """
         Public method to request a feature permission.
-        
+
         @param page reference to the requesting web page
         @type QWebEnginePage
         @param origin security origin requesting the feature
@@ -135,26 +148,27 @@
         """
         if origin is None or origin.isEmpty():
             return
-        
+
         if not self.__loaded:
             self.__loadSettings()
-        
+
         host = origin.host()
-        
+
         if feature in self.__featurePermissions:
             for permission in self.__featurePermissions[feature]:
                 if host in self.__featurePermissions[feature][permission]:
                     page.setFeaturePermission(origin, feature, permission)
                     return
-        
+
         from .FeaturePermissionBar import FeaturePermissionBar
+
         bar = FeaturePermissionBar(page, origin, feature, self)
         bar.show()
-    
+
     def rememberFeaturePermission(self, host, feature, permission):
         """
         Public method to remember a user decision for a feature permission.
-        
+
         @param host host name to remember the decision for
         @type str
         @param feature feature to be remembered
@@ -163,12 +177,12 @@
         @type QWebEnginePage.PermissionPolicy
         """
         if (
-            feature in self.__featurePermissions and
-            host not in self.__featurePermissions[feature][permission]
+            feature in self.__featurePermissions
+            and host not in self.__featurePermissions[feature][permission]
         ):
             self.__featurePermissions[feature][permission].append(host)
             self.__saveSettings()
-    
+
     def __loadSettings(self):
         """
         Private method to load the remembered feature permissions.
@@ -176,37 +190,34 @@
         if self.__loaded:
             # no reloading allowed
             return
-        
-        for (feature, permission), key in (
-            self.__featurePermissionsKeys.items()
-        ):
-            self.__featurePermissions[feature][permission] = (
-                Globals.toList(Preferences.getSettings().value(
-                    FeaturePermissionManager.SettingsKeyFormat.format(key),
-                    []
-                ))
+
+        for (feature, permission), key in self.__featurePermissionsKeys.items():
+            self.__featurePermissions[feature][permission] = Globals.toList(
+                Preferences.getSettings().value(
+                    FeaturePermissionManager.SettingsKeyFormat.format(key), []
+                )
             )
-        
+
         self.__loaded = True
-    
+
     def __saveSettings(self):
         """
         Private method to save the remembered feature permissions.
         """
         if not self.__loaded:
             return
-        
+
         import WebBrowser.WebBrowserWindow
+
         if WebBrowser.WebBrowserWindow.WebBrowserWindow.isPrivate():
             return
-        
-        for (feature, permission), key in (
-                self.__featurePermissionsKeys.items()
-        ):
+
+        for (feature, permission), key in self.__featurePermissionsKeys.items():
             Preferences.getSettings().setValue(
                 FeaturePermissionManager.SettingsKeyFormat.format(key),
-                self.__featurePermissions[feature][permission])
-    
+                self.__featurePermissions[feature][permission],
+            )
+
     def showFeaturePermissionsDialog(self):
         """
         Public method to show a dialog to manage the remembered feature
@@ -214,8 +225,9 @@
         """
         if not self.__loaded:
             self.__loadSettings()
-        
+
         from .FeaturePermissionsDialog import FeaturePermissionsDialog
+
         dlg = FeaturePermissionsDialog(self.__featurePermissions)
         if dlg.exec() == QDialog.DialogCode.Accepted:
             newFeaturePermissions = dlg.getData()

eric ide

mercurial