--- a/WebBrowser/WebBrowserView.py Thu Aug 03 14:50:59 2017 +0200 +++ b/WebBrowser/WebBrowserView.py Fri Sep 01 12:08:17 2017 +0200 @@ -53,6 +53,10 @@ @signal search(QUrl) emitted, when a search is requested @signal zoomValueChanged(int) emitted to signal a change of the zoom value @signal faviconChanged() emitted to signal a changed web site icon + @signal safeBrowsingAbort() emitted to indicate an abort due to a safe + browsing event + @signal safeBrowsingBad(threatType, threatMessages) emitted to indicate a + malicious web site as determined by safe browsing """ sourceChanged = pyqtSignal(QUrl) forwardAvailable = pyqtSignal(bool) @@ -61,6 +65,8 @@ search = pyqtSignal(QUrl) zoomValueChanged = pyqtSignal(int) faviconChanged = pyqtSignal() + safeBrowsingAbort = pyqtSignal() + safeBrowsingBad = pyqtSignal(str, str) ZoomLevels = [ 30, 40, 50, 67, 80, 90, @@ -85,8 +91,8 @@ self.__speedDial = WebBrowserWindow.speedDial() - self.__page = WebBrowserPage(self) - self.setPage(self.__page) + self.__page = None + self.__createNewPage() self.__mw = mainWindow self.__isLoading = False @@ -137,6 +143,16 @@ self.grabGesture(Qt.PinchGesture) + def __createNewPage(self): + """ + Private method to create a new page object. + """ + self.__page = WebBrowserPage(self) + self.setPage(self.__page) + + self.__page.safeBrowsingAbort.connect(self.safeBrowsingAbort) + self.__page.safeBrowsingBad.connect(self.safeBrowsingBad) + def __setRwhvqt(self): """ Private slot to set widget that receives input events. @@ -1579,8 +1595,7 @@ @type QWebEnginePage.RenderProcessTerminationStatus """ self.page().deleteLater() - self.__page = WebBrowserPage(self) - self.setPage(self.__page) + self.__createNewPage() html = readAllFileContents(":/html/tabCrashPage.html") html = html.replace("@IMAGE@", pixmapToDataUrl( @@ -2049,3 +2064,19 @@ QUrl.fromUserInput(urlStr)) return title, urlStr, icon + + ########################################################################### + ## Methods below implement safe browsing related functions + ########################################################################### + + def getSafeBrowsingStatus(self): + """ + Public method to get the safe browsing status of the current page. + + @return flag indicating a safe site + @rtype bool + """ + if self.__page: + return self.__page.getSafeBrowsingStatus() + else: + return True