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
Notes:
sideshowbarker
2024-07-18 20:29:46 +09:00
Author: https://github.com/Lubrsi Commit: https://github.com/SerenityOS/serenity/commit/9ec4defdd24 Pull-request: https://github.com/SerenityOS/serenity/pull/6252
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);
|
||||
|
|
|
@ -90,6 +90,8 @@ private:
|
|||
JS_DECLARE_NATIVE_GETTER(inner_width_getter);
|
||||
JS_DECLARE_NATIVE_GETTER(inner_height_getter);
|
||||
|
||||
JS_DECLARE_NATIVE_GETTER(parent_getter);
|
||||
|
||||
JS_DECLARE_NATIVE_FUNCTION(alert);
|
||||
JS_DECLARE_NATIVE_FUNCTION(confirm);
|
||||
JS_DECLARE_NATIVE_FUNCTION(prompt);
|
||||
|
|
Loading…
Add table
Reference in a new issue