diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-07-17 16:22:52 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-07-17 16:22:52 +0200 |
commit | 9fd67a751f0ce4990eaacad21c1845f6a6f2576e (patch) | |
tree | c5c1973345d1c49261d093bff8db233745a001e9 /src/components/script/dom | |
parent | e22c8f9290526b6813915cc95e4bf521627f1a02 (diff) | |
download | servo-9fd67a751f0ce4990eaacad21c1845f6a6f2576e.tar.gz servo-9fd67a751f0ce4990eaacad21c1845f6a6f2576e.zip |
Implement a resource_task getter on GlobalRef.
This is needed to fetch resources on all threads.
Diffstat (limited to 'src/components/script/dom')
-rw-r--r-- | src/components/script/dom/bindings/global.rs | 10 | ||||
-rw-r--r-- | src/components/script/dom/dedicatedworkerglobalscope.rs | 3 | ||||
-rw-r--r-- | src/components/script/dom/worker.rs | 2 | ||||
-rw-r--r-- | src/components/script/dom/workerglobalscope.rs | 4 | ||||
-rw-r--r-- | src/components/script/dom/xmlhttprequest.rs | 2 |
5 files changed, 15 insertions, 6 deletions
diff --git a/src/components/script/dom/bindings/global.rs b/src/components/script/dom/bindings/global.rs index 6d3f9c5cc44..00ec81ec006 100644 --- a/src/components/script/dom/bindings/global.rs +++ b/src/components/script/dom/bindings/global.rs @@ -8,9 +8,10 @@ use dom::bindings::js::{JS, JSRef, Root}; use dom::bindings::utils::{Reflectable, Reflector}; use dom::workerglobalscope::WorkerGlobalScope; use dom::window::Window; -use page::Page; use script_task::ScriptChan; +use servo_net::resource_task::ResourceTask; + use js::jsapi::JSContext; use url::Url; @@ -46,8 +47,11 @@ impl<'a> GlobalRef<'a> { } } - pub fn page<'b>(&'b self) -> &'b Page { - self.as_window().page() + pub fn resource_task(&self) -> ResourceTask { + match *self { + Window(ref window) => window.page().resource_task.deref().clone(), + Worker(ref worker) => worker.resource_task().clone(), + } } pub fn get_url(&self) -> Url { diff --git a/src/components/script/dom/dedicatedworkerglobalscope.rs b/src/components/script/dom/dedicatedworkerglobalscope.rs index 8023b949c20..6fc2b0c5fec 100644 --- a/src/components/script/dom/dedicatedworkerglobalscope.rs +++ b/src/components/script/dom/dedicatedworkerglobalscope.rs @@ -65,7 +65,8 @@ impl DedicatedWorkerGlobalScope { }; let (_js_runtime, js_context) = ScriptTask::new_rt_and_cx(); - let global = DedicatedWorkerGlobalScope::new(js_context.clone()).root(); + let global = DedicatedWorkerGlobalScope::new( + js_context.clone(), resource_task).root(); match js_context.evaluate_script( global.reflector().get_jsobject(), source, filename.to_str(), 1) { Ok(_) => (), diff --git a/src/components/script/dom/worker.rs b/src/components/script/dom/worker.rs index 503632de5a8..f357eca8ce3 100644 --- a/src/components/script/dom/worker.rs +++ b/src/components/script/dom/worker.rs @@ -39,7 +39,7 @@ impl Worker { Err(_) => return Err(Syntax), }; - let resource_task = global.page().resource_task.deref().clone(); + let resource_task = global.resource_task(); DedicatedWorkerGlobalScope::run_worker_scope(worker_url, resource_task); Ok(Worker::new(global)) } diff --git a/src/components/script/dom/workerglobalscope.rs b/src/components/script/dom/workerglobalscope.rs index f4b78cde827..f5cead5b1b0 100644 --- a/src/components/script/dom/workerglobalscope.rs +++ b/src/components/script/dom/workerglobalscope.rs @@ -45,6 +45,10 @@ impl WorkerGlobalScope { pub fn get_cx(&self) -> *mut JSContext { self.js_context.ptr } + + pub fn resource_task<'a>(&'a self) -> &'a ResourceTask { + &*self.resource_task + } } pub trait WorkerGlobalScopeMethods { diff --git a/src/components/script/dom/xmlhttprequest.rs b/src/components/script/dom/xmlhttprequest.rs index 6d93c5a95da..4487d4160d5 100644 --- a/src/components/script/dom/xmlhttprequest.rs +++ b/src/components/script/dom/xmlhttprequest.rs @@ -486,7 +486,7 @@ impl<'a> XMLHttpRequestMethods<'a> for JSRef<'a, XMLHttpRequest> { } let global = self.global.root(); - let resource_task = global.root_ref().page().resource_task.deref().clone(); + let resource_task = global.root_ref().resource_task(); let mut load_data = LoadData::new(self.request_url.deref().borrow().clone()); load_data.data = extracted; |