mirror of
https://github.com/servo/servo.git
synced 2025-08-01 19:50:30 +01:00
Remove global field from Worker
This commit is contained in:
parent
fbe9107614
commit
9b79f2f5a3
1 changed files with 7 additions and 10 deletions
|
@ -7,7 +7,7 @@ use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
|
||||||
use dom::bindings::codegen::Bindings::WorkerBinding;
|
use dom::bindings::codegen::Bindings::WorkerBinding;
|
||||||
use dom::bindings::codegen::Bindings::WorkerBinding::WorkerMethods;
|
use dom::bindings::codegen::Bindings::WorkerBinding::WorkerMethods;
|
||||||
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
use dom::bindings::error::{Error, ErrorResult, Fallible};
|
||||||
use dom::bindings::global::{GlobalField, GlobalRef};
|
use dom::bindings::global::{GlobalRef, global_root_from_reflector};
|
||||||
use dom::bindings::inheritance::Castable;
|
use dom::bindings::inheritance::Castable;
|
||||||
use dom::bindings::js::Root;
|
use dom::bindings::js::Root;
|
||||||
use dom::bindings::refcounted::Trusted;
|
use dom::bindings::refcounted::Trusted;
|
||||||
|
@ -34,7 +34,6 @@ pub type TrustedWorkerAddress = Trusted<Worker>;
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
pub struct Worker {
|
pub struct Worker {
|
||||||
eventtarget: EventTarget,
|
eventtarget: EventTarget,
|
||||||
global: GlobalField,
|
|
||||||
#[ignore_heap_size_of = "Defined in std"]
|
#[ignore_heap_size_of = "Defined in std"]
|
||||||
/// Sender to the Receiver associated with the DedicatedWorkerGlobalScope
|
/// Sender to the Receiver associated with the DedicatedWorkerGlobalScope
|
||||||
/// this Worker created.
|
/// this Worker created.
|
||||||
|
@ -42,12 +41,10 @@ pub struct Worker {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Worker {
|
impl Worker {
|
||||||
fn new_inherited(global: GlobalRef,
|
fn new_inherited(sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>)
|
||||||
sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>)
|
|
||||||
-> Worker {
|
-> Worker {
|
||||||
Worker {
|
Worker {
|
||||||
eventtarget: EventTarget::new_inherited(),
|
eventtarget: EventTarget::new_inherited(),
|
||||||
global: GlobalField::from_rooted(&global),
|
|
||||||
sender: sender,
|
sender: sender,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,7 +52,7 @@ impl Worker {
|
||||||
pub fn new(global: GlobalRef,
|
pub fn new(global: GlobalRef,
|
||||||
sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>)
|
sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>)
|
||||||
-> Root<Worker> {
|
-> Root<Worker> {
|
||||||
reflect_dom_object(box Worker::new_inherited(global, sender),
|
reflect_dom_object(box Worker::new_inherited(sender),
|
||||||
global,
|
global,
|
||||||
WorkerBinding::Wrap)
|
WorkerBinding::Wrap)
|
||||||
}
|
}
|
||||||
|
@ -114,7 +111,7 @@ impl Worker {
|
||||||
data: StructuredCloneData) {
|
data: StructuredCloneData) {
|
||||||
let worker = address.root();
|
let worker = address.root();
|
||||||
|
|
||||||
let global = worker.r().global.root();
|
let global = global_root_from_reflector(worker.r());
|
||||||
let target = worker.upcast();
|
let target = worker.upcast();
|
||||||
let _ar = JSAutoRequest::new(global.r().get_cx());
|
let _ar = JSAutoRequest::new(global.r().get_cx());
|
||||||
let _ac = JSAutoCompartment::new(global.r().get_cx(), target.reflector().get_jsobject().get());
|
let _ac = JSAutoCompartment::new(global.r().get_cx(), target.reflector().get_jsobject().get());
|
||||||
|
@ -125,14 +122,14 @@ impl Worker {
|
||||||
|
|
||||||
pub fn dispatch_simple_error(address: TrustedWorkerAddress) {
|
pub fn dispatch_simple_error(address: TrustedWorkerAddress) {
|
||||||
let worker = address.root();
|
let worker = address.root();
|
||||||
let global = worker.r().global.root();
|
let global = global_root_from_reflector(worker.r());
|
||||||
worker.upcast().fire_simple_event("error", global.r());
|
worker.upcast().fire_simple_event("error", global.r());
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handle_error_message(address: TrustedWorkerAddress, message: DOMString,
|
pub fn handle_error_message(address: TrustedWorkerAddress, message: DOMString,
|
||||||
filename: DOMString, lineno: u32, colno: u32) {
|
filename: DOMString, lineno: u32, colno: u32) {
|
||||||
let worker = address.root();
|
let worker = address.root();
|
||||||
let global = worker.r().global.root();
|
let global = global_root_from_reflector(worker.r());
|
||||||
let error = RootedValue::new(global.r().get_cx(), UndefinedValue());
|
let error = RootedValue::new(global.r().get_cx(), UndefinedValue());
|
||||||
let errorevent = ErrorEvent::new(global.r(), atom!("error"),
|
let errorevent = ErrorEvent::new(global.r(), atom!("error"),
|
||||||
EventBubbles::Bubbles, EventCancelable::Cancelable,
|
EventBubbles::Bubbles, EventCancelable::Cancelable,
|
||||||
|
@ -145,7 +142,7 @@ impl WorkerMethods for Worker {
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-dedicatedworkerglobalscope-postmessage
|
// https://html.spec.whatwg.org/multipage/#dom-dedicatedworkerglobalscope-postmessage
|
||||||
fn PostMessage(&self, cx: *mut JSContext, message: HandleValue) -> ErrorResult {
|
fn PostMessage(&self, cx: *mut JSContext, message: HandleValue) -> ErrorResult {
|
||||||
let data = try!(StructuredCloneData::write(cx, message));
|
let data = try!(StructuredCloneData::write(cx, message));
|
||||||
let address = Trusted::new(self, self.global.root().r().dom_manipulation_thread_source());
|
let address = Trusted::new(self, global_root_from_reflector(self).r().dom_manipulation_thread_source());
|
||||||
self.sender.send((address, WorkerScriptMsg::DOMMessage(data))).unwrap();
|
self.sender.send((address, WorkerScriptMsg::DOMMessage(data))).unwrap();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue