mirror of
https://github.com/SerenityOS/serenity
synced 2024-09-16 06:30:41 +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
|
@ -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…
Reference in a new issue