10 from PyQt6.QtCore import QObject |
10 from PyQt6.QtCore import QObject |
11 from PyQt6.QtWebEngineCore import QWebEnginePage |
11 from PyQt6.QtWebEngineCore import QWebEnginePage |
12 from PyQt6.QtWidgets import QDialog |
12 from PyQt6.QtWidgets import QDialog |
13 |
13 |
14 from eric7 import Globals, Preferences |
14 from eric7 import Globals, Preferences |
|
15 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
15 |
16 |
16 |
17 |
17 class FeaturePermissionManager(QObject): |
18 class FeaturePermissionManager(QObject): |
18 """ |
19 """ |
19 Class implementing the feature permission manager object. |
20 Class implementing the feature permission manager object. |
143 @param origin security origin requesting the feature |
144 @param origin security origin requesting the feature |
144 @type QUrl |
145 @type QUrl |
145 @param feature requested feature |
146 @param feature requested feature |
146 @type QWebEnginePage.Feature |
147 @type QWebEnginePage.Feature |
147 """ |
148 """ |
|
149 from .FeaturePermissionBar import FeaturePermissionBar |
|
150 |
148 if origin is None or origin.isEmpty(): |
151 if origin is None or origin.isEmpty(): |
149 return |
152 return |
150 |
153 |
151 if not self.__loaded: |
154 if not self.__loaded: |
152 self.__loadSettings() |
155 self.__loadSettings() |
156 if feature in self.__featurePermissions: |
159 if feature in self.__featurePermissions: |
157 for permission in self.__featurePermissions[feature]: |
160 for permission in self.__featurePermissions[feature]: |
158 if host in self.__featurePermissions[feature][permission]: |
161 if host in self.__featurePermissions[feature][permission]: |
159 page.setFeaturePermission(origin, feature, permission) |
162 page.setFeaturePermission(origin, feature, permission) |
160 return |
163 return |
161 |
|
162 from .FeaturePermissionBar import FeaturePermissionBar |
|
163 |
164 |
164 bar = FeaturePermissionBar(page, origin, feature, self) |
165 bar = FeaturePermissionBar(page, origin, feature, self) |
165 bar.show() |
166 bar.show() |
166 |
167 |
167 def rememberFeaturePermission(self, host, feature, permission): |
168 def rememberFeaturePermission(self, host, feature, permission): |
204 Private method to save the remembered feature permissions. |
205 Private method to save the remembered feature permissions. |
205 """ |
206 """ |
206 if not self.__loaded: |
207 if not self.__loaded: |
207 return |
208 return |
208 |
209 |
209 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
|
210 |
|
211 if WebBrowserWindow.isPrivate(): |
210 if WebBrowserWindow.isPrivate(): |
212 return |
211 return |
213 |
212 |
214 for (feature, permission), key in self.__featurePermissionsKeys.items(): |
213 for (feature, permission), key in self.__featurePermissionsKeys.items(): |
215 Preferences.getSettings().setValue( |
214 Preferences.getSettings().setValue( |
216 FeaturePermissionManager.SettingsKeyFormat.format(key), |
215 FeaturePermissionManager.SettingsKeyFormat.format(key), |
217 self.__featurePermissions[feature][permission], |
216 self.__featurePermissions[feature][permission], |
218 ) |
217 ) |
219 |
218 |
220 def showFeaturePermissionsDialog(self): |
219 def showFeaturePermissionsDialog(self, parent=None): |
221 """ |
220 """ |
222 Public method to show a dialog to manage the remembered feature |
221 Public method to show a dialog to manage the remembered feature |
223 permissions. |
222 permissions. |
224 """ |
223 |
|
224 @param parent reference to the parent widget |
|
225 @type QWidget |
|
226 """ |
|
227 from .FeaturePermissionsDialog import FeaturePermissionsDialog |
|
228 |
225 if not self.__loaded: |
229 if not self.__loaded: |
226 self.__loadSettings() |
230 self.__loadSettings() |
227 |
231 |
228 from .FeaturePermissionsDialog import FeaturePermissionsDialog |
232 dlg = FeaturePermissionsDialog(self.__featurePermissions, parent=parent) |
229 |
|
230 dlg = FeaturePermissionsDialog(self.__featurePermissions) |
|
231 if dlg.exec() == QDialog.DialogCode.Accepted: |
233 if dlg.exec() == QDialog.DialogCode.Accepted: |
232 newFeaturePermissions = dlg.getData() |
234 newFeaturePermissions = dlg.getData() |
233 self.__featurePermissions = newFeaturePermissions |
235 self.__featurePermissions = newFeaturePermissions |
234 self.__saveSettings() |
236 self.__saveSettings() |