mirror of
https://github.com/servo/servo.git
synced 2025-08-07 06:25:32 +01:00
continue messageport, transferable, postmessage options
This commit is contained in:
parent
c3b17c1201
commit
2f8932a6a1
100 changed files with 2456 additions and 1171 deletions
|
@ -10,10 +10,12 @@ use crate::dom::bindings::reflector::reflect_dom_object;
|
|||
use crate::dom::bindings::root::DomRoot;
|
||||
use crate::dom::bindings::str::DOMString;
|
||||
use crate::dom::bindings::trace::RootedTraceableBox;
|
||||
use crate::dom::bindings::utils::message_ports_to_frozen_array;
|
||||
use crate::dom::event::Event;
|
||||
use crate::dom::eventtarget::EventTarget;
|
||||
use crate::dom::extendableevent::ExtendableEvent;
|
||||
use crate::dom::globalscope::GlobalScope;
|
||||
use crate::dom::messageport::MessagePort;
|
||||
use crate::dom::serviceworkerglobalscope::ServiceWorkerGlobalScope;
|
||||
use crate::script_runtime::JSContext;
|
||||
use dom_struct::dom_struct;
|
||||
|
@ -29,6 +31,7 @@ pub struct ExtendableMessageEvent {
|
|||
data: Heap<JSVal>,
|
||||
origin: DOMString,
|
||||
lastEventId: DOMString,
|
||||
ports: Vec<DomRoot<MessagePort>>,
|
||||
}
|
||||
|
||||
impl ExtendableMessageEvent {
|
||||
|
@ -40,12 +43,14 @@ impl ExtendableMessageEvent {
|
|||
data: HandleValue,
|
||||
origin: DOMString,
|
||||
lastEventId: DOMString,
|
||||
ports: Vec<DomRoot<MessagePort>>,
|
||||
) -> DomRoot<ExtendableMessageEvent> {
|
||||
let ev = Box::new(ExtendableMessageEvent {
|
||||
event: ExtendableEvent::new_inherited(),
|
||||
data: Heap::default(),
|
||||
origin: origin,
|
||||
lastEventId: lastEventId,
|
||||
origin,
|
||||
lastEventId,
|
||||
ports,
|
||||
});
|
||||
let ev = reflect_dom_object(ev, global, ExtendableMessageEventBinding::Wrap);
|
||||
{
|
||||
|
@ -71,13 +76,19 @@ impl ExtendableMessageEvent {
|
|||
init.data.handle(),
|
||||
init.origin.clone().unwrap(),
|
||||
init.lastEventId.clone().unwrap(),
|
||||
vec![],
|
||||
);
|
||||
Ok(ev)
|
||||
}
|
||||
}
|
||||
|
||||
impl ExtendableMessageEvent {
|
||||
pub fn dispatch_jsval(target: &EventTarget, scope: &GlobalScope, message: HandleValue) {
|
||||
pub fn dispatch_jsval(
|
||||
target: &EventTarget,
|
||||
scope: &GlobalScope,
|
||||
message: HandleValue,
|
||||
ports: Vec<DomRoot<MessagePort>>,
|
||||
) {
|
||||
let Extendablemessageevent = ExtendableMessageEvent::new(
|
||||
scope,
|
||||
atom!("message"),
|
||||
|
@ -86,6 +97,7 @@ impl ExtendableMessageEvent {
|
|||
message,
|
||||
DOMString::new(),
|
||||
DOMString::new(),
|
||||
ports,
|
||||
);
|
||||
Extendablemessageevent.upcast::<Event>().fire(target);
|
||||
}
|
||||
|
@ -111,4 +123,9 @@ impl ExtendableMessageEventMethods for ExtendableMessageEvent {
|
|||
fn IsTrusted(&self) -> bool {
|
||||
self.event.IsTrusted()
|
||||
}
|
||||
|
||||
/// https://w3c.github.io/ServiceWorker/#extendablemessage-event-ports
|
||||
fn Ports(&self, cx: JSContext) -> JSVal {
|
||||
message_ports_to_frozen_array(self.ports.as_slice(), cx)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue