WebBrowser/WebBrowserView.py

changeset 6410
98a5d0cd72f5
parent 6402
bdc273bb66c5
child 6451
72c58236ab7e
--- a/WebBrowser/WebBrowserView.py	Fri Jul 06 20:31:07 2018 +0200
+++ b/WebBrowser/WebBrowserView.py	Sat Jul 07 12:58:50 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):
         """
@@ -2208,3 +2215,73 @@
         Private slot to support printing from the web page.
         """
         self.__mw.tabWidget.printBrowser(browser=self)
+    
+    ###########################################################################
+    ## Methods below implement slots for Qt 5.11+
+    ###########################################################################
+    
+    @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