23 Public method to check for a network block. |
24 Public method to check for a network block. |
24 |
25 |
25 @return reply object (QNetworkReply) or None |
26 @return reply object (QNetworkReply) or None |
26 """ |
27 """ |
27 url = request.url() |
28 url = request.url() |
|
29 urlString = bytes(url.toEncoded()).decode() |
|
30 urlDomain = url.host() |
|
31 urlScheme = url.scheme() |
28 |
32 |
29 if url.scheme() in ["data", "eric", "qthelp", "qrc", "file", "abp"]: |
33 manager = Helpviewer.HelpWindow.HelpWindow.adblockManager() |
|
34 if not manager.isEnabled() or not self.canRunOnScheme(urlScheme): |
30 return None |
35 return None |
31 |
36 |
32 manager = Helpviewer.HelpWindow.HelpWindow.adblockManager() |
|
33 if not manager.isEnabled(): |
|
34 return None |
|
35 |
|
36 urlString = bytes(url.toEncoded()).decode() |
|
37 blockedRule = None |
|
38 |
|
39 for subscription in manager.subscriptions(): |
37 for subscription in manager.subscriptions(): |
40 if subscription.allow(urlString): |
38 blockedRule = subscription.match(request, urlDomain, urlString) |
41 return None |
39 if blockedRule: |
42 |
40 webPage = request.attribute(QNetworkRequest.User + 100) |
43 rule = subscription.block(urlString) |
41 if webPage is not None: |
44 if rule is not None: |
42 if not self.__canBeBlocked(webPage.url()): |
45 blockedRule = rule |
43 return None |
46 break |
44 |
47 |
45 webPage.addAdBlockRule(blockedRule, url) |
48 if blockedRule is not None: |
46 |
49 reply = AdBlockBlockedNetworkReply(request, blockedRule, self) |
47 reply = AdBlockBlockedNetworkReply(request, subscription, blockedRule, self) |
50 return reply |
48 return reply |
51 |
49 |
52 return None |
50 return None |
|
51 |
|
52 def canRunOnScheme(self, scheme): |
|
53 """ |
|
54 Public method to check, if AdBlock can be performed on the scheme. |
|
55 |
|
56 @param scheme scheme to check (string) |
|
57 @return flag indicating, that AdBlock can be performed (boolean) |
|
58 """ |
|
59 return scheme not in ["data", "eric", "qthelp", "qrc", "file", "abp"] |
|
60 |
|
61 def __canBeBlocked(self, url): |
|
62 """ |
|
63 Private method to check, if an URL can be blocked. |
|
64 |
|
65 @param url URL to be checked (QUrl) |
|
66 @return flag indicating, that the URL can be blocked (boolean) |
|
67 """ |
|
68 manager = Helpviewer.HelpWindow.HelpWindow.adblockManager() |
|
69 for subscription in manager.subscriptions(): |
|
70 if subscription.adBlockDisabledForUrl(url): |
|
71 return False |
|
72 |
|
73 return True |