diff --git a/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.cpp index 7c75877a8c5..c3ab7b4e060 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.cpp @@ -1,6 +1,7 @@ /* * Copyright (c) 2018-2021, Andreas Kling * Copyright (c) 2021, the SerenityOS developers. + * Copyright (c) 2024, Jamie Mansfield * * SPDX-License-Identifier: BSD-2-Clause */ @@ -49,6 +50,33 @@ void HTMLStyleElement::removed_from(Node* old_parent) Base::removed_from(old_parent); } +// https://html.spec.whatwg.org/multipage/semantics.html#dom-style-disabled +bool HTMLStyleElement::disabled() +{ + // 1. If this does not have an associated CSS style sheet, return false. + if (!sheet()) + return false; + + // 2. If this's associated CSS style sheet's disabled flag is set, return true. + if (sheet()->disabled()) + return true; + + // 3. Return false. + return false; +} + +// https://html.spec.whatwg.org/multipage/semantics.html#dom-style-disabled +void HTMLStyleElement::set_disabled(bool disabled) +{ + // 1. If this does not have an associated CSS style sheet, return. + if (!sheet()) + return; + + // 2. If the given value is true, set this's associated CSS style sheet's disabled flag. + // Otherwise, unset this's associated CSS style sheet's disabled flag. + sheet()->set_disabled(disabled); +} + // https://www.w3.org/TR/cssom/#dom-linkstyle-sheet CSS::CSSStyleSheet* HTMLStyleElement::sheet() { diff --git a/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.h b/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.h index 69d6e17503c..86cb2c4ca16 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.h @@ -23,6 +23,9 @@ public: virtual void inserted() override; virtual void removed_from(Node*) override; + bool disabled(); + void set_disabled(bool disabled); + CSS::CSSStyleSheet* sheet(); CSS::CSSStyleSheet const* sheet() const; diff --git a/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.idl b/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.idl index a6311e7cc2d..2ff7d2de755 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.idl +++ b/Userland/Libraries/LibWeb/HTML/HTMLStyleElement.idl @@ -7,7 +7,7 @@ interface HTMLStyleElement : HTMLElement { [HTMLConstructor] constructor(); - [FIXME] attribute boolean disabled; + attribute boolean disabled; [Reflect, CEReactions] attribute DOMString media; [FIXME, SameObject, PutForwards=value] readonly attribute DOMTokenList blocking;