WebBrowser/UrlBar/UrlBar.py

branch
safe_browsing
changeset 5829
d3448873ced3
parent 5624
cdd346d8858b
child 6048
82ad8ec9548c
--- a/WebBrowser/UrlBar/UrlBar.py	Sun Jul 30 19:56:04 2017 +0200
+++ b/WebBrowser/UrlBar/UrlBar.py	Fri Aug 04 18:38:45 2017 +0200
@@ -13,7 +13,7 @@
 except NameError:
     pass
 
-from PyQt5.QtCore import pyqtSlot, Qt, QPointF, QUrl, QDateTime, QTimer
+from PyQt5.QtCore import pyqtSlot, Qt, QPointF, QUrl, QDateTime, QTimer, QPoint
 from PyQt5.QtGui import QColor, QPalette, QLinearGradient, QIcon
 from PyQt5.QtWidgets import QDialog, QApplication
 from PyQt5.QtWebEngineWidgets import QWebEnginePage
@@ -23,7 +23,10 @@
 
 from WebBrowser.WebBrowserWindow import WebBrowserWindow
 
+from WebBrowser.SafeBrowsing.SafeBrowsingLabel import SafeBrowsingLabel
+
 from .FavIconLabel import FavIconLabel
+
 import UI.PixmapCache
 import Preferences
 
@@ -51,6 +54,10 @@
         self.__bmInactiveIcon = QIcon(
             self.__bmActiveIcon.pixmap(16, 16, QIcon.Disabled))
         
+        self.__safeBrowsingLabel = SafeBrowsingLabel(self)
+        self.addWidget(self.__safeBrowsingLabel, E5LineEdit.LeftSide)
+        self.__safeBrowsingLabel.setVisible(False)
+        
         self.__favicon = FavIconLabel(self)
         self.addWidget(self.__favicon, E5LineEdit.LeftSide)
         
@@ -68,6 +75,7 @@
         self.addWidget(self.__clearButton, E5LineEdit.RightSide)
         self.__clearButton.setVisible(False)
         
+        self.__safeBrowsingLabel.clicked.connect(self.__showThreatInfo)
         self.__bookmarkButton.clicked.connect(self.__showBookmarkInfo)
         self.__rssButton.clicked.connect(self.__rssClicked)
         self.__clearButton.clicked.connect(self.clear)
@@ -95,6 +103,9 @@
         self.__browser.loadProgress.connect(self.update)
         self.__browser.loadFinished.connect(self.__loadFinished)
         self.__browser.loadStarted.connect(self.__loadStarted)
+        
+        self.__browser.safeBrowsingBad.connect(
+            self.__safeBrowsingLabel.setThreatInfo)
     
     def browser(self):
         """
@@ -156,6 +167,10 @@
             self.__checkBookmark()
             self.__bookmarkButton.setVisible(True)
         
+        self.__browserUrlChanged(self.__browser.url())
+        self.__safeBrowsingLabel.setVisible(
+            not self.__browser.getSafeBrowsingStatus())
+        
         if ok:
             QTimer.singleShot(0, self.__setRssButton)
     
@@ -220,16 +235,19 @@
         if self.__browser is not None:
             p = self.palette()
             progress = self.__browser.progress()
+            
+            if not self.__browser.getSafeBrowsingStatus():
+                # malicious web site
+                backgroundColor = QColor(170, 0, 0)
+                foregroundColor = QColor(Qt.white)
+            elif self.__browser.url().scheme() == "https":
+                backgroundColor = Preferences.getWebBrowser(
+                    "SaveUrlColor")
+            
             if progress == 0 or progress == 100:
-                if self.__browser.url().scheme() == "https":
-                    backgroundColor = Preferences.getWebBrowser(
-                        "SaveUrlColor")
                 p.setBrush(QPalette.Base, backgroundColor)
                 p.setBrush(QPalette.Text, foregroundColor)
             else:
-                if self.__browser.url().scheme() == "https":
-                    backgroundColor = Preferences.getWebBrowser(
-                        "SaveUrlColor")
                 highlight = QApplication.palette().color(QPalette.Highlight)
                 r = (highlight.red() + 2 * backgroundColor.red()) // 3
                 g = (highlight.green() + 2 * backgroundColor.green()) // 3
@@ -379,3 +397,18 @@
         feeds = self.__browser.getRSS()
         dlg = FeedsDialog(feeds, self.__browser)
         dlg.exec_()
+    
+    @pyqtSlot(QPoint)
+    def __showThreatInfo(self, pos):
+        """
+        Private slot to show the threat info widget.
+        
+        @param pos position to show the info at
+        @type QPoint
+        """
+        threatInfo = self.__safeBrowsingLabel.getThreatInfo()
+        if threatInfo:
+            from WebBrowser.SafeBrowsing.SafeBrowsingInfoWidget import \
+                SafeBrowsingInfoWidget
+            widget = SafeBrowsingInfoWidget(threatInfo, self.__browser)
+            widget.showAt(pos)

eric ide

mercurial