mirror of
https://github.com/servo/servo.git
synced 2025-08-04 05:00:08 +01:00
Auto merge of #26607 - nosark:master, r=gterzian
Use ExtendableMessageEvent for messageerror in service workers #25241 <!-- Please describe your changes on the following line: --> added function dispatch_error to the ExtendableMessageEvent implmentation and replaced the MessageEvent dispatch error call with the ExtendableMessageEvent dispatch error call in serviceworkerglobalscope.rs --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [X] These changes fix #25241 (GitHub issue number if applicable) <!-- Either: --> - [x] There are tests for these changes OR - [x] These changes do not require tests because ___ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This commit is contained in:
commit
9b6b7935e6
3 changed files with 27 additions and 8 deletions
|
@ -28,11 +28,16 @@ use servo_atoms::Atom;
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
pub struct ExtendableMessageEvent {
|
pub struct ExtendableMessageEvent {
|
||||||
|
/// https://w3c.github.io/ServiceWorker/#extendableevent
|
||||||
event: ExtendableEvent,
|
event: ExtendableEvent,
|
||||||
|
/// https://w3c.github.io/ServiceWorker/#dom-extendablemessageevent-data
|
||||||
#[ignore_malloc_size_of = "mozjs"]
|
#[ignore_malloc_size_of = "mozjs"]
|
||||||
data: Heap<JSVal>,
|
data: Heap<JSVal>,
|
||||||
|
/// <https://w3c.github.io/ServiceWorker/#extendablemessage-event-origin>
|
||||||
origin: DOMString,
|
origin: DOMString,
|
||||||
|
/// https://w3c.github.io/ServiceWorker/#dom-extendablemessageevent-lasteventid
|
||||||
lastEventId: DOMString,
|
lastEventId: DOMString,
|
||||||
|
/// https://w3c.github.io/ServiceWorker/#dom-extendablemessageevent-ports
|
||||||
ports: Vec<Dom<MessagePort>>,
|
ports: Vec<Dom<MessagePort>>,
|
||||||
#[ignore_malloc_size_of = "mozjs"]
|
#[ignore_malloc_size_of = "mozjs"]
|
||||||
frozen_ports: DomRefCell<Option<Heap<JSVal>>>,
|
frozen_ports: DomRefCell<Option<Heap<JSVal>>>,
|
||||||
|
@ -95,8 +100,8 @@ impl ExtendableMessageEvent {
|
||||||
init.parent.parent.bubbles,
|
init.parent.parent.bubbles,
|
||||||
init.parent.parent.cancelable,
|
init.parent.parent.cancelable,
|
||||||
init.data.handle(),
|
init.data.handle(),
|
||||||
init.origin.clone().unwrap(),
|
init.origin.clone(),
|
||||||
init.lastEventId.clone().unwrap(),
|
init.lastEventId.clone(),
|
||||||
vec![],
|
vec![],
|
||||||
);
|
);
|
||||||
Ok(ev)
|
Ok(ev)
|
||||||
|
@ -123,6 +128,21 @@ impl ExtendableMessageEvent {
|
||||||
);
|
);
|
||||||
Extendablemessageevent.upcast::<Event>().fire(target);
|
Extendablemessageevent.upcast::<Event>().fire(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn dispatch_error(target: &EventTarget, scope: &GlobalScope) {
|
||||||
|
let init = ExtendableMessageEventBinding::ExtendableMessageEventInit::empty();
|
||||||
|
let ExtendableMsgEvent = ExtendableMessageEvent::new(
|
||||||
|
scope,
|
||||||
|
atom!("messageerror"),
|
||||||
|
init.parent.parent.bubbles,
|
||||||
|
init.parent.parent.cancelable,
|
||||||
|
init.data.handle(),
|
||||||
|
init.origin.clone(),
|
||||||
|
init.lastEventId.clone(),
|
||||||
|
init.ports.clone(),
|
||||||
|
);
|
||||||
|
ExtendableMsgEvent.upcast::<Event>().fire(target);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ExtendableMessageEventMethods for ExtendableMessageEvent {
|
impl ExtendableMessageEventMethods for ExtendableMessageEvent {
|
||||||
|
|
|
@ -19,7 +19,6 @@ use crate::dom::extendableevent::ExtendableEvent;
|
||||||
use crate::dom::extendablemessageevent::ExtendableMessageEvent;
|
use crate::dom::extendablemessageevent::ExtendableMessageEvent;
|
||||||
use crate::dom::globalscope::GlobalScope;
|
use crate::dom::globalscope::GlobalScope;
|
||||||
use crate::dom::identityhub::Identities;
|
use crate::dom::identityhub::Identities;
|
||||||
use crate::dom::messageevent::MessageEvent;
|
|
||||||
use crate::dom::worker::TrustedWorkerAddress;
|
use crate::dom::worker::TrustedWorkerAddress;
|
||||||
use crate::dom::workerglobalscope::WorkerGlobalScope;
|
use crate::dom::workerglobalscope::WorkerGlobalScope;
|
||||||
use crate::fetch::load_whole_resource;
|
use crate::fetch::load_whole_resource;
|
||||||
|
@ -446,7 +445,7 @@ impl ServiceWorkerGlobalScope {
|
||||||
ports,
|
ports,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
MessageEvent::dispatch_error(target, scope.upcast());
|
ExtendableMessageEvent::dispatch_error(target, scope.upcast());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
CommonWorker(WorkerScriptMsg::Common(msg)) => {
|
CommonWorker(WorkerScriptMsg::Common(msg)) => {
|
||||||
|
|
|
@ -16,9 +16,9 @@ interface ExtendableMessageEvent : ExtendableEvent {
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary ExtendableMessageEventInit : ExtendableEventInit {
|
dictionary ExtendableMessageEventInit : ExtendableEventInit {
|
||||||
any data;
|
any data = null;
|
||||||
DOMString origin;
|
DOMString origin = "";
|
||||||
DOMString lastEventId;
|
DOMString lastEventId = "";
|
||||||
// (Client or ServiceWorker /*or MessagePort*/)? source;
|
// (Client or ServiceWorker /*or MessagePort*/)? source;
|
||||||
// sequence<MessagePort>? ports;
|
sequence<MessagePort> ports = [];
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue