eric6/WebBrowser/Network/NetworkUrlInterceptor.py

changeset 7774
9eed155411f0
parent 7360
9190402e4505
child 7775
4a1db75550bd
equal deleted inserted replaced
7773:fe42bd17d4fe 7774:9eed155411f0
7 Module implementing a class to handle URL requests before they get processed 7 Module implementing a class to handle URL requests before they get processed
8 by QtWebEngine. 8 by QtWebEngine.
9 """ 9 """
10 10
11 11
12 from PyQt5.QtCore import QMutex, QMutexLocker, QUrl 12 from PyQt5.QtCore import QMutex, QUrl
13 from PyQt5.QtWebEngineCore import ( 13 from PyQt5.QtWebEngineCore import (
14 QWebEngineUrlRequestInterceptor, QWebEngineUrlRequestInfo 14 QWebEngineUrlRequestInterceptor, QWebEngineUrlRequestInfo
15 ) 15 )
16
17 from E5Utilities.E5MutexLocker import E5MutexLocker
16 18
17 from ..WebBrowserPage import WebBrowserPage 19 from ..WebBrowserPage import WebBrowserPage
18 20
19 import Preferences 21 import Preferences
20 22
42 Public method handling an URL request. 44 Public method handling an URL request.
43 45
44 @param info URL request information 46 @param info URL request information
45 @type QWebEngineUrlRequestInfo 47 @type QWebEngineUrlRequestInfo
46 """ 48 """
47 locker = QMutexLocker(self.__mutex) # __IGNORE_WARNING__ 49 with E5MutexLocker(self.__mutex):
48 50 # Do Not Track feature
49 # Do Not Track feature 51 if self.__doNotTrack:
50 if self.__doNotTrack: 52 info.setHttpHeader(b"DNT", b"1")
51 info.setHttpHeader(b"DNT", b"1") 53 info.setHttpHeader(b"X-Do-Not-Track", b"1")
52 info.setHttpHeader(b"X-Do-Not-Track", b"1") 54
53 55 # Send referrer header?
54 # Send referrer header? 56 if info.requestUrl().host() not in Preferences.getWebBrowser(
55 if info.requestUrl().host() not in Preferences.getWebBrowser( 57 "SendRefererWhitelist"):
56 "SendRefererWhitelist"): 58 self.__setRefererHeader(info)
57 self.__setRefererHeader(info) 59
58 60 # User Agents header
59 # User Agents header 61 userAgent = WebBrowserPage.userAgentForUrl(info.requestUrl())
60 userAgent = WebBrowserPage.userAgentForUrl(info.requestUrl()) 62 info.setHttpHeader(b"User-Agent", userAgent.encode())
61 info.setHttpHeader(b"User-Agent", userAgent.encode()) 63
62 64 for interceptor in self.__interceptors:
63 for interceptor in self.__interceptors: 65 interceptor.interceptRequest(info)
64 interceptor.interceptRequest(info)
65 66
66 def installUrlInterceptor(self, interceptor): 67 def installUrlInterceptor(self, interceptor):
67 """ 68 """
68 Public method to install an URL interceptor. 69 Public method to install an URL interceptor.
69 70
70 @param interceptor URL interceptor to be installed 71 @param interceptor URL interceptor to be installed
71 @type UrlInterceptor 72 @type UrlInterceptor
72 """ 73 """
73 locker = QMutexLocker(self.__mutex) # __IGNORE_WARNING__ 74 with E5MutexLocker(self.__mutex):
74 75 if interceptor not in self.__interceptors:
75 if interceptor not in self.__interceptors: 76 self.__interceptors.append(interceptor)
76 self.__interceptors.append(interceptor)
77 77
78 def removeUrlInterceptor(self, interceptor): 78 def removeUrlInterceptor(self, interceptor):
79 """ 79 """
80 Public method to remove an URL interceptor. 80 Public method to remove an URL interceptor.
81 81
82 @param interceptor URL interceptor to be removed 82 @param interceptor URL interceptor to be removed
83 @type UrlInterceptor 83 @type UrlInterceptor
84 """ 84 """
85 locker = QMutexLocker(self.__mutex) # __IGNORE_WARNING__ 85 with E5MutexLocker(self.__mutex):
86 86 if interceptor in self.__interceptors:
87 if interceptor in self.__interceptors: 87 self.__interceptors.remove(interceptor)
88 self.__interceptors.remove(interceptor)
89 88
90 def __loadSettings(self): 89 def __loadSettings(self):
91 """ 90 """
92 Private method to load the Network Manager settings. 91 Private method to load the Network Manager settings.
93 """ 92 """
94 locker = QMutexLocker(self.__mutex) # __IGNORE_WARNING__ 93 with E5MutexLocker(self.__mutex):
95 94 self.__doNotTrack = Preferences.getWebBrowser("DoNotTrack")
96 self.__doNotTrack = Preferences.getWebBrowser("DoNotTrack") 95 self.__sendReferer = Preferences.getWebBrowser("RefererSendReferer")
97 self.__sendReferer = Preferences.getWebBrowser("RefererSendReferer") 96 self.__refererDefaultPolicy = Preferences.getWebBrowser(
98 self.__refererDefaultPolicy = Preferences.getWebBrowser( 97 "RefererDefaultPolicy")
99 "RefererDefaultPolicy") 98 self.__refererTrimmingPolicy = Preferences.getWebBrowser(
100 self.__refererTrimmingPolicy = Preferences.getWebBrowser( 99 "RefererTrimmingPolicy")
101 "RefererTrimmingPolicy")
102 100
103 def preferencesChanged(self): 101 def preferencesChanged(self):
104 """ 102 """
105 Public slot to handle a change of preferences. 103 Public slot to handle a change of preferences.
106 """ 104 """

eric ide

mercurial