mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 13:37:45 +00:00
LibWeb: Add Window.parent and fix Window.top attributes
This returns the parent frame of the current frame. If it's the main frame, it returns itself. Also fixes the attributes of Window.top, as they were accidentally being passed in as the setter. Required by Web Platform Tests.
This commit is contained in:
parent
e0f9ed01c7
commit
9ec4defdd2
2 changed files with 20 additions and 1 deletions
|
@ -67,7 +67,8 @@ void WindowObject::initialize_global_object()
|
|||
define_property("window", this, JS::Attribute::Enumerable);
|
||||
define_property("frames", this, JS::Attribute::Enumerable);
|
||||
define_property("self", this, JS::Attribute::Enumerable);
|
||||
define_native_property("top", top_getter, JS::Attribute::Enumerable);
|
||||
define_native_property("top", top_getter, nullptr, JS::Attribute::Enumerable);
|
||||
define_native_property("parent", parent_getter, nullptr, JS::Attribute::Enumerable);
|
||||
define_native_property("document", document_getter, nullptr, JS::Attribute::Enumerable);
|
||||
define_native_property("performance", performance_getter, nullptr, JS::Attribute::Enumerable);
|
||||
define_native_property("screen", screen_getter, nullptr, JS::Attribute::Enumerable);
|
||||
|
@ -366,6 +367,22 @@ JS_DEFINE_NATIVE_GETTER(WindowObject::top_getter)
|
|||
return top_window.wrapper();
|
||||
}
|
||||
|
||||
JS_DEFINE_NATIVE_GETTER(WindowObject::parent_getter)
|
||||
{
|
||||
auto* impl = impl_from(vm, global_object);
|
||||
if (!impl)
|
||||
return {};
|
||||
auto* this_frame = impl->document().frame();
|
||||
VERIFY(this_frame);
|
||||
if (this_frame->parent()) {
|
||||
VERIFY(this_frame->parent()->document());
|
||||
auto& parent_window = this_frame->parent()->document()->window();
|
||||
return parent_window.wrapper();
|
||||
}
|
||||
VERIFY(this_frame == &this_frame->main_frame());
|
||||
return impl->wrapper();
|
||||
}
|
||||
|
||||
JS_DEFINE_NATIVE_GETTER(WindowObject::document_getter)
|
||||
{
|
||||
auto* impl = impl_from(vm, global_object);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue