eric6/WebBrowser/FeaturePermissions/FeaturePermissionManager.py

changeset 8243
cc717c2ae956
parent 8227
349308e84eeb
equal deleted inserted replaced
8242:aa713ac50c0d 8243:cc717c2ae956
4 # 4 #
5 5
6 """ 6 """
7 Module implementing the feature permission manager object. 7 Module implementing the feature permission manager object.
8 """ 8 """
9
10 import contextlib
9 11
10 from PyQt5.QtCore import QObject 12 from PyQt5.QtCore import QObject
11 from PyQt5.QtWidgets import QDialog 13 from PyQt5.QtWidgets import QDialog
12 from PyQt5.QtWebEngineWidgets import QWebEnginePage 14 from PyQt5.QtWebEngineWidgets import QWebEnginePage
13 15
49 }, 51 },
50 QWebEnginePage.Feature.MouseLock: { 52 QWebEnginePage.Feature.MouseLock: {
51 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: [], 53 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: [],
52 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: [], 54 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: [],
53 }, 55 },
56 QWebEnginePage.Feature.DesktopVideoCapture: {
57 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser:
58 [],
59 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser:
60 [],
61 },
62 QWebEnginePage.Feature.DesktopAudioVideoCapture: {
63 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser:
64 [],
65 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser:
66 [],
67 },
54 } 68 }
55 try: 69 with contextlib.suppress(AttributeError):
56 # these are defined as of Qt 5.10.0/PyQt 5.10.0
57 self.__featurePermissions.update({
58 QWebEnginePage.Feature.DesktopVideoCapture: {
59 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser:
60 [],
61 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser:
62 [],
63 },
64 QWebEnginePage.Feature.DesktopAudioVideoCapture: {
65 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser:
66 [],
67 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser:
68 [],
69 },
70 })
71 except AttributeError:
72 pass
73 try:
74 # this was re-added in Qt 5.13.0 70 # this was re-added in Qt 5.13.0
75 self.__featurePermissions[QWebEnginePage.Feature.Notifications] = { 71 self.__featurePermissions[QWebEnginePage.Feature.Notifications] = {
76 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: [], 72 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: [],
77 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: [], 73 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: [],
78 } 74 }
79 except AttributeError:
80 pass
81 75
82 self.__featurePermissionsKeys = { 76 self.__featurePermissionsKeys = {
83 (QWebEnginePage.Feature.Geolocation, 77 (QWebEnginePage.Feature.Geolocation,
84 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser): 78 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
85 "GeolocationGranted", 79 "GeolocationGranted",
108 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser): 102 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
109 "MouseLockGranted", 103 "MouseLockGranted",
110 (QWebEnginePage.Feature.MouseLock, 104 (QWebEnginePage.Feature.MouseLock,
111 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser): 105 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
112 "MouseLockDenied", 106 "MouseLockDenied",
107 (QWebEnginePage.Feature.DesktopVideoCapture,
108 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
109 "DesktopVideoCaptureGranted",
110 (QWebEnginePage.Feature.DesktopVideoCapture,
111 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
112 "DesktopVideoCaptureDenied",
113 (QWebEnginePage.Feature.DesktopAudioVideoCapture,
114 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
115 "DesktopAudioVideoCaptureGranted",
116 (QWebEnginePage.Feature.DesktopAudioVideoCapture,
117 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
118 "DesktopAudioVideoCaptureDenied",
113 } 119 }
114 try: 120 with contextlib.suppress(AttributeError):
115 # these are defined as of Qt 5.10.0/PyQt 5.10.0
116 self.__featurePermissionsKeys.update({
117 (QWebEnginePage.Feature.DesktopVideoCapture,
118 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
119 "DesktopVideoCaptureGranted",
120 (QWebEnginePage.Feature.DesktopVideoCapture,
121 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
122 "DesktopVideoCaptureDenied",
123 (QWebEnginePage.Feature.DesktopAudioVideoCapture,
124 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
125 "DesktopAudioVideoCaptureGranted",
126 (QWebEnginePage.Feature.DesktopAudioVideoCapture,
127 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
128 "DesktopAudioVideoCaptureDenied",
129 })
130 except AttributeError:
131 pass
132 try:
133 # this was re-added in Qt 5.13.0 121 # this was re-added in Qt 5.13.0
134 self.__featurePermissionsKeys.update({ 122 self.__featurePermissionsKeys.update({
135 (QWebEnginePage.Feature.Notifications, 123 (QWebEnginePage.Feature.Notifications,
136 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser): 124 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser):
137 "NotificationsGranted", 125 "NotificationsGranted",
138 (QWebEnginePage.Feature.Notifications, 126 (QWebEnginePage.Feature.Notifications,
139 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser): 127 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser):
140 "NotificationsDenied", 128 "NotificationsDenied",
141 }) 129 })
142 except AttributeError:
143 pass
144 130
145 self.__loaded = False 131 self.__loaded = False
146 132
147 def requestFeaturePermission(self, page, origin, feature): 133 def requestFeaturePermission(self, page, origin, feature):
148 """ 134 """

eric ide

mercurial