- 新增 RDEPUBReaderSearchCoordinator 与 RDEPUBSelectionState 管理搜索和选中状态 - 新增 BookmarkChromeStateTests、NavigationBackwardTests、SelectionAnnotateTests 等 UI 测试 - 新增多个边界测试 epub 样本(损坏结构、空归档、缺失文件、流式外链验证) - 重构阅读器 chrome 状态管理,统一 tool bar 与 search bar 交互 - 优化大书分页缓存策略(RDEPUBChapterSummaryDiskCache、RDEPUBPageCountCache) - 移除废弃的 RDEPUBLocationConverter 和 RDEPUBPageBreakPolicy - 更新 epub-bridge.js 与 JS bridge 通信协议 - 全面更新现有 UI 测试以适配新的 helper 和状态管理
31 lines
769 B
Swift
31 lines
769 B
Swift
import Foundation
|
|
|
|
final class RDEPUBPageCountCache {
|
|
private var storage: [RDEPUBChapterCacheKey: RDEPUBRuntimePageCount] = [:]
|
|
private let lock = NSLock()
|
|
|
|
subscript(key: RDEPUBChapterCacheKey) -> RDEPUBRuntimePageCount? {
|
|
get {
|
|
lock.lock()
|
|
defer { lock.unlock() }
|
|
return storage[key]
|
|
}
|
|
set {
|
|
lock.lock()
|
|
defer { lock.unlock() }
|
|
storage[key] = newValue
|
|
}
|
|
}
|
|
|
|
func remove(forSpineIndex spineIndex: Int) {
|
|
lock.lock()
|
|
defer { lock.unlock() }
|
|
storage = storage.filter { $0.value.spineIndex != spineIndex }
|
|
}
|
|
|
|
func removeAll() {
|
|
lock.lock()
|
|
defer { lock.unlock() }
|
|
storage.removeAll()
|
|
}
|
|
} |