diff -r fe42bd17d4fe -r 9eed155411f0 eric6/WebBrowser/AdBlock/AdBlockManager.py --- a/eric6/WebBrowser/AdBlock/AdBlockManager.py Sat Oct 10 15:17:29 2020 +0200 +++ b/eric6/WebBrowser/AdBlock/AdBlockManager.py Sat Oct 10 16:03:53 2020 +0200 @@ -11,13 +11,14 @@ import os from PyQt5.QtCore import ( - pyqtSignal, QObject, QUrl, QUrlQuery, QFile, QByteArray, QMutex, - QMutexLocker + pyqtSignal, QObject, QUrl, QUrlQuery, QFile, QByteArray, QMutex ) from PyQt5.QtWebEngineCore import QWebEngineUrlRequestInfo from E5Gui import E5MessageBox +from E5Utilities.E5MutexLocker import E5MutexLocker + from .AdBlockSubscription import AdBlockSubscription from .AdBlockUrlInterceptor import AdBlockUrlInterceptor from .AdBlockMatcher import AdBlockMatcher @@ -148,41 +149,40 @@ @return flag indicating to block the request @rtype bool """ - locker = QMutexLocker(self.__mutex) # __IGNORE_WARNING__ - - if not self.isEnabled(): - return False - - urlString = bytes(info.requestUrl().toEncoded()).decode().lower() - urlDomain = info.requestUrl().host().lower() - urlScheme = info.requestUrl().scheme().lower() - - if ( - not self.canRunOnScheme(urlScheme) or - not self.__canBeBlocked(info.firstPartyUrl()) - ): - return False - - res = False - blockedRule = self.__matcher.match(info, urlDomain, urlString) - - if blockedRule: - res = True + with E5MutexLocker(self.__mutex): + if not self.isEnabled(): + return False + + urlString = bytes(info.requestUrl().toEncoded()).decode().lower() + urlDomain = info.requestUrl().host().lower() + urlScheme = info.requestUrl().scheme().lower() + if ( - info.resourceType() == - QWebEngineUrlRequestInfo.ResourceTypeMainFrame + not self.canRunOnScheme(urlScheme) or + not self.__canBeBlocked(info.firstPartyUrl()) ): - url = QUrl("eric:adblock") - query = QUrlQuery() - query.addQueryItem("rule", blockedRule.filter()) - query.addQueryItem( - "subscription", blockedRule.subscription().title()) - url.setQuery(query) - info.redirect(url) - else: - info.block(True) - - return res + return False + + res = False + blockedRule = self.__matcher.match(info, urlDomain, urlString) + + if blockedRule: + res = True + if ( + info.resourceType() == + QWebEngineUrlRequestInfo.ResourceTypeMainFrame + ): + url = QUrl("eric:adblock") + query = QUrlQuery() + query.addQueryItem("rule", blockedRule.filter()) + query.addQueryItem( + "subscription", blockedRule.subscription().title()) + url.setQuery(query) + info.redirect(url) + else: + info.block(True) + + return res def canRunOnScheme(self, scheme): """