Skip to content

Commit 801e2ea

Browse files
committed
Add Reader's WebIDL files
1 parent eb54a96 commit 801e2ea

File tree

6 files changed

+199
-3
lines changed

6 files changed

+199
-3
lines changed

components/script/dom/bindings/codegen/CodegenRust.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -949,7 +949,7 @@ def wrapObjectTemplate(templateBody, nullValue, isDefinitelyObject, type,
949949

950950
if failureCode is None:
951951
unwrapFailureCode = '''throw_type_error(*cx, "This object is not \
952-
an instance of ReadableStream.");\n'''
952+
an instance of ReadableStream.");\nreturn false;\n'''
953953
else:
954954
unwrapFailureCode = failureCode
955955

@@ -958,7 +958,7 @@ def wrapObjectTemplate(templateBody, nullValue, isDefinitelyObject, type,
958958
{
959959
use crate::realms::{AlreadyInRealm, InRealm};
960960
let in_realm_proof = AlreadyInRealm::assert_for_cx(cx);
961-
match ReadableStream::from_js(cx, $${val}.get().to_object(), InRealm::Already(&in_realm_proof)) {
961+
match dom::readablestream::ReadableStream::from_js(cx, $${val}.get().to_object(), InRealm::Already(&in_realm_proof)) {
962962
Ok(val) => val,
963963
Err(()) => {
964964
$*{failureCode}
@@ -973,7 +973,7 @@ def wrapObjectTemplate(templateBody, nullValue, isDefinitelyObject, type,
973973
templateBody = wrapObjectTemplate(templateBody, "None",
974974
isDefinitelyObject, type, failureCode)
975975

976-
declType = CGGeneric("DomRoot<ReadableStream>")
976+
declType = CGGeneric("DomRoot<dom::readablestream::ReadableStream>")
977977

978978
return handleOptional(templateBody, declType,
979979
handleDefault("None"))

components/script/dom/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,8 +509,10 @@ pub mod range;
509509
pub mod raredata;
510510
pub mod readablebytestreamcontroller;
511511
pub mod readablestream;
512+
pub mod readablestreambyobreader;
512513
pub mod readablestreambyobrequest;
513514
pub mod readablestreamdefaultcontroller;
515+
pub mod readablestreamdefaultreader;
514516
pub mod request;
515517
pub mod resizeobserver;
516518
pub mod resizeobserverentry;
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/* This Source Code Form is subject to the terms of the Mozilla Public
2+
* License, v. 2.0. If a copy of the MPL was not distributed with this
3+
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4+
5+
use std::rc::Rc;
6+
7+
use dom_struct::dom_struct;
8+
use js::rust::{HandleObject as SafeHandleObject, HandleValue as SafeHandleValue};
9+
10+
use crate::dom::bindings::codegen::Bindings::ReadableStreamBYOBReaderBinding::ReadableStreamBYOBReaderMethods;
11+
use crate::dom::bindings::error::Error;
12+
use crate::dom::bindings::import::module::Fallible;
13+
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector};
14+
use crate::dom::bindings::root::DomRoot;
15+
use crate::dom::globalscope::GlobalScope;
16+
use crate::dom::promise::Promise;
17+
use crate::dom::readablestream::ReadableStream;
18+
use crate::script_runtime::JSContext as SafeJSContext;
19+
20+
#[dom_struct]
21+
pub struct ReadableStreamBYOBReader {
22+
reflector_: Reflector,
23+
}
24+
25+
impl ReadableStreamBYOBReader {
26+
#[allow(non_snake_case)]
27+
pub fn Constructor(
28+
_global: &GlobalScope,
29+
_proto: Option<SafeHandleObject>,
30+
_stream: DomRoot<ReadableStream>,
31+
) -> Fallible<DomRoot<Self>> {
32+
// TODO
33+
Err(Error::NotFound)
34+
}
35+
36+
fn new_inherited() -> ReadableStreamBYOBReader {
37+
ReadableStreamBYOBReader {
38+
reflector_: Reflector::new(),
39+
}
40+
}
41+
42+
fn new(global: &GlobalScope) -> DomRoot<ReadableStreamBYOBReader> {
43+
reflect_dom_object(Box::new(ReadableStreamBYOBReader::new_inherited()), global)
44+
}
45+
}
46+
47+
impl ReadableStreamBYOBReaderMethods for ReadableStreamBYOBReader {
48+
fn Read(
49+
&self,
50+
_view: js::gc::CustomAutoRooterGuard<js::typedarray::ArrayBufferView>,
51+
) -> Rc<Promise> {
52+
// TODO
53+
Promise::new(&self.reflector_.global())
54+
}
55+
56+
fn ReleaseLock(&self) -> Fallible<()> {
57+
// TODO
58+
Err(Error::NotFound)
59+
}
60+
61+
fn Closed(&self) -> Rc<Promise> {
62+
// TODO
63+
Promise::new(&self.reflector_.global())
64+
}
65+
66+
fn Cancel(&self, _cx: SafeJSContext, _reason: SafeHandleValue) -> Rc<Promise> {
67+
// TODO
68+
Promise::new(&self.reflector_.global())
69+
}
70+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/* This Source Code Form is subject to the terms of the Mozilla Public
2+
* License, v. 2.0. If a copy of the MPL was not distributed with this
3+
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4+
5+
use std::rc::Rc;
6+
7+
use dom_struct::dom_struct;
8+
use js::rust::{HandleObject as SafeHandleObject, HandleValue as SafeHandleValue};
9+
10+
use crate::dom::bindings::codegen::Bindings::ReadableStreamDefaultReaderBinding::ReadableStreamDefaultReaderMethods;
11+
use crate::dom::bindings::error::Error;
12+
use crate::dom::bindings::import::module::Fallible;
13+
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector};
14+
use crate::dom::bindings::root::DomRoot;
15+
use crate::dom::globalscope::GlobalScope;
16+
use crate::dom::promise::Promise;
17+
use crate::dom::readablestream::ReadableStream;
18+
use crate::script_runtime::JSContext as SafeJSContext;
19+
20+
#[dom_struct]
21+
pub struct ReadableStreamDefaultReader {
22+
reflector_: Reflector,
23+
}
24+
25+
impl ReadableStreamDefaultReader {
26+
#[allow(non_snake_case)]
27+
pub fn Constructor(
28+
_global: &GlobalScope,
29+
_proto: Option<SafeHandleObject>,
30+
_stream: DomRoot<ReadableStream>,
31+
) -> Fallible<DomRoot<Self>> {
32+
// TODO
33+
Err(Error::NotFound)
34+
}
35+
36+
fn new_inherited() -> ReadableStreamDefaultReader {
37+
ReadableStreamDefaultReader {
38+
reflector_: Reflector::new(),
39+
}
40+
}
41+
42+
fn new(global: &GlobalScope) -> DomRoot<ReadableStreamDefaultReader> {
43+
reflect_dom_object(
44+
Box::new(ReadableStreamDefaultReader::new_inherited()),
45+
global,
46+
)
47+
}
48+
}
49+
50+
impl ReadableStreamDefaultReaderMethods for ReadableStreamDefaultReader {
51+
fn Read(&self) -> Rc<Promise> {
52+
// TODO
53+
Promise::new(&self.reflector_.global())
54+
}
55+
56+
fn ReleaseLock(&self) -> Fallible<()> {
57+
// TODO
58+
Err(Error::NotFound)
59+
}
60+
61+
fn Closed(&self) -> Rc<Promise> {
62+
// TODO
63+
Promise::new(&self.reflector_.global())
64+
}
65+
66+
fn Cancel(&self, _cx: SafeJSContext, _reason: SafeHandleValue) -> Rc<Promise> {
67+
// TODO
68+
Promise::new(&self.reflector_.global())
69+
}
70+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/* This Source Code Form is subject to the terms of the Mozilla Public
2+
* License, v. 2.0. If a copy of the MPL was not distributed with this
3+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4+
5+
// https://streams.spec.whatwg.org/#byob-reader-class-definition
6+
7+
[Exposed=*]
8+
interface ReadableStreamBYOBReader {
9+
[Throws]
10+
constructor(ReadableStream stream);
11+
12+
[NewObject]
13+
Promise<ReadableStreamReadResult> read(ArrayBufferView view);
14+
15+
[Throws]
16+
undefined releaseLock();
17+
};
18+
ReadableStreamBYOBReader includes ReadableStreamGenericReader;
19+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/* This Source Code Form is subject to the terms of the Mozilla Public
2+
* License, v. 2.0. If a copy of the MPL was not distributed with this
3+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4+
5+
// https://streams.spec.whatwg.org/#generic-reader-mixin-definition
6+
// https://streams.spec.whatwg.org/#default-reader-class-definition
7+
8+
typedef (ReadableStreamDefaultReader or ReadableStreamBYOBReader) ReadableStreamReader;
9+
10+
interface mixin ReadableStreamGenericReader {
11+
readonly attribute Promise<undefined> closed;
12+
13+
[NewObject]
14+
Promise<undefined> cancel(optional any reason);
15+
};
16+
17+
[Exposed=*]
18+
interface ReadableStreamDefaultReader {
19+
[Throws]
20+
constructor(ReadableStream stream);
21+
22+
[NewObject]
23+
Promise<ReadableStreamReadResult> read();
24+
25+
[Throws]
26+
undefined releaseLock();
27+
};
28+
ReadableStreamDefaultReader includes ReadableStreamGenericReader;
29+
30+
31+
dictionary ReadableStreamReadResult {
32+
any value;
33+
boolean done;
34+
};
35+

0 commit comments

Comments
 (0)