diff -r 2763348bf9a6 -r 98a5d0cd72f5 WebBrowser/WebBrowserView.py --- 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()