From d1d53cecea52a2da8884c729437767d05d93094f Mon Sep 17 00:00:00 2001 From: Iliyan Peychev Date: Tue, 12 May 2015 18:11:41 +0200 Subject: [PATCH] Add/remove class methods should not accept invalid values Fixes #95 --- src/dom/dom.js | 8 ++++++++ test/src/dom/dom.js | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/dom/dom.js b/src/dom/dom.js index 5bd1781f..c9340d44 100644 --- a/src/dom/dom.js +++ b/src/dom/dom.js @@ -11,6 +11,10 @@ class dom { * @param {string} classes CSS classes to add. */ static addClasses(element, classes) { + if (!core.isObject(element) || !core.isString(classes)) { + return; + } + if ('classList' in element) { dom.addClassesWithNative_(element, classes); } else { @@ -297,6 +301,10 @@ class dom { * @param {string} classes CSS classes to remove. */ static removeClasses(element, classes) { + if (!core.isObject(element) || !core.isString(classes)) { + return; + } + if ('classList' in element) { dom.removeClassesWithNative_(element, classes); } else { diff --git a/test/src/dom/dom.js b/test/src/dom/dom.js index a5ad3426..a6cdb6d6 100644 --- a/test/src/dom/dom.js +++ b/test/src/dom/dom.js @@ -51,6 +51,16 @@ describe('dom', function() { dom.removeClassesWithoutNative_(element, 'class2'); assert.ok(!dom.hasClass(element, 'class2')); }); + + it('should do nothing if element or classes are not object and string', function() { + var element = document.createElement('div'); + dom.addClasses(element); + assert.strictEqual(element.className, ''); + + dom.addClasses(element, 'class1'); + dom.removeClasses(element); + assert.isTrue(dom.hasClass(element, 'class1')); + }); }); describe('manipulation', function() {