Wed, 18 Dec 2024 17:20:28 +0100
Add configuration option to not persist website permissions (Qt 6.8+).
--- a/src/eric7/Preferences/ConfigurationDialog.py Wed Dec 18 16:52:16 2024 +0100 +++ b/src/eric7/Preferences/ConfigurationDialog.py Wed Dec 18 17:20:28 2024 +0100 @@ -802,6 +802,13 @@ None, None, ], + "networkProxyPage": [ + self.tr("Network Proxy"), + "preferences-network-proxy", + "NetworkProxyPage", + None, + None, + ], "printerPage": [ self.tr("Printer"), "preferences-printer",
--- a/src/eric7/Preferences/ConfigurationPages/Ui_WebBrowserPage.py Wed Dec 18 16:52:16 2024 +0100 +++ b/src/eric7/Preferences/ConfigurationPages/Ui_WebBrowserPage.py Wed Dec 18 17:20:28 2024 +0100 @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'src/eric7/Preferences/ConfigurationPages/WebBrowserPage.ui' # -# Created by: PyQt6 UI code generator 6.7.0 +# Created by: PyQt6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. @@ -219,6 +219,9 @@ self.pushServiceCheckBox = QtWidgets.QCheckBox(parent=self.privacyGroup) self.pushServiceCheckBox.setObjectName("pushServiceCheckBox") self.verticalLayout_5.addWidget(self.pushServiceCheckBox) + self.noPersistentPermissionsCheckBox = QtWidgets.QCheckBox(parent=self.privacyGroup) + self.noPersistentPermissionsCheckBox.setObjectName("noPersistentPermissionsCheckBox") + self.verticalLayout_5.addWidget(self.noPersistentPermissionsCheckBox) self.readingFromCanvasCheckBox = QtWidgets.QCheckBox(parent=self.privacyGroup) self.readingFromCanvasCheckBox.setObjectName("readingFromCanvasCheckBox") self.verticalLayout_5.addWidget(self.readingFromCanvasCheckBox) @@ -485,7 +488,8 @@ WebBrowserPage.setTabOrder(self.jsPasteCheckBox, self.pluginsGroup) WebBrowserPage.setTabOrder(self.pluginsGroup, self.pdfViewerCheckBox) WebBrowserPage.setTabOrder(self.pdfViewerCheckBox, self.pushServiceCheckBox) - WebBrowserPage.setTabOrder(self.pushServiceCheckBox, self.readingFromCanvasCheckBox) + WebBrowserPage.setTabOrder(self.pushServiceCheckBox, self.noPersistentPermissionsCheckBox) + WebBrowserPage.setTabOrder(self.noPersistentPermissionsCheckBox, self.readingFromCanvasCheckBox) WebBrowserPage.setTabOrder(self.readingFromCanvasCheckBox, self.doNotTrackCheckBox) WebBrowserPage.setTabOrder(self.doNotTrackCheckBox, self.refererSendComboBox) WebBrowserPage.setTabOrder(self.refererSendComboBox, self.refererDefaultPolicyCcomboBox) @@ -601,6 +605,8 @@ self.pushServiceCheckBox.setToolTip(_translate("WebBrowserPage", "<p>Select to enable the push messaging service.</p>\n" "<p><b>Note:</b> All push messages will go through the Google push service and its respective servers.</p>")) self.pushServiceCheckBox.setText(_translate("WebBrowserPage", "Enable Push Messaging Service")) + self.noPersistentPermissionsCheckBox.setToolTip(_translate("WebBrowserPage", "Select to store website permission settings in memory only.")) + self.noPersistentPermissionsCheckBox.setText(_translate("WebBrowserPage", "Do not persist website permissions")) self.readingFromCanvasCheckBox.setToolTip(_translate("WebBrowserPage", "<p>Select to allow reading from all canvas elements.</p>\n" "<p><b>Note:</b> Disable this option to prevent canvas fingerprinting.</p>")) self.readingFromCanvasCheckBox.setText(_translate("WebBrowserPage", "Enable Reading From Canvas"))
--- a/src/eric7/Preferences/ConfigurationPages/WebBrowserPage.py Wed Dec 18 16:52:16 2024 +0100 +++ b/src/eric7/Preferences/ConfigurationPages/WebBrowserPage.py Wed Dec 18 17:20:28 2024 +0100 @@ -255,6 +255,13 @@ else: self.forceDarkModeCheckBox.setEnabled(False) + if qVersionTuple() >= (6, 8, 0): + self.noPersistentPermissionsCheckBox.setChecked( + Preferences.getWebBrowser("NoPersistentPermissions") + ) + else: + self.noPersistentPermissionsCheckBox.setEnabled(False) + def save(self): """ Public slot to save the Help Viewers configuration. @@ -448,6 +455,12 @@ "ForceDarkMode", self.forceDarkModeCheckBox.isChecked() ) + if self.noPersistentPermissionsCheckBox.isEnabled(): + Preferences.setWebBrowser( + "NoPersistentPermissions", + self.noPersistentPermissionsCheckBox.isChecked(), + ) + @pyqtSlot() def on_setCurrentPageButton_clicked(self): """
--- a/src/eric7/Preferences/ConfigurationPages/WebBrowserPage.ui Wed Dec 18 16:52:16 2024 +0100 +++ b/src/eric7/Preferences/ConfigurationPages/WebBrowserPage.ui Wed Dec 18 17:20:28 2024 +0100 @@ -21,13 +21,13 @@ <item> <widget class="Line" name="line17"> <property name="frameShape"> - <enum>QFrame::HLine</enum> + <enum>QFrame::Shape::HLine</enum> </property> <property name="frameShadow"> - <enum>QFrame::Sunken</enum> + <enum>QFrame::Shadow::Sunken</enum> </property> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> </widget> </item> @@ -321,7 +321,7 @@ <item row="3" column="4"> <spacer name="horizontalSpacer_2"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -383,7 +383,7 @@ <string>Enter the time to save sessions</string> </property> <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + <set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set> </property> <property name="suffix"> <string> s</string> @@ -402,7 +402,7 @@ <item row="1" column="2"> <spacer name="horizontalSpacer_8"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -488,7 +488,7 @@ <item> <spacer name="horizontalSpacer_9"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -599,6 +599,16 @@ </widget> </item> <item> + <widget class="QCheckBox" name="noPersistentPermissionsCheckBox"> + <property name="toolTip"> + <string>Select to store website permission settings in memory only.</string> + </property> + <property name="text"> + <string>Do not persist website permissions</string> + </property> + </widget> + </item> + <item> <widget class="QCheckBox" name="readingFromCanvasCheckBox"> <property name="toolTip"> <string><p>Select to allow reading from all canvas elements.</p> @@ -763,7 +773,7 @@ <item> <spacer name="horizontalSpacer_6"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -924,7 +934,7 @@ <string>Enter the maximum size of the disk cache</string> </property> <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + <set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set> </property> <property name="suffix"> <string> MB</string> @@ -940,7 +950,7 @@ <item row="1" column="2"> <spacer name="horizontalSpacer"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -991,7 +1001,7 @@ <item> <spacer name="horizontalSpacer_10"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -1042,7 +1052,7 @@ <item> <spacer name="horizontalSpacer_11"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -1074,14 +1084,14 @@ <string>Select the language to be used for web searches</string> </property> <property name="sizeAdjustPolicy"> - <enum>QComboBox::AdjustToContents</enum> + <enum>QComboBox::SizeAdjustPolicy::AdjustToContents</enum> </property> </widget> </item> <item> <spacer name="horizontalSpacer_3"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -1117,7 +1127,7 @@ <item> <spacer name="horizontalSpacer_5"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -1233,7 +1243,7 @@ <string>Enter the auto-scroll divider value</string> </property> <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + <set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set> </property> <property name="decimals"> <number>1</number> @@ -1249,7 +1259,7 @@ <item> <spacer name="horizontalSpacer_7"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -1312,6 +1322,7 @@ <tabstop>pluginsGroup</tabstop> <tabstop>pdfViewerCheckBox</tabstop> <tabstop>pushServiceCheckBox</tabstop> + <tabstop>noPersistentPermissionsCheckBox</tabstop> <tabstop>readingFromCanvasCheckBox</tabstop> <tabstop>doNotTrackCheckBox</tabstop> <tabstop>refererSendComboBox</tabstop>
--- a/src/eric7/Preferences/__init__.py Wed Dec 18 16:52:16 2024 +0100 +++ b/src/eric7/Preferences/__init__.py Wed Dec 18 17:20:28 2024 +0100 @@ -1184,6 +1184,8 @@ "SafeBrowsingUseLookupApi": False, # Push Messaging "PushServiceEnabled": False, + # Persistent Permissions + "NoPersistentPermissions": False, } @classmethod @@ -3313,6 +3315,7 @@ "NavigateOnDropEnabled", "ReadingFromCanvasEnabled", "ForceDarkMode", + "NoPersistentPermissions", ]: return EricUtilities.toBool( Prefs.settings.value("WebBrowser/" + key, Prefs.webBrowserDefaults[key])
--- a/src/eric7/WebBrowser/WebBrowserWindow.py Wed Dec 18 16:52:16 2024 +0100 +++ b/src/eric7/WebBrowser/WebBrowserWindow.py Wed Dec 18 17:20:28 2024 +0100 @@ -4176,6 +4176,7 @@ """ from .WebBrowserClearPrivateDataDialog import WebBrowserClearPrivateDataDialog + # TODO: add entry "Website Permissions" dlg = WebBrowserClearPrivateDataDialog(parent=self) if dlg.exec() == QDialog.DialogCode.Accepted: # browsing history, search history, favicons, disk cache, cookies, @@ -4220,6 +4221,7 @@ ZoomManager.instance().clear() if sslExceptions: self.networkManager().clearSslExceptions() + # TODO: add entry "Website Permissions" @pyqtSlot() def __showEnginesConfigurationDialog(self): @@ -5439,6 +5441,13 @@ cls._webProfile.setPushServiceEnabled( Preferences.getWebBrowser("PushServiceEnabled") ) + with contextlib.suppress(AttributeError): + # Qt 6.8+ + cls._webProfile.setPersistentPermissionsPolicy( + QWebEngineProfile.PersistentPermissionsPolicy.StoreInMemory + if Preferences.getWebBrowser("NoPersistentPermissions") + else QWebEngineProfile.PersistentPermissionsPolicy.StoreOnDisk + ) with contextlib.suppress(AttributeError): cls._webProfile.setSpellCheckEnabled( @@ -5448,9 +5457,6 @@ Preferences.getWebBrowser("SpellCheckLanguages") ) - # TODO: setPersistentPermissionPolicy for Qt 6.8+ - # setting key: "NoPersistentPermissions" for non-private only - # configure notifications cls._webProfile.setNotificationPresenter(cls.__showWebNotification)