mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 16:55:09 +00:00
LibWeb: Implement the 'Relevant realm/{settings,global} object' concepts
This commit is contained in:
parent
db983b469d
commit
11d0e37d8e
2 changed files with 25 additions and 0 deletions
|
@ -291,4 +291,25 @@ JS::GlobalObject& current_global_object()
|
||||||
return vm.current_realm()->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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <AK/URL.h>
|
#include <AK/URL.h>
|
||||||
#include <LibJS/Runtime/ExecutionContext.h>
|
#include <LibJS/Runtime/ExecutionContext.h>
|
||||||
#include <LibJS/Runtime/GlobalObject.h>
|
#include <LibJS/Runtime/GlobalObject.h>
|
||||||
|
#include <LibJS/Runtime/Object.h>
|
||||||
#include <LibJS/Runtime/Realm.h>
|
#include <LibJS/Runtime/Realm.h>
|
||||||
#include <LibWeb/HTML/BrowsingContext.h>
|
#include <LibWeb/HTML/BrowsingContext.h>
|
||||||
#include <LibWeb/HTML/EventLoop/EventLoop.h>
|
#include <LibWeb/HTML/EventLoop/EventLoop.h>
|
||||||
|
@ -120,5 +121,8 @@ JS::Realm& incumbent_realm();
|
||||||
JS::GlobalObject& incumbent_global_object();
|
JS::GlobalObject& incumbent_global_object();
|
||||||
EnvironmentSettingsObject& current_settings_object();
|
EnvironmentSettingsObject& current_settings_object();
|
||||||
JS::GlobalObject& current_global_object();
|
JS::GlobalObject& current_global_object();
|
||||||
|
JS::Realm& relevant_realm(JS::Object const&);
|
||||||
|
EnvironmentSettingsObject& relevant_settings_object(JS::Object const&);
|
||||||
|
JS::GlobalObject& relevant_global_object(JS::Object const&);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue