Skip to content

Commit

Permalink
Add/remove class methods should not accept invalid values
Browse files Browse the repository at this point in the history
Fixes metal#95
  • Loading branch information
ipeychev committed May 12, 2015
1 parent 3fc820e commit d1d53ce
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/dom/dom.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {
Expand Down
10 changes: 10 additions & 0 deletions test/src/dom/dom.js
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down

0 comments on commit d1d53ce

Please sign in to comment.