OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="../../../resources/testharness.js"></script> | 2 <script src="../../../resources/testharness.js"></script> |
3 <script src="../../../resources/testharnessreport.js"></script> | 3 <script src="../../../resources/testharnessreport.js"></script> |
4 <script src="test-harness-utils.js"></script> | 4 <script src="test-harness-utils.js"></script> |
5 <body> | 5 <body> |
6 <script> | 6 <script> |
7 function TestRegistrationContextIsolation(windowA, documentA, | 7 function TestRegistrationContextIsolation(windowA, documentA, |
8 windowB, documentB) { | 8 windowB, documentB) { |
9 this.windowA = windowA; | 9 this.windowA = windowA; |
10 this.documentA = documentA; | 10 this.documentA = documentA; |
(...skipping 12 matching lines...) Expand all Loading... |
23 testRegisterInAInstantiateInB_shouldNotActivateDefinition = function () { | 23 testRegisterInAInstantiateInB_shouldNotActivateDefinition = function () { |
24 | 24 |
25 // Test that element x-u registered in document A is not activated when | 25 // Test that element x-u registered in document A is not activated when |
26 // x-u is parsed in document B | 26 // x-u is parsed in document B |
27 | 27 |
28 var protoU = Object.create(this.windowA.HTMLElement.prototype); | 28 var protoU = Object.create(this.windowA.HTMLElement.prototype); |
29 protoU.createdCallback = function () { | 29 protoU.createdCallback = function () { |
30 assert_unreached('creating an x-u in a different context should ' + | 30 assert_unreached('creating an x-u in a different context should ' + |
31 'not invoke a callback in this context'); | 31 'not invoke a callback in this context'); |
32 }; | 32 }; |
33 this.documentA.register('x-u', {prototype: protoU}); | 33 this.documentA.registerElement('x-u', {prototype: protoU}); |
34 | 34 |
35 var container = this.documentB.createElement('div'); | 35 var container = this.documentB.createElement('div'); |
36 container.innerHTML = '<x-u></x-u>'; | 36 container.innerHTML = '<x-u></x-u>'; |
37 // if protoU.createdCallback is not invoked; this passed | 37 // if protoU.createdCallback is not invoked; this passed |
38 }; | 38 }; |
39 | 39 |
40 TestRegistrationContextIsolation.prototype. | 40 TestRegistrationContextIsolation.prototype. |
41 testRegisterSameName_definitionsShouldNotConflict = function () { | 41 testRegisterSameName_definitionsShouldNotConflict = function () { |
42 // Test that registering two different custom elements with the same | 42 // Test that registering two different custom elements with the same |
43 // tag name in each document doesn't lead to any crossed wires | 43 // tag name in each document doesn't lead to any crossed wires |
44 | 44 |
45 var invocations = []; | 45 var invocations = []; |
46 function created(name) { | 46 function created(name) { |
47 return function () { | 47 return function () { |
48 invocations.push('created ' + name + ' in ' + this.dataset.doc); | 48 invocations.push('created ' + name + ' in ' + this.dataset.doc); |
49 }; | 49 }; |
50 } | 50 } |
51 | 51 |
52 var protoAV = Object.create(this.windowA.HTMLElement.prototype); | 52 var protoAV = Object.create(this.windowA.HTMLElement.prototype); |
53 protoAV.createdCallback = created('document A\'s element V'); | 53 protoAV.createdCallback = created('document A\'s element V'); |
54 this.documentA.register('x-v', {prototype: protoAV}); | 54 this.documentA.registerElement('x-v', {prototype: protoAV}); |
55 | 55 |
56 var protoBV = Object.create(this.windowB.HTMLElement.prototype); | 56 var protoBV = Object.create(this.windowB.HTMLElement.prototype); |
57 protoBV.createdCallback = created('document B\'s element V'); | 57 protoBV.createdCallback = created('document B\'s element V'); |
58 this.documentB.register('x-v', {prototype: protoBV}); | 58 this.documentB.registerElement('x-v', {prototype: protoBV}); |
59 | 59 |
60 var containerB = this.documentB.createElement('div'); | 60 var containerB = this.documentB.createElement('div'); |
61 containerB.innerHTML = '<x-v data-doc="document B"></x-v>'; | 61 containerB.innerHTML = '<x-v data-doc="document B"></x-v>'; |
62 var containerA = this.documentA.createElement('div'); | 62 var containerA = this.documentA.createElement('div'); |
63 containerA.innerHTML = '<x-v data-doc="document A"></x-v>'; | 63 containerA.innerHTML = '<x-v data-doc="document A"></x-v>'; |
64 | 64 |
65 assert_array_equals( | 65 assert_array_equals( |
66 invocations, | 66 invocations, |
67 ['created document B\'s element V in document B', | 67 ['created document B\'s element V in document B', |
68 'created document A\'s element V in document A'], | 68 'created document A\'s element V in document A'], |
(...skipping 12 matching lines...) Expand all Loading... |
81 'registered in document B'); | 81 'registered in document B'); |
82 }; | 82 }; |
83 | 83 |
84 TestRegistrationContextIsolation.prototype. | 84 TestRegistrationContextIsolation.prototype. |
85 testRegisterSameName_lazyWrappingShouldNotSharePrototypes = function () { | 85 testRegisterSameName_lazyWrappingShouldNotSharePrototypes = function () { |
86 // Registering two different custom elements with the same tag | 86 // Registering two different custom elements with the same tag |
87 // name should not mix up prototypes. These do not have any | 87 // name should not mix up prototypes. These do not have any |
88 // callbacks, to try to tickle lazy wrapping. | 88 // callbacks, to try to tickle lazy wrapping. |
89 | 89 |
90 var protoAW = Object.create(this.windowA.HTMLElement.prototype); | 90 var protoAW = Object.create(this.windowA.HTMLElement.prototype); |
91 this.documentA.register('x-w', {prototype: protoAW}); | 91 this.documentA.registerElement('x-w', {prototype: protoAW}); |
92 | 92 |
93 var protoBW = Object.create(this.windowB.HTMLElement.prototype); | 93 var protoBW = Object.create(this.windowB.HTMLElement.prototype); |
94 protoBW.createdCallback = function () {}; | 94 protoBW.createdCallback = function () {}; |
95 this.documentB.register('x-w', {prototype: protoBW}); | 95 this.documentB.registerElement('x-w', {prototype: protoBW}); |
96 | 96 |
97 var elementA = this.documentA.createElement('x-w'); | 97 var elementA = this.documentA.createElement('x-w'); |
98 var elementB = this.documentB.createElement('x-w'); | 98 var elementB = this.documentB.createElement('x-w'); |
99 | 99 |
100 assert_equals( | 100 assert_equals( |
101 Object.getPrototypeOf(elementB), protoBW, | 101 Object.getPrototypeOf(elementB), protoBW, |
102 'the prototype of element W in document B should be the prototype ' + | 102 'the prototype of element W in document B should be the prototype ' + |
103 'registered in document B'); | 103 'registered in document B'); |
104 | 104 |
105 assert_equals( | 105 assert_equals( |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 frame.contentWindow, documentA, | 142 frame.contentWindow, documentA, |
143 frame.contentWindow, documentB); | 143 frame.contentWindow, documentB); |
144 tester.testRegistrationContextIsNotShared(); | 144 tester.testRegistrationContextIsNotShared(); |
145 frame.remove(); | 145 frame.remove(); |
146 t.done(); | 146 t.done(); |
147 })); | 147 })); |
148 | 148 |
149 })(); | 149 })(); |
150 | 150 |
151 </script> | 151 </script> |
OLD | NEW |