aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-07-17 16:22:52 +0200
committerMs2ger <ms2ger@gmail.com>2014-07-17 16:22:52 +0200
commit9fd67a751f0ce4990eaacad21c1845f6a6f2576e (patch)
treec5c1973345d1c49261d093bff8db233745a001e9 /src/components/script/dom
parente22c8f9290526b6813915cc95e4bf521627f1a02 (diff)
downloadservo-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.rs10
-rw-r--r--src/components/script/dom/dedicatedworkerglobalscope.rs3
-rw-r--r--src/components/script/dom/worker.rs2
-rw-r--r--src/components/script/dom/workerglobalscope.rs4
-rw-r--r--src/components/script/dom/xmlhttprequest.rs2
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;