| Index: third_party/WebKit/LayoutTests/imported/wpt/custom-elements/custom-elements-registry/define.html
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/custom-elements/custom-elements-registry/define.html b/third_party/WebKit/LayoutTests/imported/wpt/custom-elements/custom-elements-registry/define.html
|
| index 670c963001b0b560917e35d1f6e41e115678704c..76ab2adfd7454080ea059fdebef9f457d7585818 100644
|
| --- a/third_party/WebKit/LayoutTests/imported/wpt/custom-elements/custom-elements-registry/define.html
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/custom-elements/custom-elements-registry/define.html
|
| @@ -56,7 +56,26 @@
|
| }, `If constructor is ${t[0]}, should throw a TypeError`);
|
| });
|
|
|
| - // 2. If name is not a valid custom element name,
|
| + // 2. If constructor is an interface object or named constructor whose corresponding
|
| + // interface either is HTMLElement or has HTMLElement in its set of inherited interfaces,
|
| + // throw a TypeError and abort these steps.
|
| + [
|
| + [ 'HTMLElement', HTMLElement ],
|
| + [ 'HTMLButtonElement', HTMLButtonElement ],
|
| + [ 'HTMLImageElement', HTMLImageElement ],
|
| + [ 'HTMLMediaElement', HTMLMediaElement ],
|
| + [ 'Image' , Image ],
|
| + [ 'Audio' , Audio ],
|
| + [ 'Option', Option ],
|
| + ].forEach(t => {
|
| + test(() => {
|
| + assert_throws(expectTypeError, () => {
|
| + customElements.define(`test-define-constructor-${t[0]}`, t[1]);
|
| + });
|
| + }, `If constructor is ${t[0]}, should throw a TypeError`);
|
| + });
|
| +
|
| + // 3. If name is not a valid custom element name,
|
| // then throw a SyntaxError and abort these steps.
|
| let validCustomElementNames = [
|
| // [a-z] (PCENChar)* '-' (PCENChar)*
|
| @@ -110,7 +129,7 @@
|
| }, `Element names: defining an element named ${name} should throw a SyntaxError`);
|
| });
|
|
|
| - // 3. If this CustomElementsRegistry contains an entry with name name,
|
| + // 4. If this CustomElementsRegistry contains an entry with name name,
|
| // then throw a NotSupportedError and abort these steps.
|
| test(() => {
|
| customElements.define('test-define-dup-name', class {});
|
| @@ -119,7 +138,7 @@
|
| });
|
| }, 'If the name is already defined, should throw a NotSupportedError');
|
|
|
| - // 4. If this CustomElementsRegistry contains an entry with constructor constructor,
|
| + // 6. If this CustomElementsRegistry contains an entry with constructor constructor,
|
| // then throw a NotSupportedError and abort these steps.
|
| test(() => {
|
| class TestDupConstructor {};
|
| @@ -129,7 +148,7 @@
|
| });
|
| }, 'If the constructor is already defined, should throw a NotSupportedError');
|
|
|
| - // 7.1. If extends is a valid custom element name,
|
| + // 10.1. If extends is a valid custom element name,
|
| // then throw a NotSupportedError.
|
| validCustomElementNames.forEach(name => {
|
| test(() => {
|
| @@ -139,7 +158,7 @@
|
| }, `If extends is ${name}, should throw a NotSupportedError`);
|
| });
|
|
|
| - // 7.2. If the element interface for extends and the HTML namespace is HTMLUnknownElement
|
| + // 10.2. If the element interface for extends and the HTML namespace is HTMLUnknownElement
|
| // (e.g., if extends does not indicate an element definition in this specification),
|
| // then throw a NotSupportedError.
|
| [
|
| @@ -159,19 +178,7 @@
|
| }, `If extends is ${name}, should throw a NotSupportedError`);
|
| });
|
|
|
| - // 8. Let observedAttributesIterable be Get(constructor, "observedAttributes").
|
| - // Rethrow any exceptions.
|
| - test(() => {
|
| - class C {
|
| - static get observedAttributes() { throw_rethrown_error(); }
|
| - attributeChangedCallback() {}
|
| - }
|
| - assert_rethrown(() => {
|
| - customElements.define('test-define-observedattributes-rethrow', C);
|
| - });
|
| - }, 'If constructor.observedAttributes throws, should rethrow');
|
| -
|
| - // 10. Let prototype be Get(constructor, "prototype"). Rethrow any exceptions.
|
| + // 13.1. Let prototype be Get(constructor, "prototype"). Rethrow any exceptions.
|
| function assert_rethrown(func, description) {
|
| assert_throws({ name: 'rethrown' }, func, description);
|
| }
|
| @@ -190,7 +197,8 @@
|
| customElements.define('test-define-constructor-prototype-rethrow', BadConstructor);
|
| });
|
| }, 'If constructor.prototype throws, should rethrow');
|
| - // 11. If Type(prototype) is not Object,
|
| +
|
| + // 13.2. If Type(prototype) is not Object,
|
| // then throw a TypeError exception.
|
| test(() => {
|
| const c = (function () { }).bind({}); // prototype is undefined.
|
| @@ -206,15 +214,21 @@
|
| });
|
| }, 'If Type(constructor.prototype) is string, should throw a TypeError');
|
|
|
| - // 12. Let connectedCallback be Get(prototype, "connectedCallback"). Rethrow any exceptions.
|
| - // 13. If connectedCallback is not undefined, and IsCallable(connectedCallback) is false,
|
| - // then throw a TypeError exception.
|
| - // 14. Let disconnectedCallback be Get(prototype, "disconnectedCallback"). Rethrow any exceptions.
|
| - // 15. If disconnectedCallback is not undefined, and IsCallable(disconnectedCallback) is false,
|
| - // then throw a TypeError exception.
|
| - // 16. Let attributeChangedCallback be Get(prototype, "attributeChangedCallback"). Rethrow any exceptions.
|
| - // 17. If attributeChangedCallback is not undefined, and IsCallable(attributeChangedCallback) is false,
|
| - // then throw a TypeError exception.
|
| + // 13.4. Let connectedCallbackValue be Get(prototype, "connectedCallback").
|
| + // Rethrow any exceptions.
|
| + // 13.5. If connectedCallbackValue is not undefined, then set connectedCallback
|
| + // to the result of converting connectedCallbackValue to the Web IDL Function callback type.
|
| + // Rethrow any exceptions.
|
| + // 13.6. Let disconnectedCallbackValue be Get(prototype, "disconnectedCallback").
|
| + // Rethrow any exceptions.
|
| + // 13.7. If disconnectedCallbackValue is not undefined, then set disconnectedCallback
|
| + // to the result of converting disconnectedCallbackValue to the Web IDL Function callback type.
|
| + // Rethrow any exceptions.
|
| + // 13.8. Let attributeChangedCallbackValue be Get(prototype, "attributeChangedCallback").
|
| + // Rethrow any exceptions.
|
| + // 13.9. If attributeChangedCallbackValue is not undefined, then set attributeChangedCallback
|
| + // to the result of converting attributeChangedCallbackValue to the Web IDL Function callback type.
|
| + // Rethrow any exceptions.
|
| [
|
| 'connectedCallback',
|
| 'disconnectedCallback',
|
|
|