aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/globalscope.rs
diff options
context:
space:
mode:
authorshanehandley <1322294+shanehandley@users.noreply.github.com>2024-11-09 12:16:35 +1100
committerGitHub <noreply@github.com>2024-11-09 01:16:35 +0000
commitda462d0fcda24f11ad2c67f5db7a2db0ea0f95e2 (patch)
tree88f7dad5e54eafedd6e63af0bc227a37bc711266 /components/script/dom/globalscope.rs
parent6c1cd56e529c392b323033618c9bed4760a6aef7 (diff)
downloadservo-da462d0fcda24f11ad2c67f5db7a2db0ea0f95e2.tar.gz
servo-da462d0fcda24f11ad2c67f5db7a2db0ea0f95e2.zip
Implement referrer policy for dom worker construction (#34192)
Signed-off-by: Shane Handley <shanehandley@fastmail.com>
Diffstat (limited to 'components/script/dom/globalscope.rs')
-rw-r--r--components/script/dom/globalscope.rs17
1 files changed, 16 insertions, 1 deletions
diff --git a/components/script/dom/globalscope.rs b/components/script/dom/globalscope.rs
index 194e2439d7e..47ace9c8455 100644
--- a/components/script/dom/globalscope.rs
+++ b/components/script/dom/globalscope.rs
@@ -50,7 +50,7 @@ use net_traits::request::{Referrer, RequestBuilder};
use net_traits::response::HttpsState;
use net_traits::{
fetch_async, CoreResourceMsg, CoreResourceThread, FetchResponseListener, IpcSend,
- ResourceThreads,
+ ReferrerPolicy, ResourceThreads,
};
use profile_traits::{ipc as profile_ipc, mem as profile_mem, time as profile_time};
use script_traits::serializable::{BlobData, BlobImpl, FileBlob};
@@ -2418,6 +2418,21 @@ impl GlobalScope {
unreachable!();
}
+ /// Get the Referrer Policy for this global scope.
+ pub fn get_referrer_policy(&self) -> Option<ReferrerPolicy> {
+ if let Some(window) = self.downcast::<Window>() {
+ let document = window.Document();
+
+ return document.get_referrer_policy();
+ }
+ if let Some(worker) = self.downcast::<WorkerGlobalScope>() {
+ let policy_container = worker.policy_container().to_owned();
+
+ return Some(policy_container.referrer_policy);
+ }
+ unreachable!();
+ }
+
/// Determine the Referrer for a request whose Referrer is "client"
pub fn get_referrer(&self) -> Referrer {
// Step 3 of https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer