--- 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()