78 lines
1.5 KiB
JavaScript
78 lines
1.5 KiB
JavaScript
'use strict'
|
|
|
|
const { webidl } = require('../fetch/webidl')
|
|
|
|
const kState = Symbol('ProgressEvent state')
|
|
|
|
/**
|
|
* @see https://xhr.spec.whatwg.org/#progressevent
|
|
*/
|
|
class ProgressEvent extends Event {
|
|
constructor (type, eventInitDict = {}) {
|
|
type = webidl.converters.DOMString(type)
|
|
eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})
|
|
|
|
super(type, eventInitDict)
|
|
|
|
this[kState] = {
|
|
lengthComputable: eventInitDict.lengthComputable,
|
|
loaded: eventInitDict.loaded,
|
|
total: eventInitDict.total
|
|
}
|
|
}
|
|
|
|
get lengthComputable () {
|
|
webidl.brandCheck(this, ProgressEvent)
|
|
|
|
return this[kState].lengthComputable
|
|
}
|
|
|
|
get loaded () {
|
|
webidl.brandCheck(this, ProgressEvent)
|
|
|
|
return this[kState].loaded
|
|
}
|
|
|
|
get total () {
|
|
webidl.brandCheck(this, ProgressEvent)
|
|
|
|
return this[kState].total
|
|
}
|
|
}
|
|
|
|
webidl.converters.ProgressEventInit = webidl.dictionaryConverter([
|
|
{
|
|
key: 'lengthComputable',
|
|
converter: webidl.converters.boolean,
|
|
defaultValue: false
|
|
},
|
|
{
|
|
key: 'loaded',
|
|
converter: webidl.converters['unsigned long long'],
|
|
defaultValue: 0
|
|
},
|
|
{
|
|
key: 'total',
|
|
converter: webidl.converters['unsigned long long'],
|
|
defaultValue: 0
|
|
},
|
|
{
|
|
key: 'bubbles',
|
|
converter: webidl.converters.boolean,
|
|
defaultValue: false
|
|
},
|
|
{
|
|
key: 'cancelable',
|
|
converter: webidl.converters.boolean,
|
|
defaultValue: false
|
|
},
|
|
{
|
|
key: 'composed',
|
|
converter: webidl.converters.boolean,
|
|
defaultValue: false
|
|
}
|
|
])
|
|
|
|
module.exports = {
|
|
ProgressEvent
|
|
}
|