| Index: third_party/WebKit/LayoutTests/custom-elements/spec/create-element-defined-synchronous.html
|
| diff --git a/third_party/WebKit/LayoutTests/custom-elements/spec/create-element-defined-synchronous.html b/third_party/WebKit/LayoutTests/custom-elements/spec/create-element-defined-synchronous.html
|
| index 49de1f0ee4bad82f16081e5e96e2e0d968eb75fc..d18c14ca3c23110b995a92723aba571adfadcd4f 100644
|
| --- a/third_party/WebKit/LayoutTests/custom-elements/spec/create-element-defined-synchronous.html
|
| +++ b/third_party/WebKit/LayoutTests/custom-elements/spec/create-element-defined-synchronous.html
|
| @@ -11,33 +11,68 @@ const expectTypeError = TypeError.prototype;
|
| const expectNotSupportedError = 'NOT_SUPPORTED_ERR';
|
|
|
| // https://dom.spec.whatwg.org/#concept-create-element
|
| +// 5. If definition is non-null and the definition represents a customized built-in element:
|
| +// 5.3. If the synchronous custom elements flag is set:
|
| // 6. If definition is non-null, then:
|
| // 6.1. If the synchronous custom elements flag is set:
|
|
|
| test_create_element_synchronous(
|
| 'createElement(): ',
|
| - (w, constructor, options) => {
|
| - w.customElements.define('a-a', constructor, options);
|
| - return w.document.createElement('a-a');
|
| + (w, constructor, opt_tag) => {
|
| + if (!opt_tag) {
|
| + w.customElements.define('a-a', constructor);
|
| + return w.document.createElement('a-a');
|
| + } else {
|
| + let extend_options = { extends: opt_tag };
|
| + w.customElements.define('a-a', constructor, extend_options);
|
| + return w.document.createElement(opt_tag, { is: 'a-a' });
|
| + }
|
| });
|
|
|
| test_create_element_synchronous(
|
| 'createElementNS(): ',
|
| - (w, constructor, options) => {
|
| - w.customElements.define('a-a', constructor, options);
|
| - return w.document.createElementNS('http://www.w3.org/1999/xhtml', 'a-a');
|
| + (w, constructor, opt_tag) => {
|
| + if (!opt_tag) {
|
| + w.customElements.define('a-a', constructor);
|
| + return w.document.createElementNS('http://www.w3.org/1999/xhtml', 'a-a');
|
| + } else {
|
| + let extend_options = { extends: opt_tag };
|
| + w.customElements.define('a-a', constructor, extend_options);
|
| + return w.document.createElementNS('http://www.w3.org/1999/xhtml', opt_tag, { is: 'a-a' });
|
| + }
|
| });
|
|
|
| function test_create_element_synchronous(description, define_and_create_element) {
|
| test_with_window((w) => {
|
| let is_constructed = false;
|
| - define_and_create_element(w, class extends w.HTMLElement {
|
| + class A extends w.HTMLElement {
|
| constructor() { super(); is_constructed = true; }
|
| - });
|
| + }
|
| + let o = define_and_create_element(w, A);
|
| assert_true(is_constructed, 'custom constructor ran');
|
| + assert_equals(o.constructor, A);
|
| }, `${description}Pre-flight check should succeed`);
|
|
|
| test_with_window((w) => {
|
| + let is_constructed = false;
|
| + class A extends w.HTMLDivElement {
|
| + constructor() { super(); is_constructed = true; }
|
| + }
|
| + let o = define_and_create_element(w, A, 'div');
|
| + assert_true(is_constructed, 'custom constructor ran');
|
| + assert_equals(o.constructor, A);
|
| + }, `${description}5. Create a customized built-in element`);
|
| +
|
| + test_with_window((w) => {
|
| + let is_constructed = false;
|
| + class A extends w.HTMLElement {
|
| + constructor() { super(); is_constructed = true; }
|
| + }
|
| + define_and_create_element(w, A);
|
| + assert_true(is_constructed, 'custom constructor ran');
|
| + }, `${description}6. Create an autonomous custom element`);
|
| +
|
| + test_with_window((w) => {
|
| const err = new Error('check this is reported');
|
| err.name = 'reported';
|
| assert_reports(w, err, () => {
|
|
|