WebBrowser/Network/EricSchemeHandler.py

branch
QtWebEngine
changeset 4859
36c4b21c9f7b
parent 4858
19dff9c9cf26
child 4861
d419f153925d
diff -r 19dff9c9cf26 -r 36c4b21c9f7b WebBrowser/Network/EricSchemeHandler.py
--- a/WebBrowser/Network/EricSchemeHandler.py	Sun Mar 13 20:54:42 2016 +0100
+++ b/WebBrowser/Network/EricSchemeHandler.py	Mon Mar 14 20:48:01 2016 +0100
@@ -9,8 +9,8 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import QByteArray, QBuffer, QIODevice, QTextStream, \
-    QUrlQuery
+from PyQt5.QtCore import pyqtSignal, QByteArray, QBuffer, QIODevice, \
+    QTextStream, QUrlQuery
 from PyQt5.QtWebEngineCore import QWebEngineUrlSchemeHandler
 
 from ..Tools.WebBrowserTools import readAllFileContents
@@ -31,6 +31,8 @@
         @type QObject
         """
         super(EricSchemeHandler, self).__init__(parent)
+        
+        self.__replies = []
     
     def requestStarted(self, job):
         """
@@ -40,17 +42,32 @@
         @type QWebEngineUrlRequestJob
         """
         if job.requestUrl().path() in self.SupportedPages:
-            job.reply(b"text/html", EricSchemeReply(job))
+            reply = EricSchemeReply(job)
+            reply.closed.connect(self.__replyClosed)
+            self.__replies.append(reply)
+            job.reply(b"text/html", reply)
         else:
             job.reply(QByteArray(), QBuffer())
             # job.fail(QWebEngineUrlRequestJob.UrlNotFound)
+    
+    def __replyClosed(self):
+        """
+        Private slot handling the closed signal of a reply.
+        """
+        object = self.sender()
+        if object and object in self.__replies:
+            self.__replies.remove(object)
 
 
 class EricSchemeReply(QIODevice):
     """
     Class implementing a reply for a requested eric: page.
+    
+    @signal closed emitted to signal that the web engine has read
+        the data
     """
-    # TODO: SchemeHandler: debug this further
+    closed = pyqtSignal()
+    
     def __init__(self, job, parent=None):
         """
         Constructor
@@ -96,7 +113,6 @@
         @return number of available bytes
         @rtype int
         """
-        print("bytesAvailable", self.__buffer.bytesAvailable())
         return self.__buffer.bytesAvailable()
     
     def readData(self, maxlen):
@@ -106,12 +122,14 @@
         @param maxlen maximum number of bytes to read (integer)
         @return string containing the data (bytes)
         """
-        print("readData")
-        self.__loadPage()
         return self.__buffer.read(maxlen)
     
-    def writeData(self, data, len):
-        return 0
+    def close(self):
+        """
+        Public method used to cloase the reply.
+        """
+        super(EricSchemeReply, self).close()
+        self.closed.emit()
     
     def __adBlockPage(self):
         """

eric ide

mercurial