diff --git a/Userland/Libraries/LibWeb/Bindings/WindowObject.cpp b/Userland/Libraries/LibWeb/Bindings/WindowObject.cpp index 1a7bfb2719..81f1a36d3a 100644 --- a/Userland/Libraries/LibWeb/Bindings/WindowObject.cpp +++ b/Userland/Libraries/LibWeb/Bindings/WindowObject.cpp @@ -67,6 +67,8 @@ void WindowObject::initialize() define_property("self", this, JS::Attribute::Enumerable); define_native_property("document", document_getter, document_setter, JS::Attribute::Enumerable); define_native_property("performance", performance_getter, nullptr, JS::Attribute::Enumerable); + define_native_property("innerWidth", inner_width_getter, nullptr, JS::Attribute::Enumerable); + define_native_property("innerHeight", inner_height_getter, nullptr, JS::Attribute::Enumerable); define_native_function("alert", alert); define_native_function("confirm", confirm); define_native_function("prompt", prompt); @@ -379,4 +381,20 @@ JS_DEFINE_NATIVE_GETTER(WindowObject::event_getter) return wrap(global_object, const_cast(*impl->current_event())); } +JS_DEFINE_NATIVE_GETTER(WindowObject::inner_width_getter) +{ + auto* impl = impl_from(vm, global_object); + if (!impl) + return {}; + return JS::Value(impl->inner_width()); +} + +JS_DEFINE_NATIVE_GETTER(WindowObject::inner_height_getter) +{ + auto* impl = impl_from(vm, global_object); + if (!impl) + return {}; + return JS::Value(impl->inner_height()); +} + } diff --git a/Userland/Libraries/LibWeb/Bindings/WindowObject.h b/Userland/Libraries/LibWeb/Bindings/WindowObject.h index 48d95212c7..097237bf03 100644 --- a/Userland/Libraries/LibWeb/Bindings/WindowObject.h +++ b/Userland/Libraries/LibWeb/Bindings/WindowObject.h @@ -84,6 +84,9 @@ private: JS_DECLARE_NATIVE_GETTER(event_getter); + JS_DECLARE_NATIVE_GETTER(inner_width_getter); + JS_DECLARE_NATIVE_GETTER(inner_height_getter); + JS_DECLARE_NATIVE_FUNCTION(alert); JS_DECLARE_NATIVE_FUNCTION(confirm); JS_DECLARE_NATIVE_FUNCTION(prompt); diff --git a/Userland/Libraries/LibWeb/DOM/Window.cpp b/Userland/Libraries/LibWeb/DOM/Window.cpp index 0b7f66afc4..62c327fd75 100644 --- a/Userland/Libraries/LibWeb/DOM/Window.cpp +++ b/Userland/Libraries/LibWeb/DOM/Window.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include namespace Web::DOM { @@ -181,4 +182,18 @@ JS::Object* Window::create_wrapper(JS::GlobalObject& global_object) return &global_object; } +int Window::inner_width() const +{ + if (!document().layout_node()) + return 0; + return document().layout_node()->width(); +} + +int Window::inner_height() const +{ + if (!document().layout_node()) + return 0; + return document().layout_node()->height(); +} + } diff --git a/Userland/Libraries/LibWeb/DOM/Window.h b/Userland/Libraries/LibWeb/DOM/Window.h index 4227130eec..25d7138438 100644 --- a/Userland/Libraries/LibWeb/DOM/Window.h +++ b/Userland/Libraries/LibWeb/DOM/Window.h @@ -66,6 +66,9 @@ public: void clear_timeout(i32); void clear_interval(i32); + int inner_width() const; + int inner_height() const; + void did_set_location_href(Badge, const URL& new_href); void did_call_location_reload(Badge);