mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-06 15:58:39 +09:00
Issue #1442 - Part 5: Implement WebIDL bindings for Streams. https://bugzilla.mozilla.org/show_bug.cgi?id=1128959
This commit is contained in:
parent
9b9075eef6
commit
0701dccaca
14 changed files with 255 additions and 157 deletions
|
|
@ -2054,6 +2054,9 @@ class IDLType(IDLObject):
|
|||
def isRecord(self):
|
||||
return False
|
||||
|
||||
def isReadableStream(self):
|
||||
return False
|
||||
|
||||
def isArrayBuffer(self):
|
||||
return False
|
||||
|
||||
|
|
@ -2081,12 +2084,12 @@ class IDLType(IDLObject):
|
|||
|
||||
def isSpiderMonkeyInterface(self):
|
||||
""" Returns a boolean indicating whether this type is an 'interface'
|
||||
type that is implemented in Spidermonkey. At the moment, this
|
||||
only returns true for the types from the TypedArray spec. """
|
||||
type that is implemented in SpiderMonkey. """
|
||||
return self.isInterface() and (self.isArrayBuffer() or
|
||||
self.isArrayBufferView() or
|
||||
self.isSharedArrayBuffer() or
|
||||
self.isTypedArray())
|
||||
self.isTypedArray() or
|
||||
self.isReadableStream())
|
||||
|
||||
def isDictionary(self):
|
||||
return False
|
||||
|
|
@ -2275,6 +2278,9 @@ class IDLNullableType(IDLParameterizedType):
|
|||
def isRecord(self):
|
||||
return self.inner.isRecord()
|
||||
|
||||
def isReadableStream(self):
|
||||
return self.inner.isReadableStream()
|
||||
|
||||
def isArrayBuffer(self):
|
||||
return self.inner.isArrayBuffer()
|
||||
|
||||
|
|
@ -2634,6 +2640,9 @@ class IDLTypedefType(IDLType):
|
|||
def isRecord(self):
|
||||
return self.inner.isRecord()
|
||||
|
||||
def isReadableStream(self):
|
||||
return self.inner.isReadableStream()
|
||||
|
||||
def isDictionary(self):
|
||||
return self.inner.isDictionary()
|
||||
|
||||
|
|
@ -2945,7 +2954,8 @@ class IDLBuiltinType(IDLType):
|
|||
'Int32Array',
|
||||
'Uint32Array',
|
||||
'Float32Array',
|
||||
'Float64Array'
|
||||
'Float64Array',
|
||||
'ReadableStream',
|
||||
)
|
||||
|
||||
TagLookup = {
|
||||
|
|
@ -2980,7 +2990,8 @@ class IDLBuiltinType(IDLType):
|
|||
Types.Int32Array: IDLType.Tags.interface,
|
||||
Types.Uint32Array: IDLType.Tags.interface,
|
||||
Types.Float32Array: IDLType.Tags.interface,
|
||||
Types.Float64Array: IDLType.Tags.interface
|
||||
Types.Float64Array: IDLType.Tags.interface,
|
||||
Types.ReadableStream: IDLType.Tags.interface,
|
||||
}
|
||||
|
||||
def __init__(self, location, name, type):
|
||||
|
|
@ -3027,6 +3038,9 @@ class IDLBuiltinType(IDLType):
|
|||
return (self._typeTag >= IDLBuiltinType.Types.Int8Array and
|
||||
self._typeTag <= IDLBuiltinType.Types.Float64Array)
|
||||
|
||||
def isReadableStream(self):
|
||||
return self._typeTag == IDLBuiltinType.Types.ReadableStream
|
||||
|
||||
def isInterface(self):
|
||||
# TypedArray things are interface types per the TypedArray spec,
|
||||
# but we handle them as builtins because SpiderMonkey implements
|
||||
|
|
@ -3034,7 +3048,8 @@ class IDLBuiltinType(IDLType):
|
|||
return (self.isArrayBuffer() or
|
||||
self.isArrayBufferView() or
|
||||
self.isSharedArrayBuffer() or
|
||||
self.isTypedArray())
|
||||
self.isTypedArray() or
|
||||
self.isReadableStream())
|
||||
|
||||
def isNonCallbackInterface(self):
|
||||
# All the interfaces we can be are non-callback
|
||||
|
|
@ -3104,6 +3119,7 @@ class IDLBuiltinType(IDLType):
|
|||
# that's not an ArrayBuffer or a callback interface
|
||||
(self.isArrayBuffer() and not other.isArrayBuffer()) or
|
||||
(self.isSharedArrayBuffer() and not other.isSharedArrayBuffer()) or
|
||||
(self.isReadableStream() and not other.isReadableStream()) or
|
||||
# ArrayBufferView is distinguishable from everything
|
||||
# that's not an ArrayBufferView or typed array.
|
||||
(self.isArrayBufferView() and not other.isArrayBufferView() and
|
||||
|
|
@ -3213,7 +3229,10 @@ BuiltinTypes = {
|
|||
IDLBuiltinType.Types.Float32Array),
|
||||
IDLBuiltinType.Types.Float64Array:
|
||||
IDLBuiltinType(BuiltinLocation("<builtin type>"), "Float64Array",
|
||||
IDLBuiltinType.Types.Float64Array)
|
||||
IDLBuiltinType.Types.Float64Array),
|
||||
IDLBuiltinType.Types.ReadableStream:
|
||||
IDLBuiltinType(BuiltinLocation("<builtin type>"), "ReadableStream",
|
||||
IDLBuiltinType.Types.ReadableStream),
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -5232,7 +5251,8 @@ class Tokenizer(object):
|
|||
"maplike": "MAPLIKE",
|
||||
"setlike": "SETLIKE",
|
||||
"iterable": "ITERABLE",
|
||||
"namespace": "NAMESPACE"
|
||||
"namespace": "NAMESPACE",
|
||||
"ReadableStream": "READABLESTREAM",
|
||||
}
|
||||
|
||||
tokens.extend(keywords.values())
|
||||
|
|
@ -6420,6 +6440,7 @@ class Parser(Tokenizer):
|
|||
NonAnyType : PrimitiveType Null
|
||||
| ARRAYBUFFER Null
|
||||
| SHAREDARRAYBUFFER Null
|
||||
| READABLESTREAM Null
|
||||
| OBJECT Null
|
||||
"""
|
||||
if p[1] == "object":
|
||||
|
|
@ -6428,6 +6449,8 @@ class Parser(Tokenizer):
|
|||
type = BuiltinTypes[IDLBuiltinType.Types.ArrayBuffer]
|
||||
elif p[1] == "SharedArrayBuffer":
|
||||
type = BuiltinTypes[IDLBuiltinType.Types.SharedArrayBuffer]
|
||||
elif p[1] == "ReadableStream":
|
||||
type = BuiltinTypes[IDLBuiltinType.Types.ReadableStream]
|
||||
else:
|
||||
type = BuiltinTypes[p[1]]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue