mirror of
https://github.com/servo/servo.git
synced 2025-06-08 08:33:26 +00:00
104 lines
2.7 KiB
Rust
104 lines
2.7 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
use dom::bindings::refcounted::Trusted;
|
|
use dom::bindings::reflector::Reflectable;
|
|
use dom::bindings::str::DOMString;
|
|
use dom::bindings::structuredclone::StructuredCloneData;
|
|
use js::jsapi::{JSRuntime, JS_RequestInterruptCallback};
|
|
use js::rust::Runtime;
|
|
use msg::constellation_msg::{PipelineId, ReferrerPolicy};
|
|
use net_traits::{LoadOrigin, RequestSource};
|
|
use script_runtime::CommonScriptMsg;
|
|
use url::Url;
|
|
|
|
/// Messages used to control the worker event loops
|
|
pub enum WorkerScriptMsg {
|
|
/// Common variants associated with the script messages
|
|
Common(CommonScriptMsg),
|
|
/// Message sent through Worker.postMessage
|
|
DOMMessage(StructuredCloneData),
|
|
}
|
|
|
|
#[derive(Clone)]
|
|
pub struct WorkerScriptLoadOrigin {
|
|
pub referrer_url: Option<Url>,
|
|
pub referrer_policy: Option<ReferrerPolicy>,
|
|
pub request_source: RequestSource,
|
|
pub pipeline_id: Option<PipelineId>
|
|
}
|
|
|
|
impl LoadOrigin for WorkerScriptLoadOrigin {
|
|
fn referrer_url(&self) -> Option<Url> {
|
|
self.referrer_url.clone()
|
|
}
|
|
fn referrer_policy(&self) -> Option<ReferrerPolicy> {
|
|
self.referrer_policy.clone()
|
|
}
|
|
fn request_source(&self) -> RequestSource {
|
|
self.request_source.clone()
|
|
}
|
|
fn pipeline_id(&self) -> Option<PipelineId> {
|
|
self.pipeline_id.clone()
|
|
}
|
|
}
|
|
|
|
pub struct SimpleWorkerErrorHandler<T: Reflectable> {
|
|
pub addr: Trusted<T>,
|
|
}
|
|
|
|
impl<T: Reflectable> SimpleWorkerErrorHandler<T> {
|
|
pub fn new(addr: Trusted<T>) -> SimpleWorkerErrorHandler<T> {
|
|
SimpleWorkerErrorHandler {
|
|
addr: addr
|
|
}
|
|
}
|
|
}
|
|
|
|
pub struct WorkerErrorHandler<T: Reflectable> {
|
|
pub addr: Trusted<T>,
|
|
pub msg: DOMString,
|
|
pub file_name: DOMString,
|
|
pub line_num: u32,
|
|
pub col_num: u32,
|
|
}
|
|
|
|
impl<T: Reflectable> WorkerErrorHandler<T> {
|
|
pub fn new(addr: Trusted<T>, msg: DOMString, file_name: DOMString, line_num: u32, col_num: u32)
|
|
-> WorkerErrorHandler<T> {
|
|
WorkerErrorHandler {
|
|
addr: addr,
|
|
msg: msg,
|
|
file_name: file_name,
|
|
line_num: line_num,
|
|
col_num: col_num,
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Copy, Clone)]
|
|
pub struct SharedRt {
|
|
pub rt: *mut JSRuntime
|
|
}
|
|
|
|
impl SharedRt {
|
|
pub fn new(rt: &Runtime) -> SharedRt {
|
|
SharedRt {
|
|
rt: rt.rt()
|
|
}
|
|
}
|
|
|
|
#[allow(unsafe_code)]
|
|
pub fn request_interrupt(&self) {
|
|
unsafe {
|
|
JS_RequestInterruptCallback(self.rt);
|
|
}
|
|
}
|
|
|
|
pub fn rt(&self) -> *mut JSRuntime {
|
|
self.rt
|
|
}
|
|
}
|
|
#[allow(unsafe_code)]
|
|
unsafe impl Send for SharedRt {}
|