diff options
-rw-r--r-- | components/script/dom/bindings/codegen/CodegenRust.py | 38 | ||||
-rw-r--r-- | components/script/dom/bindings/codegen/run.py | 2 | ||||
-rw-r--r-- | third_party/WebIDL/WebIDL.py | 44 | ||||
-rw-r--r-- | third_party/WebIDL/readable-stream.patch | 162 | ||||
-rwxr-xr-x | third_party/WebIDL/update.sh | 1 |
5 files changed, 6 insertions, 241 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index a0f926b4c50..5236a8529a2 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -920,41 +920,6 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, return handleOptional(templateBody, declType, handleDefault("None")) - if type.isReadableStream(): - assert not isEnforceRange and not isClamp - - if failureCode is None: - unwrapFailureCode = '''throw_type_error(*cx, "This object is not \ - an instance of ReadableStream.");\n''' - else: - unwrapFailureCode = failureCode - - templateBody = fill( - """ - { - use crate::realms::{AlreadyInRealm, InRealm}; - use crate::dom::readablestream::ReadableStream; - let in_realm_proof = AlreadyInRealm::assert_for_cx(cx); - match ReadableStream::from_js(cx, $${val}.get().to_object(), InRealm::Already(&in_realm_proof)) { - Ok(val) => val, - Err(()) => { - $*{failureCode} - } - } - - } - """, - failureCode=f"{unwrapFailureCode}\n", - ) - - templateBody = wrapObjectTemplate(templateBody, "None", - isDefinitelyObject, type, failureCode) - - declType = CGGeneric("DomRoot<dom::readablestream::ReadableStream>") - - return handleOptional(templateBody, declType, - handleDefault("None")) - elif type.isSpiderMonkeyInterface(): raise TypeError("Can't handle SpiderMonkey interface arguments other than typed arrays yet") @@ -5061,9 +5026,6 @@ def getUnionTypeTemplateVars(type, descriptorProvider): elif type.isObject(): name = type.name typeName = "Heap<*mut JSObject>" - elif type.isReadableStream(): - name = type.name - typeName = "DomRoot<ReadableStream>" elif is_typed_array(type): name = type.name typeName = f"typedarray::Heap{name}" diff --git a/components/script/dom/bindings/codegen/run.py b/components/script/dom/bindings/codegen/run.py index 400d022a167..2dee39814b2 100644 --- a/components/script/dom/bindings/codegen/run.py +++ b/components/script/dom/bindings/codegen/run.py @@ -30,7 +30,7 @@ def main(): from Configuration import Configuration from CodegenRust import CGBindingRoot - parser = WebIDL.Parser(make_dir(os.path.join(out_dir, "cache")), use_builtin_readable_stream=False) + parser = WebIDL.Parser(make_dir(os.path.join(out_dir, "cache"))) webidls = [name for name in os.listdir(webidls_dir) if name.endswith(".webidl")] for webidl in webidls: filename = os.path.join(webidls_dir, webidl) diff --git a/third_party/WebIDL/WebIDL.py b/third_party/WebIDL/WebIDL.py index 482aa13bc2f..40e118e3781 100644 --- a/third_party/WebIDL/WebIDL.py +++ b/third_party/WebIDL/WebIDL.py @@ -2667,9 +2667,6 @@ class IDLType(IDLObject): def isRecord(self): return False - def isReadableStream(self): - return False - def isArrayBuffer(self): return False @@ -2698,7 +2695,7 @@ class IDLType(IDLObject): def isSpiderMonkeyInterface(self): """Returns a boolean indicating whether this type is an 'interface' type that is implemented in SpiderMonkey.""" - return self.isInterface() and (self.isBufferSource() or self.isReadableStream()) + return self.isInterface() and self.isBufferSource() def isAny(self): return self.tag() == IDLType.Tags.any @@ -2920,9 +2917,6 @@ class IDLNullableType(IDLParametrizedType): def isRecord(self): return self.inner.isRecord() - def isReadableStream(self): - return self.inner.isReadableStream() - def isArrayBuffer(self): return self.inner.isArrayBuffer() @@ -3449,9 +3443,6 @@ class IDLTypedefType(IDLType): def isRecord(self): return self.inner.isRecord() - def isReadableStream(self): - return self.inner.isReadableStream() - def isDictionary(self): return self.inner.isDictionary() @@ -3828,7 +3819,6 @@ class IDLBuiltinType(IDLType): "Uint32Array", "Float32Array", "Float64Array", - "ReadableStream", ) TagLookup = { @@ -3864,7 +3854,6 @@ class IDLBuiltinType(IDLType): Types.Uint32Array: IDLType.Tags.uint32array, Types.Float32Array: IDLType.Tags.float32array, Types.Float64Array: IDLType.Tags.float64array, - Types.ReadableStream: IDLType.Tags.interface, } PrettyNames = { @@ -3900,7 +3889,6 @@ class IDLBuiltinType(IDLType): Types.Uint32Array: "Uint32Array", Types.Float32Array: "Float32Array", Types.Float64Array: "Float64Array", - Types.ReadableStream: "ReadableStream", } __slots__ = ( @@ -4072,19 +4060,11 @@ class IDLBuiltinType(IDLType): 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 # all of it internally. - return ( - self.isArrayBuffer() - or self.isArrayBufferView() - or self.isTypedArray() - or self.isReadableStream() - ) + return self.isArrayBuffer() or self.isArrayBufferView() or self.isTypedArray() def isNonCallbackInterface(self): # All the interfaces we can be are non-callback @@ -4178,7 +4158,6 @@ class IDLBuiltinType(IDLType): # ArrayBuffer is distinguishable from everything # that's not an ArrayBuffer or a callback interface (self.isArrayBuffer() and not other.isArrayBuffer()) - or (self.isReadableStream() and not other.isReadableStream()) or # ArrayBufferView is distinguishable from everything # that's not an ArrayBufferView or typed array. @@ -4385,11 +4364,6 @@ BuiltinTypes = { "Float64Array", IDLBuiltinType.Types.Float64Array, ), - IDLBuiltinType.Types.ReadableStream: IDLBuiltinType( - BuiltinLocation("<builtin type>"), - "ReadableStream", - IDLBuiltinType.Types.ReadableStream, - ), } @@ -7272,9 +7246,6 @@ class Tokenizer(object): def t_IDENTIFIER(self, t): r"[_-]?[A-Za-z][0-9A-Z_a-z-]*" t.type = self.keywords.get(t.value, "IDENTIFIER") - # If Builtin readable streams are disabled, mark ReadableStream as an identifier. - if t.type == "READABLESTREAM" and not self._use_builtin_readable_streams: - t.type = "IDENTIFIER" return t def t_STRING(self, t): @@ -7367,7 +7338,6 @@ class Tokenizer(object): "setlike": "SETLIKE", "iterable": "ITERABLE", "namespace": "NAMESPACE", - "ReadableStream": "READABLESTREAM", "constructor": "CONSTRUCTOR", "symbol": "SYMBOL", "async": "ASYNC", @@ -7388,8 +7358,7 @@ class Tokenizer(object): ], ) - def __init__(self, outputdir, lexer=None, use_builtin_readable_streams=True): - self._use_builtin_readable_streams = use_builtin_readable_streams + def __init__(self, outputdir, lexer=None): if lexer: self.lexer = lexer else: @@ -8878,7 +8847,6 @@ class Parser(Tokenizer): """ DistinguishableType : PrimitiveType Null | ARRAYBUFFER Null - | READABLESTREAM Null | OBJECT Null | UNDEFINED Null """ @@ -8886,8 +8854,6 @@ class Parser(Tokenizer): type = BuiltinTypes[IDLBuiltinType.Types.object] elif p[1] == "ArrayBuffer": type = BuiltinTypes[IDLBuiltinType.Types.ArrayBuffer] - elif p[1] == "ReadableStream": - type = BuiltinTypes[IDLBuiltinType.Types.ReadableStream] elif p[1] == "undefined": type = BuiltinTypes[IDLBuiltinType.Types.undefined] else: @@ -9229,8 +9195,8 @@ class Parser(Tokenizer): [Location(self.lexer, p.lineno, p.lexpos, self._filename)], ) - def __init__(self, outputdir="", lexer=None, use_builtin_readable_stream=True): - Tokenizer.__init__(self, outputdir, lexer, use_builtin_readable_stream) + def __init__(self, outputdir="", lexer=None): + Tokenizer.__init__(self, outputdir, lexer) logger = SqueakyCleanLogger() try: diff --git a/third_party/WebIDL/readable-stream.patch b/third_party/WebIDL/readable-stream.patch deleted file mode 100644 index 4b90067696e..00000000000 --- a/third_party/WebIDL/readable-stream.patch +++ /dev/null @@ -1,162 +0,0 @@ ---- WebIDL.py -+++ WebIDL.py -@@ -2498,6 +2498,9 @@ class IDLType(IDLObject): - def isRecord(self): - return False - -+ def isReadableStream(self): -+ return False -+ - def isArrayBuffer(self): - return False - -@@ -2526,7 +2529,7 @@ class IDLType(IDLObject): - def isSpiderMonkeyInterface(self): - """Returns a boolean indicating whether this type is an 'interface' - type that is implemented in SpiderMonkey.""" -- return self.isInterface() and self.isBufferSource() -+ return self.isInterface() and (self.isBufferSource() or self.isReadableStream()) - - def isAny(self): - return self.tag() == IDLType.Tags.any -@@ -2743,6 +2746,9 @@ class IDLNullableType(IDLParametrizedType): - def isRecord(self): - return self.inner.isRecord() - -+ def isReadableStream(self): -+ return self.inner.isReadableStream() -+ - def isArrayBuffer(self): - return self.inner.isArrayBuffer() - -@@ -3252,6 +3258,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() - -@@ -3597,6 +3606,7 @@ class IDLBuiltinType(IDLType): - "Uint32Array", - "Float32Array", - "Float64Array", -+ "ReadableStream", - ) - - TagLookup = { -@@ -3632,6 +3642,7 @@ class IDLBuiltinType(IDLType): - Types.Uint32Array: IDLType.Tags.interface, - Types.Float32Array: IDLType.Tags.interface, - Types.Float64Array: IDLType.Tags.interface, -+ Types.ReadableStream: IDLType.Tags.interface, - } - - PrettyNames = { -@@ -3667,6 +3678,7 @@ class IDLBuiltinType(IDLType): - Types.Uint32Array: "Uint32Array", - Types.Float32Array: "Float32Array", - Types.Float64Array: "Float64Array", -+ Types.ReadableStream: "ReadableStream", - } - - def __init__( -@@ -3830,11 +3842,19 @@ class IDLBuiltinType(IDLType): - 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 - # all of it internally. -- return self.isArrayBuffer() or self.isArrayBufferView() or self.isTypedArray() -+ return ( -+ self.isArrayBuffer() -+ or self.isArrayBufferView() -+ or self.isTypedArray() -+ or self.isReadableStream() -+ ) - - def isNonCallbackInterface(self): - # All the interfaces we can be are non-callback -@@ -3928,6 +3948,7 @@ class IDLBuiltinType(IDLType): - # ArrayBuffer is distinguishable from everything - # that's not an ArrayBuffer or a callback interface - (self.isArrayBuffer() and not other.isArrayBuffer()) -+ or (self.isReadableStream() and not other.isReadableStream()) - or - # ArrayBufferView is distinguishable from everything - # that's not an ArrayBufferView or typed array. -@@ -4134,6 +4155,11 @@ BuiltinTypes = { - "Float64Array", - IDLBuiltinType.Types.Float64Array, - ), -+ IDLBuiltinType.Types.ReadableStream: IDLBuiltinType( -+ BuiltinLocation("<builtin type>"), -+ "ReadableStream", -+ IDLBuiltinType.Types.ReadableStream, -+ ), - } - - -@@ -6883,6 +6909,9 @@ class Tokenizer(object): - def t_IDENTIFIER(self, t): - r"[_-]?[A-Za-z][0-9A-Z_a-z-]*" - t.type = self.keywords.get(t.value, "IDENTIFIER") -+ # If Builtin readable streams are disabled, mark ReadableStream as an identifier. -+ if t.type == "READABLESTREAM" and not self._use_builtin_readable_streams: -+ t.type = "IDENTIFIER" - return t - - def t_STRING(self, t): -@@ -6973,6 +7002,7 @@ class Tokenizer(object): - "setlike": "SETLIKE", - "iterable": "ITERABLE", - "namespace": "NAMESPACE", -+ "ReadableStream": "READABLESTREAM", - "constructor": "CONSTRUCTOR", - "symbol": "SYMBOL", - "async": "ASYNC", -@@ -6993,7 +7023,8 @@ class Tokenizer(object): - ], - ) - -- def __init__(self, outputdir, lexer=None): -+ def __init__(self, outputdir, lexer=None, use_builtin_readable_streams=True): -+ self._use_builtin_readable_streams = use_builtin_readable_streams - if lexer: - self.lexer = lexer - else: -@@ -8482,6 +8513,7 @@ class Parser(Tokenizer): - """ - DistinguishableType : PrimitiveType Null - | ARRAYBUFFER Null -+ | READABLESTREAM Null - | OBJECT Null - | UNDEFINED Null - """ -@@ -8489,6 +8521,8 @@ class Parser(Tokenizer): - type = BuiltinTypes[IDLBuiltinType.Types.object] - elif p[1] == "ArrayBuffer": - type = BuiltinTypes[IDLBuiltinType.Types.ArrayBuffer] -+ elif p[1] == "ReadableStream": -+ type = BuiltinTypes[IDLBuiltinType.Types.ReadableStream] - elif p[1] == "undefined": - type = BuiltinTypes[IDLBuiltinType.Types.undefined] - else: -@@ -8827,8 +8861,8 @@ class Parser(Tokenizer): - [Location(self.lexer, p.lineno, p.lexpos, self._filename)], - ) - -- def __init__(self, outputdir="", lexer=None): -- Tokenizer.__init__(self, outputdir, lexer) -+ def __init__(self, outputdir="", lexer=None, use_builtin_readable_stream=True): -+ Tokenizer.__init__(self, outputdir, lexer, use_builtin_readable_stream) - - logger = SqueakyCleanLogger() - try: diff --git a/third_party/WebIDL/update.sh b/third_party/WebIDL/update.sh index 1572c3752aa..6db5de807f2 100755 --- a/third_party/WebIDL/update.sh +++ b/third_party/WebIDL/update.sh @@ -4,7 +4,6 @@ patch < debug.patch patch < callback-location.patch patch < union-typedef.patch patch < inline.patch -patch < readable-stream.patch patch < like-as-iterable.patch patch < builtin-array.patch |