diff options
author | Linus Groh <mail@linusgroh.de> | 2022-03-05 21:01:26 +0100 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-03-06 23:27:39 +0100 |
commit | 11d0e37d8ee30cea11a8579ecf26de8df80bd41d (patch) | |
tree | d113888659f5417b6066ca0585096b6b3c9465e1 /Userland/Libraries/LibWeb/HTML/Scripting/Environments.cpp | |
parent | db983b469df6bd987cf5c5614236fc4abb2af64e (diff) | |
download | serenity-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.cpp | 21 |
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(); +} + } |