Add configuration option to not persist website permissions (Qt 6.8+). eric7

Wed, 18 Dec 2024 17:20:28 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 18 Dec 2024 17:20:28 +0100
branch
eric7
changeset 11103
382e5c9a43f0
parent 11102
ceabb30155b8
child 11104
683af9c45c5b

Add configuration option to not persist website permissions (Qt 6.8+).

src/eric7/Preferences/ConfigurationDialog.py file | annotate | diff | comparison | revisions
src/eric7/Preferences/ConfigurationPages/Ui_WebBrowserPage.py file | annotate | diff | comparison | revisions
src/eric7/Preferences/ConfigurationPages/WebBrowserPage.py file | annotate | diff | comparison | revisions
src/eric7/Preferences/ConfigurationPages/WebBrowserPage.ui file | annotate | diff | comparison | revisions
src/eric7/Preferences/__init__.py file | annotate | diff | comparison | revisions
src/eric7/WebBrowser/WebBrowserWindow.py file | annotate | diff | comparison | revisions
--- 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>&lt;p&gt;Select to allow reading from all canvas elements.&lt;/p&gt;
@@ -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)
 

eric ide

mercurial