Fix reader interaction and web resource handling
This commit is contained in:
@@ -156,6 +156,7 @@ public final class RDEPUBResourceURLSchemeHandler: NSObject, WKURLSchemeHandler
|
||||
}
|
||||
Self.recordInMemoryResponse()
|
||||
RDEPUBWebViewDebug.logSchemeTask("ResourceScheme", requestURL: requestURL, fileURL: fileURL, event: "finished")
|
||||
return
|
||||
} catch {
|
||||
guard self.isTaskActive(taskID) else {
|
||||
DispatchQueue.main.async {
|
||||
@@ -207,14 +208,8 @@ public final class RDEPUBResourceURLSchemeHandler: NSObject, WKURLSchemeHandler
|
||||
}
|
||||
|
||||
let chunkSize = 65_536
|
||||
var streamingCompleted = false
|
||||
defer {
|
||||
fileHandle.closeFile()
|
||||
if !streamingCompleted {
|
||||
// Task was cancelled during streaming; didFailWithError already sent above
|
||||
// or will be sent by the guard check below. No need to send again.
|
||||
}
|
||||
self.clearTask(taskID)
|
||||
}
|
||||
while true {
|
||||
guard self.isTaskActive(taskID) else {
|
||||
@@ -222,6 +217,7 @@ public final class RDEPUBResourceURLSchemeHandler: NSObject, WKURLSchemeHandler
|
||||
DispatchQueue.main.async {
|
||||
urlSchemeTask.didFailWithError(NSError(domain: NSURLErrorDomain, code: NSURLErrorCancelled))
|
||||
}
|
||||
self.clearTask(taskID)
|
||||
return
|
||||
}
|
||||
let data = fileHandle.readData(ofLength: chunkSize)
|
||||
@@ -230,7 +226,6 @@ public final class RDEPUBResourceURLSchemeHandler: NSObject, WKURLSchemeHandler
|
||||
urlSchemeTask.didReceive(data)
|
||||
}
|
||||
}
|
||||
streamingCompleted = true
|
||||
self.dispatchTaskSuccessCallback(
|
||||
taskID: taskID,
|
||||
urlSchemeTask: urlSchemeTask
|
||||
@@ -265,6 +260,7 @@ public final class RDEPUBResourceURLSchemeHandler: NSObject, WKURLSchemeHandler
|
||||
return
|
||||
}
|
||||
callback()
|
||||
self.clearTask(taskID)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user