src/eric7/WebBrowser/CookieJar/CookieJar.py

branch
eric7
changeset 10485
287a3ae95e00
parent 10475
ee41fab001f2
child 10806
2f6df822e3b9
--- a/src/eric7/WebBrowser/CookieJar/CookieJar.py	Sun Jan 07 11:42:41 2024 +0100
+++ b/src/eric7/WebBrowser/CookieJar/CookieJar.py	Sun Jan 07 12:40:00 2024 +0100
@@ -7,6 +7,7 @@
 Module implementing a QNetworkCookieJar subclass with various accept policies.
 """
 
+import enum
 import os
 
 from PyQt6.QtCore import QSettings, pyqtSignal, pyqtSlot
@@ -17,6 +18,35 @@
 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow
 
 
+class CookieAcceptPolicy(enum.Enum):
+    """
+    Class defining the cookie accept policies.
+    """
+
+    Always = 0
+    Never = 1
+    OnlyFromSitesNavigatedTo = 2
+
+
+class CookieKeepPolicy(enum.Enum):
+    """
+    Class defining the cookie keep policies.
+    """
+
+    UntilExpire = 0
+    UntilExit = 1
+
+
+class CookieExceptionRuleType(enum.Enum):
+    """
+    Class defining the cookie exception rule types.
+    """
+
+    Allow = 0
+    Block = 1
+    AllowForSession = 2
+
+
 class CookieJar(QNetworkCookieJar):
     """
     Class implementing a QNetworkCookieJar subclass with various accept
@@ -27,22 +57,6 @@
 
     cookiesChanged = pyqtSignal()
 
-    # TODO: change this to an enum
-    AcceptAlways = 0
-    AcceptNever = 1
-    AcceptOnlyFromSitesNavigatedTo = 2
-    AcceptMax = 2
-
-    # TODO: change this to an enum
-    KeepUntilExpire = 0
-    KeepUntilExit = 1
-    KeepMax = 1
-
-    # TODO: change this to an enum
-    Allow = 0
-    Block = 1
-    AllowForSession = 2
-
     def __init__(self, parent=None):
         """
         Constructor
@@ -53,7 +67,8 @@
         super().__init__(parent)
 
         self.__loaded = False
-        self.__acceptCookies = self.AcceptOnlyFromSitesNavigatedTo
+        self.__acceptCookies = CookieAcceptPolicy.OnlyFromSitesNavigatedTo
+        self.__keepCookies = CookieKeepPolicy.UntilExpire
         self.__saveTimer = AutoSaver(self, self.__save)
 
         self.__cookiesFile = os.path.join(
@@ -75,7 +90,7 @@
         if not self.__loaded:
             self.__load()
 
-        if self.__keepCookies == self.KeepUntilExit:
+        if self.__keepCookies == CookieKeepPolicy.UntilExit:
             self.clear()
         self.__saveTimer.saveIfNeccessary()
 
@@ -137,9 +152,22 @@
         self.__exceptionsAllow.sort()
         self.__exceptionsAllowForSession.sort()
 
-        self.__acceptCookies = Preferences.getWebBrowser("AcceptCookies")
-        self.__keepCookies = Preferences.getWebBrowser("KeepCookiesUntil")
-        if self.__keepCookies == self.KeepUntilExit:
+        try:
+            self.__acceptCookies = CookieAcceptPolicy(
+                Preferences.getWebBrowser("AcceptCookies")
+            )
+        except ValueError:
+            # reset to default value
+            self.__acceptCookies = CookieAcceptPolicy.OnlyFromSitesNavigatedTo
+
+        try:
+            self.__keepCookies = CookieKeepPolicy(
+                Preferences.getWebBrowser("KeepCookiesUntil")
+            )
+        except ValueError:
+            # reset to default value
+            self.__keepCookies = CookieKeepPolicy.UntilExpire
+        if self.__keepCookies == CookieKeepPolicy.UntilExit:
             self.clear()
 
         self.__filterTrackingCookies = Preferences.toBool(
@@ -164,8 +192,8 @@
             "Exceptions/allowForSession", self.__exceptionsAllowForSession
         )
 
-        Preferences.setWebBrowser("AcceptCookies", self.__acceptCookies)
-        Preferences.setWebBrowser("KeepCookiesUntil", self.__keepCookies)
+        Preferences.setWebBrowser("AcceptCookies", self.__acceptCookies.value)
+        Preferences.setWebBrowser("KeepCookiesUntil", self.__keepCookies.value)
         Preferences.setWebBrowser("FilterTrackingCookies", self.__filterTrackingCookies)
 
     @pyqtSlot(QNetworkCookie)
@@ -206,18 +234,18 @@
         if not self.__loaded:
             self.__load()
 
-        if self.__acceptCookies == self.AcceptNever:
+        if self.__acceptCookies == CookieAcceptPolicy.Never:
             res = self.__isOnDomainList(self.__exceptionsAllow, request.origin.host())
             if not res:
                 return False
 
-        if self.__acceptCookies == self.AcceptAlways:
+        if self.__acceptCookies == CookieAcceptPolicy.Always:
             res = self.__isOnDomainList(self.__exceptionsBlock, request.origin.host())
             if res:
                 return False
 
         if (
-            self.__acceptCookies == self.AcceptOnlyFromSitesNavigatedTo
+            self.__acceptCookies == CookieAcceptPolicy.OnlyFromSitesNavigatedTo
             and request.thirdParty
         ):
             return False
@@ -238,17 +266,17 @@
         if not self.__loaded:
             self.__load()
 
-        if self.__acceptCookies == self.AcceptNever:
+        if self.__acceptCookies == CookieAcceptPolicy.Never:
             res = self.__isOnDomainList(self.__exceptionsAllow, cookieDomain)
             if not res:
                 return True
 
-        if self.__acceptCookies == self.AcceptAlways:
+        if self.__acceptCookies == CookieAcceptPolicy.Always:
             res = self.__isOnDomainList(self.__exceptionsBlock, cookieDomain)
             if res:
                 return True
 
-        if self.__acceptCookies == self.AcceptOnlyFromSitesNavigatedTo:
+        if self.__acceptCookies == CookieAcceptPolicy.OnlyFromSitesNavigatedTo:
             mainWindow = WebBrowserWindow.mainWindow()
             if mainWindow is not None:
                 browser = mainWindow.getWindow().currentBrowser()
@@ -289,8 +317,6 @@
         if not self.__loaded:
             self.__load()
 
-        if policy > self.AcceptMax:
-            return
         if policy == self.__acceptCookies:
             return
 
@@ -314,13 +340,11 @@
         Public method to set the keep policy.
 
         @param policy keep policy to be set
-        @type int
+        @type CookieKeepPolicy
         """
         if not self.__loaded:
             self.__load()
 
-        if policy > self.KeepMax:
-            return
         if policy == self.__keepCookies:
             return
 

eric ide

mercurial