eric6/WebBrowser/AdBlock/AdBlockManager.py

changeset 7774
9eed155411f0
parent 7360
9190402e4505
child 7781
607a6098cb44
--- 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):
         """

eric ide

mercurial