mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
script: Include constructors and static methods in generated DOM traits (#33665)
* Add all constructors, special operations, and static methods to generated DOM interface traits. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * Move all constructors and static methods defined in bare impl blocks inside FooMethods trait impls. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * Add missing doc links. Signed-off-by: Josh Matthews <josh@joshmatthews.net> --------- Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
946fa9cdee
commit
7d931e673a
133 changed files with 1479 additions and 1438 deletions
|
@ -144,9 +144,56 @@ impl WebSocket {
|
|||
)
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-websocket-send
|
||||
fn send_impl(&self, data_byte_len: u64) -> Fallible<bool> {
|
||||
let return_after_buffer = match self.ready_state.get() {
|
||||
WebSocketRequestState::Connecting => {
|
||||
return Err(Error::InvalidState);
|
||||
},
|
||||
WebSocketRequestState::Open => false,
|
||||
WebSocketRequestState::Closing | WebSocketRequestState::Closed => true,
|
||||
};
|
||||
|
||||
let address = Trusted::new(self);
|
||||
|
||||
match data_byte_len.checked_add(self.buffered_amount.get()) {
|
||||
None => panic!(),
|
||||
Some(new_amount) => self.buffered_amount.set(new_amount),
|
||||
};
|
||||
|
||||
if return_after_buffer {
|
||||
return Ok(false);
|
||||
}
|
||||
|
||||
if !self.clearing_buffer.get() && self.ready_state.get() == WebSocketRequestState::Open {
|
||||
self.clearing_buffer.set(true);
|
||||
|
||||
let task = Box::new(BufferedAmountTask { address });
|
||||
|
||||
let pipeline_id = self.global().pipeline_id();
|
||||
self.global()
|
||||
.script_chan()
|
||||
// TODO: Use a dedicated `websocket-task-source` task source instead.
|
||||
.send(CommonScriptMsg::Task(
|
||||
WebSocketEvent,
|
||||
task,
|
||||
Some(pipeline_id),
|
||||
WebsocketTaskSource::NAME,
|
||||
))
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
Ok(true)
|
||||
}
|
||||
|
||||
pub fn origin(&self) -> ImmutableOrigin {
|
||||
self.url.origin()
|
||||
}
|
||||
}
|
||||
|
||||
impl WebSocketMethods for WebSocket {
|
||||
/// <https://html.spec.whatwg.org/multipage/#dom-websocket>
|
||||
#[allow(non_snake_case)]
|
||||
pub fn Constructor(
|
||||
fn Constructor(
|
||||
global: &GlobalScope,
|
||||
proto: Option<HandleObject>,
|
||||
can_gc: CanGc,
|
||||
|
@ -257,54 +304,6 @@ impl WebSocket {
|
|||
Ok(ws)
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-websocket-send
|
||||
fn send_impl(&self, data_byte_len: u64) -> Fallible<bool> {
|
||||
let return_after_buffer = match self.ready_state.get() {
|
||||
WebSocketRequestState::Connecting => {
|
||||
return Err(Error::InvalidState);
|
||||
},
|
||||
WebSocketRequestState::Open => false,
|
||||
WebSocketRequestState::Closing | WebSocketRequestState::Closed => true,
|
||||
};
|
||||
|
||||
let address = Trusted::new(self);
|
||||
|
||||
match data_byte_len.checked_add(self.buffered_amount.get()) {
|
||||
None => panic!(),
|
||||
Some(new_amount) => self.buffered_amount.set(new_amount),
|
||||
};
|
||||
|
||||
if return_after_buffer {
|
||||
return Ok(false);
|
||||
}
|
||||
|
||||
if !self.clearing_buffer.get() && self.ready_state.get() == WebSocketRequestState::Open {
|
||||
self.clearing_buffer.set(true);
|
||||
|
||||
let task = Box::new(BufferedAmountTask { address });
|
||||
|
||||
let pipeline_id = self.global().pipeline_id();
|
||||
self.global()
|
||||
.script_chan()
|
||||
// TODO: Use a dedicated `websocket-task-source` task source instead.
|
||||
.send(CommonScriptMsg::Task(
|
||||
WebSocketEvent,
|
||||
task,
|
||||
Some(pipeline_id),
|
||||
WebsocketTaskSource::NAME,
|
||||
))
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
Ok(true)
|
||||
}
|
||||
|
||||
pub fn origin(&self) -> ImmutableOrigin {
|
||||
self.url.origin()
|
||||
}
|
||||
}
|
||||
|
||||
impl WebSocketMethods for WebSocket {
|
||||
// https://html.spec.whatwg.org/multipage/#handler-websocket-onopen
|
||||
event_handler!(open, GetOnopen, SetOnopen);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue