diff --git a/engine/core/dom/DOMTokenList.cpp b/engine/core/dom/DOMTokenList.cpp index 001af3a2d4f..0fea487dd3e 100644 --- a/engine/core/dom/DOMTokenList.cpp +++ b/engine/core/dom/DOMTokenList.cpp @@ -83,6 +83,11 @@ void DOMTokenList::setValue(const AtomicString& value) m_element->setAttribute(HTMLNames::classAttr, value); } +void DOMTokenList::clear() +{ + m_element->removeAttribute(HTMLNames::classAttr); +} + bool DOMTokenList::validateToken(const String& token, ExceptionState& exceptionState) { if (token.isEmpty()) { diff --git a/engine/core/dom/DOMTokenList.h b/engine/core/dom/DOMTokenList.h index 4d9dbb4139f..f73ef53b946 100644 --- a/engine/core/dom/DOMTokenList.h +++ b/engine/core/dom/DOMTokenList.h @@ -62,6 +62,7 @@ public: void remove(const AtomicString&, ExceptionState&); bool toggle(const AtomicString&, ExceptionState&); bool toggle(const AtomicString&, bool force, ExceptionState&); + void clear(); const AtomicString& toString() const { return value(); } diff --git a/engine/core/dom/DOMTokenList.idl b/engine/core/dom/DOMTokenList.idl index 43ecc00d67c..3ca3d366978 100644 --- a/engine/core/dom/DOMTokenList.idl +++ b/engine/core/dom/DOMTokenList.idl @@ -32,6 +32,8 @@ [RaisesException, CustomElementCallbacks] void remove(DOMString... tokens); [RaisesException, CustomElementCallbacks] boolean toggle(DOMString token, optional boolean force); + void clear(); + [NotEnumerable] stringifier; }; diff --git a/tests/lowlevel/classlist-expected.txt b/tests/lowlevel/classlist-expected.txt index 523cc429d69..a924cfc8d83 100644 --- a/tests/lowlevel/classlist-expected.txt +++ b/tests/lowlevel/classlist-expected.txt @@ -1,12 +1,13 @@ -Running 8 tests +Running 9 tests ok 1 Class list should add multiple classes ok 2 Class list should add classes in order ok 3 Class list should remove classes ok 4 Class list should remove multiple classes -ok 5 Class list should check for classes -ok 6 Class list should get classes by index -ok 7 Class list should toggle classes -ok 8 Class list should dynamically update style -8 tests -8 pass +ok 5 Class list should clear all classes +ok 6 Class list should check for classes +ok 7 Class list should get classes by index +ok 8 Class list should toggle classes +ok 9 Class list should dynamically update style +9 tests +9 pass 0 fail diff --git a/tests/lowlevel/classlist.sky b/tests/lowlevel/classlist.sky index 1622fa4ac17..853a817823e 100644 --- a/tests/lowlevel/classlist.sky +++ b/tests/lowlevel/classlist.sky @@ -48,6 +48,14 @@ describe("Class list", function() { assert.equal(target.classList.toString(), "second"); }); + it("should clear all classes", function() { + target.classList.add("first"); + target.classList.add("second"); + target.classList.clear(); + assert.equal(target.classList.toString(), ""); + assert.isFalse(target.hasAttribute("class")); + }); + it("should check for classes", function() { target.classList.add("first", "second", "third"); assert.isTrue(target.classList.contains("first"));