79 lines
1.5 KiB
JavaScript
79 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
|
||
|
}
|