Skip to content
This repository was archived by the owner on Sep 20, 2019. It is now read-only.

Commit 758babf

Browse files
Jeremy Banksdfreedm
authored andcommitted
Ensures extended element names are case-insensitive during registration (#507)
* Update Custom Elements test to demonstrate case-sensitivity bug, now failing. * Ensures extended name is treated case-insensitively. Tests now pass.
1 parent 4d3355f commit 758babf

2 files changed

Lines changed: 6 additions & 2 deletions

File tree

src/CustomElements/register.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ function register(name, options) {
9191
}
9292
// record name
9393
definition.__name = name.toLowerCase();
94+
// ensure extended name is also treated case-insensitively
95+
if (definition.extends) {
96+
definition.extends = definition.extends.toLowerCase();
97+
}
9498
// ensure a lifecycle object so we don't have to null test it
9599
definition.lifecycle = definition.lifecycle || {};
96100
// build a list of ancestral custom elements (for native base detection)

tests/CustomElements/js/customElements.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,9 +183,9 @@ suite('customElements', function() {
183183
});
184184

185185
test('document.registerElement with type extension treats names as case insensitive', function() {
186-
var proto = {prototype: Object.create(HTMLButtonElement.prototype), extends: 'button'};
186+
var proto = {prototype: Object.create(HTMLButtonElement.prototype), extends: 'butTON'};
187187
proto.prototype.isXCase = true;
188-
var XCase = document.registerElement('X-EXTEND-CASE', proto);
188+
var XCase = document.registerElement('X-extend-CASE', proto);
189189
// createElement
190190
var x = document.createElement('button', 'X-EXTEND-CASE');
191191
assert.equal(x.isXCase, true);

0 commit comments

Comments
 (0)