Explorar el Código

LibWeb: Implement HTMLStyleElement.disabled

Jamie Mansfield hace 1 año
padre
commit
1114bbf2f1

+ 28 - 0
Userland/Libraries/LibWeb/HTML/HTMLStyleElement.cpp

@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
  * Copyright (c) 2021, the SerenityOS developers.
+ * Copyright (c) 2024, Jamie Mansfield <jmansfield@cadixdev.org>
  *
  * 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()
 {

+ 3 - 0
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;
 

+ 1 - 1
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;