--- 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