summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb/HTML/Scripting/Environments.cpp
diff options
context:
space:
mode:
authorLinus Groh <mail@linusgroh.de>2022-03-05 21:01:26 +0100
committerLinus Groh <mail@linusgroh.de>2022-03-06 23:27:39 +0100
commit11d0e37d8ee30cea11a8579ecf26de8df80bd41d (patch)
treed113888659f5417b6066ca0585096b6b3c9465e1 /Userland/Libraries/LibWeb/HTML/Scripting/Environments.cpp
parentdb983b469df6bd987cf5c5614236fc4abb2af64e (diff)
downloadserenity-11d0e37d8ee30cea11a8579ecf26de8df80bd41d.zip
LibWeb: Implement the 'Relevant realm/{settings,global} object' concepts
Diffstat (limited to 'Userland/Libraries/LibWeb/HTML/Scripting/Environments.cpp')
-rw-r--r--Userland/Libraries/LibWeb/HTML/Scripting/Environments.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/Userland/Libraries/LibWeb/HTML/Scripting/Environments.cpp b/Userland/Libraries/LibWeb/HTML/Scripting/Environments.cpp
index 06523d312f..df416ba44b 100644
--- a/Userland/Libraries/LibWeb/HTML/Scripting/Environments.cpp
+++ b/Userland/Libraries/LibWeb/HTML/Scripting/Environments.cpp
@@ -291,4 +291,25 @@ JS::GlobalObject& current_global_object()
return vm.current_realm()->global_object();
}
+// https://html.spec.whatwg.org/multipage/webappapis.html#concept-relevant-realm
+JS::Realm& relevant_realm(JS::Object const& object)
+{
+ // The relevant Realm for a platform object is the value of its [[Realm]] field.
+ return *object.global_object().associated_realm();
+}
+
+// https://html.spec.whatwg.org/multipage/webappapis.html#relevant-settings-object
+EnvironmentSettingsObject& relevant_settings_object(JS::Object const& object)
+{
+ // Then, the relevant settings object for a platform object o is the environment settings object of the relevant Realm for o.
+ return verify_cast<EnvironmentSettingsObject>(*relevant_realm(object).host_defined());
+}
+
+// https://html.spec.whatwg.org/multipage/webappapis.html#concept-relevant-global
+JS::GlobalObject& relevant_global_object(JS::Object const& object)
+{
+ // Similarly, the relevant global object for a platform object o is the global object of the relevant Realm for o.
+ return relevant_realm(object).global_object();
+}
+
}