diff --git a/Userland/Libraries/LibWeb/HTML/Scripting/WorkerEnvironmentSettingsObject.cpp b/Userland/Libraries/LibWeb/HTML/Scripting/WorkerEnvironmentSettingsObject.cpp
index 19136f2890..622be8098f 100644
--- a/Userland/Libraries/LibWeb/HTML/Scripting/WorkerEnvironmentSettingsObject.cpp
+++ b/Userland/Libraries/LibWeb/HTML/Scripting/WorkerEnvironmentSettingsObject.cpp
@@ -46,6 +46,30 @@ JS::NonnullGCPtr WorkerEnvironmentSettingsObjec
return settings_object;
}
+URL::URL WorkerEnvironmentSettingsObject::api_base_url()
+{
+ // Return worker global scope's url.
+ return m_global_scope->url();
+}
+
+Origin WorkerEnvironmentSettingsObject::origin()
+{
+ // FIXME: Return a unique opaque origin if worker global scope's url's scheme is "data", and inherited origin otherwise.
+ return m_origin;
+}
+
+PolicyContainer WorkerEnvironmentSettingsObject::policy_container()
+{
+ // Return worker global scope's policy container.
+ return m_global_scope->policy_container();
+}
+
+CanUseCrossOriginIsolatedAPIs WorkerEnvironmentSettingsObject::cross_origin_isolated_capability()
+{
+ // FIXME: Return worker global scope's cross-origin isolated capability.
+ return CanUseCrossOriginIsolatedAPIs::No;
+}
+
void WorkerEnvironmentSettingsObject::visit_edges(JS::Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
diff --git a/Userland/Libraries/LibWeb/HTML/Scripting/WorkerEnvironmentSettingsObject.h b/Userland/Libraries/LibWeb/HTML/Scripting/WorkerEnvironmentSettingsObject.h
index f88bbfd4e0..b01af2f73d 100644
--- a/Userland/Libraries/LibWeb/HTML/Scripting/WorkerEnvironmentSettingsObject.h
+++ b/Userland/Libraries/LibWeb/HTML/Scripting/WorkerEnvironmentSettingsObject.h
@@ -30,18 +30,16 @@ public:
JS::GCPtr responsible_document() override { return nullptr; }
String api_url_character_encoding() override { return m_api_url_character_encoding; }
- URL::URL api_base_url() override { return m_url; }
- Origin origin() override { return m_origin; }
- PolicyContainer policy_container() override { return m_policy_container; }
- CanUseCrossOriginIsolatedAPIs cross_origin_isolated_capability() override { return CanUseCrossOriginIsolatedAPIs::No; }
+ URL::URL api_base_url() override;
+ Origin origin() override;
+ PolicyContainer policy_container() override;
+ CanUseCrossOriginIsolatedAPIs cross_origin_isolated_capability() override;
private:
virtual void visit_edges(JS::Cell::Visitor&) override;
String m_api_url_character_encoding;
- URL::URL m_url;
HTML::Origin m_origin;
- HTML::PolicyContainer m_policy_container;
JS::NonnullGCPtr m_global_scope;
};
diff --git a/Userland/Libraries/LibWeb/HTML/WorkerGlobalScope.h b/Userland/Libraries/LibWeb/HTML/WorkerGlobalScope.h
index c7cb0e9989..4f92f18cca 100644
--- a/Userland/Libraries/LibWeb/HTML/WorkerGlobalScope.h
+++ b/Userland/Libraries/LibWeb/HTML/WorkerGlobalScope.h
@@ -94,6 +94,8 @@ public:
Web::Page* page() { return m_page.ptr(); }
+ PolicyContainer policy_container() const { return m_policy_container; }
+
protected:
explicit WorkerGlobalScope(JS::Realm&, JS::NonnullGCPtr);
@@ -129,6 +131,7 @@ private:
// https://html.spec.whatwg.org/multipage/workers.html#concept-workerglobalscope-policy-container
// A WorkerGlobalScope object has an associated policy container (a policy container). It is initially a new policy container.
+ PolicyContainer m_policy_container;
// https://html.spec.whatwg.org/multipage/workers.html#concept-workerglobalscope-embedder-policy
// A WorkerGlobalScope object has an associated embedder policy (an embedder policy).