aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py38
-rw-r--r--components/script/dom/bindings/codegen/run.py2
-rw-r--r--third_party/WebIDL/WebIDL.py44
-rw-r--r--third_party/WebIDL/readable-stream.patch162
-rwxr-xr-xthird_party/WebIDL/update.sh1
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