mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-26 17:01:20 -08:00
refactor(core): CORE-12 type template resources and verify bundled notices
This commit is contained in:
1 parent
b8039ad1f1
commit
9eb7c945ca
101 files changed
+7363
-664
No files matched your search
@@ -0,0 +1,72 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import fs from 'node:fs'
|
||||
// eslint-disable-next-line test/no-import-node-test -- Use the repository Node test runner.
|
||||
import { test } from 'node:test'
|
||||
import vm from 'node:vm'
|
||||
import { checkCoreVendors } from '../refactor/scripts/core-vendor.mjs'
|
||||
|
||||
test('copied core libraries match fixed references plus reviewed local adaptations', async () => {
|
||||
const evidence = await checkCoreVendors()
|
||||
assert.equal(evidence.sources.length, 4)
|
||||
})
|
||||
|
||||
const methods = [
|
||||
['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange'],
|
||||
['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange'],
|
||||
['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange'],
|
||||
['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange'],
|
||||
['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange'],
|
||||
]
|
||||
const source = fs.readFileSync(new URL('../packages/artplayer/src/libs/screenfull.js', import.meta.url), 'utf8').replace('export default screenfull', 'globalThis.result = screenfull')
|
||||
|
||||
for (const [request, exit, element, enabled, change] of methods) {
|
||||
test(`screenfull preserves ${request} mapping, options, promise completion and listeners`, async () => {
|
||||
const listeners = new Map()
|
||||
const options = { navigationUI: 'hide' }
|
||||
const document = {
|
||||
[element]: null,
|
||||
[enabled]: true,
|
||||
[exit]() {
|
||||
this[element] = null
|
||||
listeners.get(change)?.()
|
||||
return Promise.resolve()
|
||||
},
|
||||
addEventListener(name, callback) { listeners.set(name, callback) },
|
||||
removeEventListener(name, callback) {
|
||||
if (listeners.get(name) === callback)
|
||||
listeners.delete(name)
|
||||
},
|
||||
}
|
||||
document.documentElement = {
|
||||
[request](actual) {
|
||||
assert.equal(actual, options)
|
||||
document[element] = this
|
||||
listeners.get(change)?.()
|
||||
return Promise.resolve()
|
||||
},
|
||||
}
|
||||
const context = { document, Promise }
|
||||
vm.runInNewContext(source, context)
|
||||
const screenfull = context.result
|
||||
assert.equal(screenfull.isEnabled, true)
|
||||
assert.equal(screenfull.element, null)
|
||||
assert.equal(await screenfull.request(undefined, options), undefined)
|
||||
assert.equal(screenfull.element, document.documentElement)
|
||||
assert.equal(screenfull.isFullscreen, true)
|
||||
assert.equal(listeners.size, 0)
|
||||
assert.equal(await screenfull.toggle(), undefined)
|
||||
assert.equal(screenfull.isFullscreen, false)
|
||||
assert.equal(listeners.size, 0)
|
||||
})
|
||||
}
|
||||
|
||||
test('screenfull import remains inert without document and retains local disabled surface', () => {
|
||||
const context = {}
|
||||
vm.runInNewContext(source, context)
|
||||
assert.equal(typeof context.result.request, 'function')
|
||||
assert.equal(context.result.raw, false)
|
||||
const browser = { document: {} }
|
||||
vm.runInNewContext(source, browser)
|
||||
assert.equal(browser.result.isEnabled, false)
|
||||
assert.equal(browser.result.element, undefined)
|
||||
})
|
||||
Reference in new issue
Block a user