mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
Store the worker's URL in the WorkerGlobalScope.
This will be necessary to resolve relative URLs in the worker.
This commit is contained in:
parent
9fd67a751f
commit
68cb00a32f
3 changed files with 19 additions and 6 deletions
|
@ -55,7 +55,10 @@ impl<'a> GlobalRef<'a> {
|
|||
}
|
||||
|
||||
pub fn get_url(&self) -> Url {
|
||||
self.as_window().get_url()
|
||||
match *self {
|
||||
Window(ref window) => window.get_url(),
|
||||
Worker(ref worker) => worker.get_url().clone(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn script_chan<'b>(&'b self) -> &'b ScriptChan {
|
||||
|
|
|
@ -28,20 +28,22 @@ pub struct DedicatedWorkerGlobalScope {
|
|||
}
|
||||
|
||||
impl DedicatedWorkerGlobalScope {
|
||||
pub fn new_inherited(cx: Rc<Cx>,
|
||||
pub fn new_inherited(worker_url: Url,
|
||||
cx: Rc<Cx>,
|
||||
resource_task: ResourceTask)
|
||||
-> DedicatedWorkerGlobalScope {
|
||||
DedicatedWorkerGlobalScope {
|
||||
workerglobalscope: WorkerGlobalScope::new_inherited(
|
||||
DedicatedGlobalScope, cx, resource_task),
|
||||
DedicatedGlobalScope, worker_url, cx, resource_task),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn new(cx: Rc<Cx>,
|
||||
pub fn new(worker_url: Url,
|
||||
cx: Rc<Cx>,
|
||||
resource_task: ResourceTask)
|
||||
-> Temporary<DedicatedWorkerGlobalScope> {
|
||||
let scope = box DedicatedWorkerGlobalScope::new_inherited(
|
||||
cx.clone(), resource_task);
|
||||
worker_url, cx.clone(), resource_task);
|
||||
DedicatedWorkerGlobalScopeBinding::Wrap(cx.ptr, scope)
|
||||
}
|
||||
}
|
||||
|
@ -66,7 +68,7 @@ impl DedicatedWorkerGlobalScope {
|
|||
|
||||
let (_js_runtime, js_context) = ScriptTask::new_rt_and_cx();
|
||||
let global = DedicatedWorkerGlobalScope::new(
|
||||
js_context.clone(), resource_task).root();
|
||||
worker_url, js_context.clone(), resource_task).root();
|
||||
match js_context.evaluate_script(
|
||||
global.reflector().get_jsobject(), source, filename.to_str(), 1) {
|
||||
Ok(_) => (),
|
||||
|
|
|
@ -16,6 +16,7 @@ use js::rust::Cx;
|
|||
|
||||
use std::cell::Cell;
|
||||
use std::rc::Rc;
|
||||
use url::Url;
|
||||
|
||||
#[deriving(PartialEq,Encodable)]
|
||||
pub enum WorkerGlobalScopeId {
|
||||
|
@ -25,6 +26,7 @@ pub enum WorkerGlobalScopeId {
|
|||
#[deriving(Encodable)]
|
||||
pub struct WorkerGlobalScope {
|
||||
pub eventtarget: EventTarget,
|
||||
worker_url: Untraceable<Url>,
|
||||
js_context: Untraceable<Rc<Cx>>,
|
||||
resource_task: Untraceable<ResourceTask>,
|
||||
console: Cell<Option<JS<Console>>>,
|
||||
|
@ -32,10 +34,12 @@ pub struct WorkerGlobalScope {
|
|||
|
||||
impl WorkerGlobalScope {
|
||||
pub fn new_inherited(type_id: WorkerGlobalScopeId,
|
||||
worker_url: Url,
|
||||
cx: Rc<Cx>,
|
||||
resource_task: ResourceTask) -> WorkerGlobalScope {
|
||||
WorkerGlobalScope {
|
||||
eventtarget: EventTarget::new_inherited(WorkerGlobalScopeTypeId(type_id)),
|
||||
worker_url: Untraceable::new(worker_url),
|
||||
js_context: Untraceable::new(cx),
|
||||
resource_task: Untraceable::new(resource_task),
|
||||
console: Cell::new(None),
|
||||
|
@ -49,6 +53,10 @@ impl WorkerGlobalScope {
|
|||
pub fn resource_task<'a>(&'a self) -> &'a ResourceTask {
|
||||
&*self.resource_task
|
||||
}
|
||||
|
||||
pub fn get_url<'a>(&'a self) -> &'a Url {
|
||||
&*self.worker_url
|
||||
}
|
||||
}
|
||||
|
||||
pub trait WorkerGlobalScopeMethods {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue