From e22c8f9290526b6813915cc95e4bf521627f1a02 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 17 Jul 2014 16:06:22 +0200 Subject: [PATCH] Store the ResourceTask on the WorkerGlobalScope. This is necessary to load dependent resources, such as through new Worker(), importScripts, XHR, ... --- .../script/dom/dedicatedworkerglobalscope.rs | 14 ++++++++++---- src/components/script/dom/workerglobalscope.rs | 7 ++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/components/script/dom/dedicatedworkerglobalscope.rs b/src/components/script/dom/dedicatedworkerglobalscope.rs index 0f10552cdbe..8023b949c20 100644 --- a/src/components/script/dom/dedicatedworkerglobalscope.rs +++ b/src/components/script/dom/dedicatedworkerglobalscope.rs @@ -28,14 +28,20 @@ pub struct DedicatedWorkerGlobalScope { } impl DedicatedWorkerGlobalScope { - pub fn new_inherited(cx: Rc) -> DedicatedWorkerGlobalScope { + pub fn new_inherited(cx: Rc, + resource_task: ResourceTask) + -> DedicatedWorkerGlobalScope { DedicatedWorkerGlobalScope { - workerglobalscope: WorkerGlobalScope::new_inherited(DedicatedGlobalScope, cx), + workerglobalscope: WorkerGlobalScope::new_inherited( + DedicatedGlobalScope, cx, resource_task), } } - pub fn new(cx: Rc) -> Temporary { - let scope = box DedicatedWorkerGlobalScope::new_inherited(cx.clone()); + pub fn new(cx: Rc, + resource_task: ResourceTask) + -> Temporary { + let scope = box DedicatedWorkerGlobalScope::new_inherited( + cx.clone(), resource_task); DedicatedWorkerGlobalScopeBinding::Wrap(cx.ptr, scope) } } diff --git a/src/components/script/dom/workerglobalscope.rs b/src/components/script/dom/workerglobalscope.rs index 649de7628d9..f4b78cde827 100644 --- a/src/components/script/dom/workerglobalscope.rs +++ b/src/components/script/dom/workerglobalscope.rs @@ -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>, + resource_task: Untraceable, console: Cell>>, } impl WorkerGlobalScope { pub fn new_inherited(type_id: WorkerGlobalScopeId, - cx: Rc) -> WorkerGlobalScope { + cx: Rc, + 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), } }