diff options
Diffstat (limited to 'components/script/dom/workerglobalscope.rs')
-rw-r--r-- | components/script/dom/workerglobalscope.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index 3937f8fbedb..7009f51e29a 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -52,6 +52,7 @@ use crate::dom::dedicatedworkerglobalscope::DedicatedWorkerGlobalScope; use crate::dom::globalscope::GlobalScope; use crate::dom::performance::Performance; use crate::dom::promise::Promise; +use crate::dom::trustedtypepolicyfactory::TrustedTypePolicyFactory; #[cfg(feature = "webgpu")] use crate::dom::webgpu::identityhub::IdentityHub; use crate::dom::window::{base64_atob, base64_btoa}; @@ -122,6 +123,7 @@ pub(crate) struct WorkerGlobalScope { #[no_trace] navigation_start: CrossProcessInstant, performance: MutNullableDom<Performance>, + trusted_types: MutNullableDom<TrustedTypePolicyFactory>, /// A [`TimerScheduler`] used to schedule timers for this [`WorkerGlobalScope`]. /// Timers are handled in the service worker event loop. @@ -184,6 +186,7 @@ impl WorkerGlobalScope { performance: Default::default(), timer_scheduler: RefCell::default(), insecure_requests_policy, + trusted_types: Default::default(), } } @@ -477,6 +480,14 @@ impl WorkerGlobalScopeMethods<crate::DomTypeHolder> for WorkerGlobalScope { self.upcast::<GlobalScope>() .structured_clone(cx, value, options, retval) } + + /// <https://www.w3.org/TR/trusted-types/#dom-windoworworkerglobalscope-trustedtypes> + fn TrustedTypes(&self, can_gc: CanGc) -> DomRoot<TrustedTypePolicyFactory> { + self.trusted_types.or_init(|| { + let global_scope = self.upcast::<GlobalScope>(); + TrustedTypePolicyFactory::new(global_scope, can_gc) + }) + } } impl WorkerGlobalScope { |