Use Runtime in WorkerGlobalScope and DedicatedWorkerGlobalScope.

This commit is contained in:
Ms2ger 2015-05-10 16:33:47 +02:00
parent 4ed94629a2
commit 0f495afda6
2 changed files with 23 additions and 24 deletions

View file

@ -35,9 +35,8 @@ use util::task_state::{SCRIPT, IN_WORKER};
use js::jsapi::JSContext; use js::jsapi::JSContext;
use js::jsval::JSVal; use js::jsval::JSVal;
use js::rust::Cx; use js::rust::Runtime;
use std::rc::Rc;
use std::sync::mpsc::{Sender, Receiver, channel}; use std::sync::mpsc::{Sender, Receiver, channel};
use url::Url; use url::Url;
@ -106,7 +105,7 @@ impl DedicatedWorkerGlobalScope {
fn new_inherited(worker_url: Url, fn new_inherited(worker_url: Url,
id: PipelineId, id: PipelineId,
devtools_chan: Option<DevtoolsControlChan>, devtools_chan: Option<DevtoolsControlChan>,
cx: Rc<Cx>, runtime: Runtime,
resource_task: ResourceTask, resource_task: ResourceTask,
parent_sender: Box<ScriptChan+Send>, parent_sender: Box<ScriptChan+Send>,
own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>, own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>,
@ -114,7 +113,8 @@ impl DedicatedWorkerGlobalScope {
-> DedicatedWorkerGlobalScope { -> DedicatedWorkerGlobalScope {
DedicatedWorkerGlobalScope { DedicatedWorkerGlobalScope {
workerglobalscope: WorkerGlobalScope::new_inherited( workerglobalscope: WorkerGlobalScope::new_inherited(
WorkerGlobalScopeTypeId::DedicatedGlobalScope, worker_url, cx, resource_task, devtools_chan), WorkerGlobalScopeTypeId::DedicatedGlobalScope, worker_url,
runtime, resource_task, devtools_chan),
id: id, id: id,
receiver: receiver, receiver: receiver,
own_sender: own_sender, own_sender: own_sender,
@ -126,16 +126,16 @@ impl DedicatedWorkerGlobalScope {
pub fn new(worker_url: Url, pub fn new(worker_url: Url,
id: PipelineId, id: PipelineId,
devtools_chan: Option<DevtoolsControlChan>, devtools_chan: Option<DevtoolsControlChan>,
cx: Rc<Cx>, runtime: Runtime,
resource_task: ResourceTask, resource_task: ResourceTask,
parent_sender: Box<ScriptChan+Send>, parent_sender: Box<ScriptChan+Send>,
own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>, own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>,
receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>) receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>)
-> Temporary<DedicatedWorkerGlobalScope> { -> Temporary<DedicatedWorkerGlobalScope> {
let scope = box DedicatedWorkerGlobalScope::new_inherited( let scope = box DedicatedWorkerGlobalScope::new_inherited(
worker_url, id, devtools_chan, cx.clone(), resource_task, parent_sender, worker_url, id, devtools_chan, runtime.clone(), resource_task,
own_sender, receiver); parent_sender, own_sender, receiver);
DedicatedWorkerGlobalScopeBinding::Wrap(cx.ptr, scope) DedicatedWorkerGlobalScopeBinding::Wrap(runtime.cx(), scope)
} }
} }
@ -168,7 +168,7 @@ impl DedicatedWorkerGlobalScope {
let runtime = ScriptTask::new_rt_and_cx(); let runtime = ScriptTask::new_rt_and_cx();
let global = DedicatedWorkerGlobalScope::new( let global = DedicatedWorkerGlobalScope::new(
worker_url, id, devtools_chan, runtime.cx.clone(), resource_task, worker_url, id, devtools_chan, runtime.clone(), resource_task,
parent_sender, own_sender, receiver).root(); parent_sender, own_sender, receiver).root();
{ {

View file

@ -27,10 +27,9 @@ use util::str::DOMString;
use js::jsapi::JSContext; use js::jsapi::JSContext;
use js::jsval::JSVal; use js::jsval::JSVal;
use js::rust::Cx; use js::rust::Runtime;
use std::default::Default; use std::default::Default;
use std::rc::Rc;
use std::cell::Cell; use std::cell::Cell;
use url::{Url, UrlParser}; use url::{Url, UrlParser};
@ -45,7 +44,7 @@ pub enum WorkerGlobalScopeTypeId {
pub struct WorkerGlobalScope { pub struct WorkerGlobalScope {
eventtarget: EventTarget, eventtarget: EventTarget,
worker_url: Url, worker_url: Url,
js_context: Rc<Cx>, runtime: Runtime,
next_worker_id: Cell<WorkerId>, next_worker_id: Cell<WorkerId>,
resource_task: ResourceTask, resource_task: ResourceTask,
location: MutNullableHeap<JS<WorkerLocation>>, location: MutNullableHeap<JS<WorkerLocation>>,
@ -58,14 +57,14 @@ pub struct WorkerGlobalScope {
impl WorkerGlobalScope { impl WorkerGlobalScope {
pub fn new_inherited(type_id: WorkerGlobalScopeTypeId, pub fn new_inherited(type_id: WorkerGlobalScopeTypeId,
worker_url: Url, worker_url: Url,
cx: Rc<Cx>, runtime: Runtime,
resource_task: ResourceTask, resource_task: ResourceTask,
devtools_chan: Option<DevtoolsControlChan>) -> WorkerGlobalScope { devtools_chan: Option<DevtoolsControlChan>) -> WorkerGlobalScope {
WorkerGlobalScope { WorkerGlobalScope {
eventtarget: EventTarget::new_inherited(EventTargetTypeId::WorkerGlobalScope(type_id)), eventtarget: EventTarget::new_inherited(EventTargetTypeId::WorkerGlobalScope(type_id)),
next_worker_id: Cell::new(WorkerId(0)), next_worker_id: Cell::new(WorkerId(0)),
worker_url: worker_url, worker_url: worker_url,
js_context: cx, runtime: runtime,
resource_task: resource_task, resource_task: resource_task,
location: Default::default(), location: Default::default(),
navigator: Default::default(), navigator: Default::default(),
@ -85,7 +84,7 @@ impl WorkerGlobalScope {
} }
pub fn get_cx(&self) -> *mut JSContext { pub fn get_cx(&self) -> *mut JSContext {
self.js_context.ptr self.runtime.cx()
} }
pub fn resource_task<'a>(&'a self) -> &'a ResourceTask { pub fn resource_task<'a>(&'a self) -> &'a ResourceTask {
@ -137,7 +136,7 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> {
} }
}; };
match self.js_context.evaluate_script( match self.runtime.cx.evaluate_script(
self.reflector().get_jsobject(), source, url.serialize(), 1) { self.reflector().get_jsobject(), source, url.serialize(), 1) {
Ok(_) => (), Ok(_) => (),
Err(_) => { Err(_) => {
@ -263,7 +262,7 @@ impl<'a> WorkerGlobalScopeHelpers for JSRef<'a, WorkerGlobalScope> {
} }
fn get_cx(self) -> *mut JSContext { fn get_cx(self) -> *mut JSContext {
self.js_context.ptr self.runtime.cx()
} }
} }