4 <title>Document.createElement() must enqueue created callback for registered custom element type</title>
5 <meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
6 <meta name="assert" content="Document.createElement() must enqueue created callback for registered custom element type">
7 <link rel="help" href="http://www.w3.org/TR/custom-elements/#extensions-to-document-interface-to-instantiate">
8 <link rel="help" href="http://www.w3.org/TR/custom-elements/#types-of-callbacks">
9 <script src="../../../../../resources/testharness.js"></script>
10 <script src="../../../../../resources/testharnessreport.js"></script>
11 <script src="../../testcommon.js"></script>
12 <link rel="stylesheet" href="../../../../../resources/testharness.css">
18 var doc = newHTMLDocument();
19 var proto = newHTMLElementPrototype();
22 doc.registerElement(name, {prototype: proto});
23 var customElement = doc.createElement(name);
24 assert_equals(proto.createdCallbackCalledCounter, 1,
25 'Callback created should be enqueued by Document.createElement()');
26 }, 'Test Document.createElement() without typeExtension argument enqueues created callback');
30 var doc = newHTMLDocument();
31 var proto = newHTMLElementPrototype();
34 doc.registerElement(name, {prototype: proto});
35 var customElement = doc.createElement(name, name);
36 assert_equals(proto.createdCallbackCalledCounter, 1,
37 'Callback created should be enqueued by Document.createElement()');
38 }, 'Test Document.createElement() with typeExtension argument enqueues created callback');
42 var doc = newHTMLDocument();
43 var proto = newHTMLElementPrototype();
45 var customElement = doc.createElement(name);
46 assert_equals(proto.createdCallbackCalledCounter, 0,
47 'Document.createElement() should not enqueue created callback ' +
48 'for unresolved custom element');
50 doc.registerElement(name, {prototype: proto});
51 assert_equals(proto.createdCallbackCalledCounter, 1,
52 'Callback created should be called after custom element is registered');
53 }, 'Document.createElement() should not enqueue created callback ' +
54 'for unresolved custom element');
58 var doc = newHTMLDocument();
59 HTML5_ELEMENTS.forEach(function(tagName) {
60 var obj = doc.createElement(tagName);
61 var name = 'x-d-' + tagName;
62 var proto = newCustomElementPrototype(Object.create(obj.constructor.prototype));
63 doc.registerElement(name, {prototype: proto, extends: tagName});
64 var customElement = doc.createElement(tagName, name);
66 assert_equals(proto.createdCallbackCalledCounter, 1,
67 'Callback created should be enqueued by Document.createElement()');
69 }, 'Test Document.createElement() enqueues created callback for custom elements ' +
70 'that are extensions of HTML5 elements');