mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Use Runtime in WorkerGlobalScope and DedicatedWorkerGlobalScope.
This commit is contained in:
parent
4ed94629a2
commit
0f495afda6
2 changed files with 23 additions and 24 deletions
|
@ -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;
|
||||||
|
|
||||||
|
@ -104,17 +103,18 @@ pub struct DedicatedWorkerGlobalScope {
|
||||||
|
|
||||||
impl DedicatedWorkerGlobalScope {
|
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)>,
|
||||||
receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>)
|
receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>)
|
||||||
-> 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();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue