mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Implement a resource_task getter on GlobalRef.
This is needed to fetch resources on all threads.
This commit is contained in:
parent
e22c8f9290
commit
9fd67a751f
5 changed files with 15 additions and 6 deletions
|
@ -8,9 +8,10 @@ use dom::bindings::js::{JS, JSRef, Root};
|
||||||
use dom::bindings::utils::{Reflectable, Reflector};
|
use dom::bindings::utils::{Reflectable, Reflector};
|
||||||
use dom::workerglobalscope::WorkerGlobalScope;
|
use dom::workerglobalscope::WorkerGlobalScope;
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
use page::Page;
|
|
||||||
use script_task::ScriptChan;
|
use script_task::ScriptChan;
|
||||||
|
|
||||||
|
use servo_net::resource_task::ResourceTask;
|
||||||
|
|
||||||
use js::jsapi::JSContext;
|
use js::jsapi::JSContext;
|
||||||
|
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
@ -46,8 +47,11 @@ impl<'a> GlobalRef<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn page<'b>(&'b self) -> &'b Page {
|
pub fn resource_task(&self) -> ResourceTask {
|
||||||
self.as_window().page()
|
match *self {
|
||||||
|
Window(ref window) => window.page().resource_task.deref().clone(),
|
||||||
|
Worker(ref worker) => worker.resource_task().clone(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_url(&self) -> Url {
|
pub fn get_url(&self) -> Url {
|
||||||
|
|
|
@ -65,7 +65,8 @@ impl DedicatedWorkerGlobalScope {
|
||||||
};
|
};
|
||||||
|
|
||||||
let (_js_runtime, js_context) = ScriptTask::new_rt_and_cx();
|
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(
|
match js_context.evaluate_script(
|
||||||
global.reflector().get_jsobject(), source, filename.to_str(), 1) {
|
global.reflector().get_jsobject(), source, filename.to_str(), 1) {
|
||||||
Ok(_) => (),
|
Ok(_) => (),
|
||||||
|
|
|
@ -39,7 +39,7 @@ impl Worker {
|
||||||
Err(_) => return Err(Syntax),
|
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);
|
DedicatedWorkerGlobalScope::run_worker_scope(worker_url, resource_task);
|
||||||
Ok(Worker::new(global))
|
Ok(Worker::new(global))
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,10 @@ impl WorkerGlobalScope {
|
||||||
pub fn get_cx(&self) -> *mut JSContext {
|
pub fn get_cx(&self) -> *mut JSContext {
|
||||||
self.js_context.ptr
|
self.js_context.ptr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn resource_task<'a>(&'a self) -> &'a ResourceTask {
|
||||||
|
&*self.resource_task
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait WorkerGlobalScopeMethods {
|
pub trait WorkerGlobalScopeMethods {
|
||||||
|
|
|
@ -486,7 +486,7 @@ impl<'a> XMLHttpRequestMethods<'a> for JSRef<'a, XMLHttpRequest> {
|
||||||
}
|
}
|
||||||
|
|
||||||
let global = self.global.root();
|
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());
|
let mut load_data = LoadData::new(self.request_url.deref().borrow().clone());
|
||||||
load_data.data = extracted;
|
load_data.data = extracted;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue