diff --git a/Userland/Libraries/LibWeb/Bindings/WindowObject.cpp b/Userland/Libraries/LibWeb/Bindings/WindowObject.cpp index eeda0b978d..0be35f2cf6 100644 --- a/Userland/Libraries/LibWeb/Bindings/WindowObject.cpp +++ b/Userland/Libraries/LibWeb/Bindings/WindowObject.cpp @@ -510,9 +510,7 @@ JS_DEFINE_NATIVE_GETTER(WindowObject::scroll_x_getter) auto* impl = impl_from(vm, global_object); if (!impl) return {}; - if (!impl->page()) - return JS::Value(0); - return JS::Value(impl->page()->top_level_browsing_context().viewport_scroll_offset().x()); + return JS::Value(impl->scroll_x()); } // https://www.w3.org/TR/cssom-view/#dom-window-scrolly @@ -521,9 +519,7 @@ JS_DEFINE_NATIVE_GETTER(WindowObject::scroll_y_getter) auto* impl = impl_from(vm, global_object); if (!impl) return {}; - if (!impl->page()) - return JS::Value(0); - return JS::Value(impl->page()->top_level_browsing_context().viewport_scroll_offset().y()); + return JS::Value(impl->scroll_y()); } enum class ScrollBehavior { diff --git a/Userland/Libraries/LibWeb/DOM/Window.cpp b/Userland/Libraries/LibWeb/DOM/Window.cpp index c20df10444..3e2532e9b5 100644 --- a/Userland/Libraries/LibWeb/DOM/Window.cpp +++ b/Userland/Libraries/LibWeb/DOM/Window.cpp @@ -260,4 +260,20 @@ NonnullRefPtr Window::match_media(String media) return CSS::MediaQueryList::create(associated_document(), move(media)); } +// https://www.w3.org/TR/cssom-view/#dom-window-scrollx +float Window::scroll_x() const +{ + if (auto* page = this->page()) + return page->top_level_browsing_context().viewport_scroll_offset().x(); + return 0; +} + +// https://www.w3.org/TR/cssom-view/#dom-window-scrolly +float Window::scroll_y() const +{ + if (auto* page = this->page()) + return page->top_level_browsing_context().viewport_scroll_offset().y(); + return 0; +} + } diff --git a/Userland/Libraries/LibWeb/DOM/Window.h b/Userland/Libraries/LibWeb/DOM/Window.h index 7381962577..f17873cf49 100644 --- a/Userland/Libraries/LibWeb/DOM/Window.h +++ b/Userland/Libraries/LibWeb/DOM/Window.h @@ -80,6 +80,9 @@ public: NonnullRefPtr get_computed_style(DOM::Element&) const; NonnullRefPtr match_media(String); + float scroll_x() const; + float scroll_y() const; + private: explicit Window(Document&);