/* 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 script_runtime::CommonScriptMsg; /// 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), } pub struct SimpleWorkerErrorHandler { pub addr: Trusted, } impl SimpleWorkerErrorHandler { pub fn new(addr: Trusted) -> SimpleWorkerErrorHandler { SimpleWorkerErrorHandler { addr: addr } } } pub struct WorkerErrorHandler { pub addr: Trusted, pub msg: DOMString, pub file_name: DOMString, pub line_num: u32, pub col_num: u32, } impl WorkerErrorHandler { pub fn new(addr: Trusted, msg: DOMString, file_name: DOMString, line_num: u32, col_num: u32) -> WorkerErrorHandler { 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 {}