Store the ResourceTask on the WorkerGlobalScope.

This is necessary to load dependent resources, such as through new Worker(),
importScripts, XHR, ...
This commit is contained in:
Ms2ger 2014-07-17 16:06:22 +02:00
parent 31376a6a79
commit e22c8f9290
2 changed files with 16 additions and 5 deletions

View file

@ -28,14 +28,20 @@ pub struct DedicatedWorkerGlobalScope {
}
impl DedicatedWorkerGlobalScope {
pub fn new_inherited(cx: Rc<Cx>) -> DedicatedWorkerGlobalScope {
pub fn new_inherited(cx: Rc<Cx>,
resource_task: ResourceTask)
-> DedicatedWorkerGlobalScope {
DedicatedWorkerGlobalScope {
workerglobalscope: WorkerGlobalScope::new_inherited(DedicatedGlobalScope, cx),
workerglobalscope: WorkerGlobalScope::new_inherited(
DedicatedGlobalScope, cx, resource_task),
}
}
pub fn new(cx: Rc<Cx>) -> Temporary<DedicatedWorkerGlobalScope> {
let scope = box DedicatedWorkerGlobalScope::new_inherited(cx.clone());
pub fn new(cx: Rc<Cx>,
resource_task: ResourceTask)
-> Temporary<DedicatedWorkerGlobalScope> {
let scope = box DedicatedWorkerGlobalScope::new_inherited(
cx.clone(), resource_task);
DedicatedWorkerGlobalScopeBinding::Wrap(cx.ptr, scope)
}
}

View file

@ -9,6 +9,8 @@ use dom::bindings::utils::{Reflectable, Reflector};
use dom::console::Console;
use dom::eventtarget::{EventTarget, WorkerGlobalScopeTypeId};
use servo_net::resource_task::ResourceTask;
use js::jsapi::JSContext;
use js::rust::Cx;
@ -24,15 +26,18 @@ pub enum WorkerGlobalScopeId {
pub struct WorkerGlobalScope {
pub eventtarget: EventTarget,
js_context: Untraceable<Rc<Cx>>,
resource_task: Untraceable<ResourceTask>,
console: Cell<Option<JS<Console>>>,
}
impl WorkerGlobalScope {
pub fn new_inherited(type_id: WorkerGlobalScopeId,
cx: Rc<Cx>) -> WorkerGlobalScope {
cx: Rc<Cx>,
resource_task: ResourceTask) -> WorkerGlobalScope {
WorkerGlobalScope {
eventtarget: EventTarget::new_inherited(WorkerGlobalScopeTypeId(type_id)),
js_context: Untraceable::new(cx),
resource_task: Untraceable::new(resource_task),
console: Cell::new(None),
}
}