WebBrowser/WebBrowserView.py

branch
maintenance
changeset 6455
22a6fc33ab6d
parent 6273
0daf79d65080
parent 6451
72c58236ab7e
child 6487
d3ca83d691e7
--- a/WebBrowser/WebBrowserView.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/WebBrowser/WebBrowserView.py	Wed Aug 01 19:43:34 2018 +0200
@@ -155,6 +155,13 @@
         self.__page.safeBrowsingAbort.connect(self.safeBrowsingAbort)
         self.__page.safeBrowsingBad.connect(self.safeBrowsingBad)
         self.__page.printRequested.connect(self.__printPage)
+        try:
+            self.__page.quotaRequested.connect(self.__quotaRequested)
+            self.__page.registerProtocolHandlerRequested.connect(
+                self.__registerProtocolHandlerRequested)
+        except AttributeError:
+            # pre Qt 5.11
+            pass
     
     def __setRwhvqt(self):
         """
@@ -544,7 +551,8 @@
             self.__menu.addSeparator()
             self.__menu.addAction(self.__mw.adBlockIcon().menuAction())
         
-        if Preferences.getWebBrowser("WebInspectorEnabled"):
+        if qVersionTuple() >= (5, 11, 0) or \
+           Preferences.getWebBrowser("WebInspectorEnabled"):
             self.__menu.addSeparator()
             self.__menu.addAction(
                 UI.PixmapCache.getIcon("webInspector.png"),
@@ -2207,3 +2215,74 @@
         Private slot to support printing from the web page.
         """
         self.__mw.tabWidget.printBrowser(browser=self)
+    
+    ###########################################################################
+    ## Methods below implement slots for Qt 5.11+
+    ###########################################################################
+    
+    if qVersionTuple() >= (5, 11, 0):
+        @pyqtSlot("QWebEngineQuotaRequest")
+        def __quotaRequested(self, quotaRequest):
+            """
+            Private slot to handle quota requests of the web page.
+            
+            @param quotaRequest reference to the quota request object
+            @type QWebEngineQuotaRequest
+            """
+            acceptRequest = Preferences.getWebBrowser("AcceptQuotaRequest")
+            # yes/no/ask (0, 1, 2)
+            if acceptRequest == 0:
+                # always yes
+                ok = True
+            elif acceptRequest == 1:
+                # always no
+                ok = False
+            else:
+                # ask user
+                from .Download.DownloadUtilities import dataString
+                sizeStr = dataString(quotaRequest.requestedSize())
+                
+                ok = E5MessageBox.yesNo(
+                    self,
+                    self.tr("Quota Request"),
+                    self.tr("""<p> Allow the website at <b>{0}</b> to use"""
+                            """ <b>{1}</b> of persistent storage?</p>""")
+                    .format(quotaRequest.origin().host(), sizeStr)
+                )
+            
+            if ok:
+                quotaRequest.accept()
+            else:
+                quotaRequest.reject()
+        
+        @pyqtSlot("QWebEngineRegisterProtocolHandlerRequest")
+        def __registerProtocolHandlerRequested(self, request):
+            """
+            Private slot to handle requests for registration of a protocol handler.
+            
+            @param request reference to the protocol handler request object
+            @type QWebEngineRegisterProtocolHandlerRequest
+            """
+            acceptRequest = Preferences.getWebBrowser(
+                "AcceptProtocolHandlerRequest")
+            # yes/no/ask (0, 1, 2)
+            if acceptRequest == 0:
+                # always yes
+                ok = True
+            elif acceptRequest == 1:
+                # always no
+                ok = False
+            else:
+                # ask user
+                ok = E5MessageBox.yesNo(
+                    self,
+                    self.tr("Protocol Handler Request"),
+                    self.tr("""<p> Allow the website at <b>{0}</b> to open all"""
+                            """ <b>{1}</b> links?</p>""")
+                    .format(request.origin().host(), request.scheme())
+                )
+            
+            if ok:
+                request.accept()
+            else:
+                request.reject()

eric ide

mercurial