WebBrowser/WebBrowserView.py

branch
safe_browsing
changeset 5829
d3448873ced3
parent 5797
8bc870b7a8a6
child 5863
0752bdd8db77
child 5867
099008539886
diff -r 6c7766cde4c1 -r d3448873ced3 WebBrowser/WebBrowserView.py
--- a/WebBrowser/WebBrowserView.py	Sun Jul 30 19:56:04 2017 +0200
+++ b/WebBrowser/WebBrowserView.py	Fri Aug 04 18:38:45 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

eric ide

mercurial