Helpviewer/HelpBrowserWV.py

changeset 656
2f4496b1956f
parent 653
0540f3c52b46
child 657
099d1ab9073e
equal deleted inserted replaced
654:72d4c6f31157 656:2f4496b1956f
157 self.__proxy = NetworkAccessManagerProxy(self) 157 self.__proxy = NetworkAccessManagerProxy(self)
158 self.__proxy.setWebPage(self) 158 self.__proxy.setWebPage(self)
159 self.__proxy.setPrimaryNetworkAccessManager( 159 self.__proxy.setPrimaryNetworkAccessManager(
160 Helpviewer.HelpWindow.HelpWindow.networkAccessManager()) 160 Helpviewer.HelpWindow.HelpWindow.networkAccessManager())
161 self.setNetworkAccessManager(self.__proxy) 161 self.setNetworkAccessManager(self.__proxy)
162
163 self.__sslInfo = None
164 self.__proxy.finished[QNetworkReply].connect(self.__managerFinished)
162 165
163 def acceptNavigationRequest(self, frame, request, type_): 166 def acceptNavigationRequest(self, frame, request, type_):
164 """ 167 """
165 Protected method to determine, if a request may be accepted. 168 Protected method to determine, if a request may be accepted.
166 169
285 """ 288 """
286 agent = Preferences.getHelp("UserAgent") 289 agent = Preferences.getHelp("UserAgent")
287 if agent == "": 290 if agent == "":
288 agent = QWebPage.userAgentForUrl(self, url) 291 agent = QWebPage.userAgentForUrl(self, url)
289 return agent 292 return agent
293
294 def __managerFinished(self, reply):
295 """
296 Private slot to handle a finished reply.
297
298 This slot is used to get SSL related information for a reply.
299
300 @param reply reference to the finished reply (QNetworkReply)
301 """
302 try:
303 frame = reply.request().originatingObject()
304 except AttributeError:
305 frame = None
306
307 mainFrameRequest = frame == self.mainFrame()
308
309 if mainFrameRequest and \
310 self.__sslInfo is not None and \
311 not self.__domainSchemeMatch(reply.url(), self.__sslInfo.url):
312 self.__sslInfo = None
313
314 if reply.error() == QNetworkReply.NoError and \
315 mainFrameRequest and \
316 self.__sslInfo is None and \
317 reply.url().scheme().lower() == "https":
318 self.__sslInfo = reply.sslConfiguration().peerCertificate()
319 self.__sslInfo.url = QUrl(reply.url())
320
321 def __domainSchemeMatch(self, url1, url2):
322 """
323 Private method to check, if to URLs belong to the same domain.
324
325 @param url1 first URL (QUrl)
326 @param url2 second URL (QUrl)
327 @return flag indicating a match (boolean)
328 """
329 if url1.scheme() != url2.scheme():
330 return False
331
332 url1L = url1.host().lower().split(".")
333 url2L = url2.host().lower().split(".")
334 if min(len(url1L), len(url2L)) < 2:
335 return False
336
337 return url1L[-2:] == url2L[-2:]
290 338
291 ########################################################################################## 339 ##########################################################################################
292 340
293 class HelpBrowser(QWebView): 341 class HelpBrowser(QWebView):
294 """ 342 """

eric ide

mercurial