From a917f8124cbf1aece0a8a623d4ce47a2464115b6 Mon Sep 17 00:00:00 2001 From: Jamie Mansfield Date: Sat, 13 Jul 2024 00:33:26 +0100 Subject: [PATCH] LibWeb: Implement HTMLMarqueeElement.scrollDelay --- Userland/Libraries/LibWeb/HTML/AttributeNames.h | 1 + .../LibWeb/HTML/HTMLMarqueeElement.cpp | 17 +++++++++++++++++ .../Libraries/LibWeb/HTML/HTMLMarqueeElement.h | 3 +++ .../LibWeb/HTML/HTMLMarqueeElement.idl | 2 +- 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibWeb/HTML/AttributeNames.h b/Userland/Libraries/LibWeb/HTML/AttributeNames.h index d0f4fba2dc3..942df21e164 100644 --- a/Userland/Libraries/LibWeb/HTML/AttributeNames.h +++ b/Userland/Libraries/LibWeb/HTML/AttributeNames.h @@ -225,6 +225,7 @@ namespace AttributeNames { __ENUMERATE_HTML_ATTRIBUTE(rules) \ __ENUMERATE_HTML_ATTRIBUTE(scheme) \ __ENUMERATE_HTML_ATTRIBUTE(scrollamount) \ + __ENUMERATE_HTML_ATTRIBUTE(scrolldelay) \ __ENUMERATE_HTML_ATTRIBUTE(scrolling) \ __ENUMERATE_HTML_ATTRIBUTE(selected) \ __ENUMERATE_HTML_ATTRIBUTE(shadowrootclonable) \ diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.cpp index 45aff94189e..0ae41d657fa 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.cpp @@ -60,4 +60,21 @@ WebIDL::ExceptionOr HTMLMarqueeElement::set_scroll_amount(WebIDL::Unsigned return set_attribute(HTML::AttributeNames::scrollamount, MUST(String::number(value))); } +// https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-scrolldelay +WebIDL::UnsignedLong HTMLMarqueeElement::scroll_delay() +{ + // The scrollDelay IDL attribute must reflect the scrolldelay content attribute. The default value is 85. + if (auto scroll_delay_string = get_attribute(HTML::AttributeNames::scrolldelay); scroll_delay_string.has_value()) { + if (auto scroll_delay = parse_non_negative_integer(*scroll_delay_string); scroll_delay.has_value()) + return *scroll_delay; + } + return 85; +} + +// https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-scrolldelay +WebIDL::ExceptionOr HTMLMarqueeElement::set_scroll_delay(WebIDL::UnsignedLong value) +{ + return set_attribute(HTML::AttributeNames::scrolldelay, MUST(String::number(value))); +} + } diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.h b/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.h index 79e83e87452..63e3352ee01 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.h @@ -23,6 +23,9 @@ public: WebIDL::UnsignedLong scroll_amount(); WebIDL::ExceptionOr set_scroll_amount(WebIDL::UnsignedLong); + WebIDL::UnsignedLong scroll_delay(); + WebIDL::ExceptionOr set_scroll_delay(WebIDL::UnsignedLong); + private: HTMLMarqueeElement(DOM::Document&, DOM::QualifiedName); diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.idl b/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.idl index 96bcaf51dda..1403158097e 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.idl +++ b/Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.idl @@ -13,7 +13,7 @@ interface HTMLMarqueeElement : HTMLElement { [CEReactions, Reflect] attribute unsigned long hspace; [FIXME, CEReactions] attribute long loop; [CEReactions] attribute unsigned long scrollAmount; - [FIXME, CEReactions] attribute unsigned long scrollDelay; + [CEReactions] attribute unsigned long scrollDelay; [FIXME, CEReactions] attribute boolean trueSpeed; [CEReactions, Reflect] attribute unsigned long vspace; [CEReactions, Reflect] attribute DOMString width;