Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / imported / web-platform-tests / custom-elements / instantiating-custom-elements / custom-element-constructor-node-document.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>Custom element constructor sets owner document to the document, where custom element type is registered</title>
5 <meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
6 <meta name="assert" content="Custom element constructor sets custom element node document to the document, where custom element type is registered">
7 <link rel="help" href="http://www.w3.org/TR/custom-elements/#instantiating-custom-elements">
8 <script src="../../../../resources/testharness.js"></script>
9 <script src="../../../../resources/testharnessreport.js"></script>
10 <script src="../testcommon.js"></script>
11 <link rel="stylesheet" href="../../../../resources/testharness.css">
12 </head>
13 <body>
14 <div id="log"></div>
15 <script>
16 test(function() {
17     var doc = newHTMLDocument();
18     var GeneratedConstructor = doc.registerElement('x-a');
19     var customElement = new GeneratedConstructor();
20     assert_equals(customElement.ownerDocument, doc,
21         'Custom element owner document should be the document, where custom element ' +
22         'type is registered');
23 }, 'Custom element constructor sets owner document to the document, where custom element ' +
24     'type is registered');
25
26
27 test(function() {
28     var doc = newHTMLDocument();
29     HTML5_ELEMENTS.forEach(function(tagName) {
30         var obj = doc.createElement(tagName);
31         var name = 'x-b-' + tagName;
32         var proto = Object.create(obj.constructor.prototype);
33         var GeneratedConstructor = doc.registerElement(name, {
34             prototype: proto,
35             extends: tagName
36         });
37         var customElement = new GeneratedConstructor();
38
39         assert_equals(customElement.ownerDocument, doc,
40             'Custom element owner document should be the document, where custom element ' +
41             'type is registered');
42     });
43 }, 'Custom element constructor sets owner document to the document, where custom element ' +
44     'type is registered. Test constructor of extended HTML element');
45
46
47 test(function() {
48     var doc = newHTMLDocument();
49     var sharedRegistryDocument = doc.implementation.createHTMLDocument('Document 2');
50
51     var name = 'x-c';
52     var GeneratedConstructor = doc.registerElement(name);
53     var customElement = new GeneratedConstructor();
54     assert_equals(customElement.ownerDocument, doc,
55         'Custom element owner document should be the document, where custom element ' +
56         'type is registered');
57
58     var name2 = 'x-d';
59     var GeneratedConstructor2 = sharedRegistryDocument.registerElement(name2);
60     var customElement2 = new GeneratedConstructor2();
61     assert_equals(customElement2.ownerDocument, sharedRegistryDocument,
62         'Custom element owner document should be the document, where custom element ' +
63         'type is registered');
64 }, 'Custom element constructor sets owner document to the document, where custom element ' +
65     'type is registered. Test different documents with shared registry');
66
67
68 test(function() {
69     var doc = newHTMLDocument();
70     var sharedRegistryDocument = doc.implementation.createHTMLDocument('Document 2');
71     HTML5_ELEMENTS.forEach(function(tagName) {
72         var obj = doc.createElement(tagName);
73         var name = 'x-e-' + tagName;
74         var proto = Object.create(obj.constructor.prototype);
75         var GeneratedConstructor = doc.registerElement(name, {
76             prototype: proto,
77             extends: tagName
78         });
79         var customElement = new GeneratedConstructor();
80         assert_equals(customElement.ownerDocument, doc,
81             'Custom element owner document should be the document, where custom element ' +
82             'type is registered');
83
84         var obj2 = sharedRegistryDocument.createElement(tagName);
85         var name2 = 'x-f-' + tagName;
86         var proto2 = Object.create(obj2.constructor.prototype);
87         var GeneratedConstructor2 = sharedRegistryDocument.registerElement(name2, {
88             prototype: proto2,
89             extends: tagName
90         });
91         var customElement2 = new GeneratedConstructor2();
92         assert_equals(customElement2.ownerDocument, sharedRegistryDocument,
93             'Custom element owner document should be the document, where custom element ' +
94             'type is registered');
95     });
96 }, 'Custom element constructor sets owner document to the document, where custom element ' +
97     'type is registered. Test constructor of extended HTML element for different documents ' +
98     'with shared registry');
99 </script>
100 </body>
101 </html>