mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-18 02:21:20 -08:00
test(multiple-subtitles): checkpoint native seek diagnostics [PKG-MULTI-SUB-05]
This commit is contained in:
1 parent
318de37e8a
commit
a8d19ce5ef
10 files changed
+7266
-8
No files matched your search
@@ -0,0 +1,27 @@
|
||||
export async function installSeekDiagnostics(page, properties = true) {
|
||||
await page.evaluate((properties) => {
|
||||
const art = window.art
|
||||
const video = art.video
|
||||
window.sourceSeekTrace = []
|
||||
const state = () => ({ clock: performance.now(), time: video.currentTime, duration: video.duration, seeking: video.seeking, paused: video.paused, rate: video.playbackRate, readyState: video.readyState, source: video.currentSrc, active: Array.from(art.template.$track.track.activeCues || [], cue => cue.text) })
|
||||
const record = (event, detail) => window.sourceSeekTrace.push({ event, detail, ...state() })
|
||||
for (const property of properties ? ['currentTime', 'playbackRate'] : []) {
|
||||
const descriptor = Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, property)
|
||||
Object.defineProperty(video, property, {
|
||||
configurable: true,
|
||||
get() { return descriptor.get.call(this) },
|
||||
set(value) {
|
||||
record(`before:${property}`, { value, stack: new Error('Native media property write').stack })
|
||||
descriptor.set.call(this, value)
|
||||
record(`after:${property}`, { value })
|
||||
},
|
||||
})
|
||||
}
|
||||
for (const event of ['loadstart', 'loadedmetadata', 'loadeddata', 'canplay', 'seeking', 'seeked', 'emptied', 'pause', 'ratechange', 'timeupdate'])
|
||||
video.addEventListener(event, () => record(`native:${event}`))
|
||||
for (const event of ['restart', 'seek', 'fullscreen'])
|
||||
art.on(event, (...values) => record(`art:${event}`, values))
|
||||
window.recordSourceSeek = record
|
||||
record('installed')
|
||||
}, properties)
|
||||
}
|
||||
Reference in new issue
Block a user