aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/worker.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/worker.rs')
-rw-r--r--components/script/dom/worker.rs35
1 files changed, 34 insertions, 1 deletions
diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs
index 661d397460f..f7900a0d0f0 100644
--- a/components/script/dom/worker.rs
+++ b/components/script/dom/worker.rs
@@ -24,10 +24,13 @@ use js::jsapi::{HandleValue, JSContext, JSRuntime, RootedValue};
use js::jsapi::{JSAutoCompartment, JS_RequestInterruptCallback};
use js::jsval::UndefinedValue;
use js::rust::Runtime;
+use msg::constellation_msg::{PipelineId, ReferrerPolicy};
+use net_traits::{RequestSource, LoadOrigin};
use script_thread::Runnable;
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::mpsc::{Sender, channel};
use std::sync::{Arc, Mutex};
+use url::Url;
use util::str::DOMString;
pub type TrustedWorkerAddress = Trusted<Worker>;
@@ -45,6 +48,29 @@ pub struct Worker {
runtime: Arc<Mutex<Option<SharedRt>>>
}
+#[derive(Clone)]
+pub struct WorkerScriptLoadOrigin {
+ referrer_url: Option<Url>,
+ referrer_policy: Option<ReferrerPolicy>,
+ request_source: RequestSource,
+ pipeline_id: Option<PipelineId>
+}
+
+impl LoadOrigin for WorkerScriptLoadOrigin {
+ fn referrer_url(&self) -> Option<Url> {
+ self.referrer_url.clone()
+ }
+ fn referrer_policy(&self) -> Option<ReferrerPolicy> {
+ self.referrer_policy.clone()
+ }
+ fn request_source(&self) -> RequestSource {
+ self.request_source.clone()
+ }
+ fn pipeline_id(&self) -> Option<PipelineId> {
+ self.pipeline_id.clone()
+ }
+}
+
impl Worker {
fn new_inherited(sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>,
closing: Arc<AtomicBool>) -> Worker {
@@ -82,6 +108,13 @@ impl Worker {
let worker_ref = Trusted::new(worker.r());
let worker_id = global.get_next_worker_id();
+ let worker_load_origin = WorkerScriptLoadOrigin {
+ referrer_url: None,
+ referrer_policy: None,
+ request_source: global.request_source(),
+ pipeline_id: Some(global.pipeline())
+ };
+
let (devtools_sender, devtools_receiver) = ipc::channel().unwrap();
let optional_sender = match global.devtools_chan() {
Some(ref chan) => {
@@ -114,7 +147,7 @@ impl Worker {
DedicatedWorkerGlobalScope::run_worker_scope(
init, worker_url, global.pipeline(), devtools_receiver, worker.runtime.clone(), worker_ref,
- global.script_chan(), sender, receiver);
+ global.script_chan(), sender, receiver, worker_load_origin);
Ok(worker)
}