| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <script src="../../../resources/js-test.js"></script> | 2 <script src="../../../resources/js-test.js"></script> |
| 3 <script src="testutils.js"></script> | 3 <script src="testutils.js"></script> |
| 4 <body> | 4 <body> |
| 5 <script> | 5 <script> |
| 6 description('Tests that Custom Elements does not induce leaks'); | 6 description('Tests that Custom Elements does not induce leaks'); |
| 7 var jsTestIsAsync = true; | 7 var jsTestIsAsync = true; |
| 8 | 8 |
| 9 if (!window.internals) | 9 if (!window.internals) |
| 10 testFailed('this test requires window.internals'); | 10 testFailed('this test requires window.internals'); |
| 11 | 11 |
| 12 function step1() { | 12 function step1() { |
| 13 debug('Test a custom element with minimal capturing'); | 13 debug('Test a custom element with minimal capturing'); |
| 14 | 14 |
| 15 withFrame(function (frame) { | 15 withFrame(function (frame) { |
| 16 // Create some upgrade candidates | 16 // Create some upgrade candidates |
| 17 frame.contentDocument.body.innerHTML = '<x-x><x-x></x-x></x-x>'; | 17 frame.contentDocument.body.innerHTML = '<x-x><x-x></x-x></x-x>'; |
| 18 | 18 |
| 19 // Register a custom element | 19 // Register a custom element |
| 20 | 20 |
| 21 var proto = Object.create(frame.contentWindow.HTMLElement.prototype); | 21 var proto = Object.create(frame.contentWindow.HTMLElement.prototype); |
| 22 proto.createdCallback = function () {}; | 22 proto.createdCallback = function () {}; |
| 23 proto.enteredViewCallback = function () {}; | 23 proto.attachedCallback = function () {}; |
| 24 proto.leftViewCallback = function () {}; | 24 proto.detachedCallback = function () {}; |
| 25 proto.attributeChangedCallback = function () {}; | 25 proto.attributeChangedCallback = function () {}; |
| 26 | 26 |
| 27 var ctor = frame.contentDocument.register('x-x', {prototype: proto}); | 27 var ctor = frame.contentDocument.registerElement('x-x', {prototype: prot
o}); |
| 28 | 28 |
| 29 // Create some instances | 29 // Create some instances |
| 30 | 30 |
| 31 frame.contentDocument.createElement('x-x'); | 31 frame.contentDocument.createElement('x-x'); |
| 32 frame.contentDocument.body.appendChild(new ctor()); | 32 frame.contentDocument.body.appendChild(new ctor()); |
| 33 frame.contentDocument.body.firstElementChild.innerHTML = '<x-x></x-x>'; | 33 frame.contentDocument.body.firstElementChild.innerHTML = '<x-x></x-x>'; |
| 34 | 34 |
| 35 // Watch to see that some objects die | 35 // Watch to see that some objects die |
| 36 | 36 |
| 37 observations = { | 37 observations = { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 59 // the prototype, constructor, document, window and frame. | 59 // the prototype, constructor, document, window and frame. |
| 60 | 60 |
| 61 var contentWindow = frame.contentWindow; | 61 var contentWindow = frame.contentWindow; |
| 62 var contentDocument = frame.contentDocument; | 62 var contentDocument = frame.contentDocument; |
| 63 | 63 |
| 64 var proto = Object.create(contentWindow.HTMLElement.prototype); | 64 var proto = Object.create(contentWindow.HTMLElement.prototype); |
| 65 proto.attributeChangedCallback = function () { | 65 proto.attributeChangedCallback = function () { |
| 66 var goodies = [proto, ctor, contentDocument, contentWindow, frame]; | 66 var goodies = [proto, ctor, contentDocument, contentWindow, frame]; |
| 67 goodies.forEach(function (loot) { console.log(loot); }); | 67 goodies.forEach(function (loot) { console.log(loot); }); |
| 68 }; | 68 }; |
| 69 var ctor = contentDocument.register('x-x', {prototype: proto}); | 69 var ctor = contentDocument.registerElement('x-x', {prototype: proto}); |
| 70 | 70 |
| 71 // Create an instance; put it in the document | 71 // Create an instance; put it in the document |
| 72 var elem = new ctor(); | 72 var elem = new ctor(); |
| 73 contentDocument.body.appendChild(elem); | 73 contentDocument.body.appendChild(elem); |
| 74 | 74 |
| 75 // Watch to see that some objects die | 75 // Watch to see that some objects die |
| 76 | 76 |
| 77 observations = { | 77 observations = { |
| 78 'frame': internals.observeGC(frame), | 78 'frame': internals.observeGC(frame), |
| 79 'window': internals.observeGC(contentWindow), | 79 'window': internals.observeGC(contentWindow), |
| (...skipping 17 matching lines...) Expand all Loading... |
| 97 // the prototype, constructor, document, window and frame. | 97 // the prototype, constructor, document, window and frame. |
| 98 | 98 |
| 99 var contentWindow = frame.contentWindow; | 99 var contentWindow = frame.contentWindow; |
| 100 var contentDocument = frame.contentDocument; | 100 var contentDocument = frame.contentDocument; |
| 101 | 101 |
| 102 var proto = Object.create(contentWindow.HTMLElement.prototype); | 102 var proto = Object.create(contentWindow.HTMLElement.prototype); |
| 103 proto.attributeChangedCallback = function () { | 103 proto.attributeChangedCallback = function () { |
| 104 var goodies = [proto, ctor, contentDocument, contentWindow, frame]; | 104 var goodies = [proto, ctor, contentDocument, contentWindow, frame]; |
| 105 goodies.forEach(function (loot) { console.log(loot); }); | 105 goodies.forEach(function (loot) { console.log(loot); }); |
| 106 }; | 106 }; |
| 107 var ctor = contentDocument.register('x-x', {prototype: proto}); | 107 var ctor = contentDocument.registerElement('x-x', {prototype: proto}); |
| 108 | 108 |
| 109 // Create an instance; put it in the document *and* point to | 109 // Create an instance; put it in the document *and* point to |
| 110 // it from the window. | 110 // it from the window. |
| 111 var elem = new ctor(); | 111 var elem = new ctor(); |
| 112 contentDocument.body.appendChild(elem); | 112 contentDocument.body.appendChild(elem); |
| 113 contentWindow.thePrecious = elem; | 113 contentWindow.thePrecious = elem; |
| 114 | 114 |
| 115 // Watch to see that some objects die; we don't watch the | 115 // Watch to see that some objects die; we don't watch the |
| 116 // window because Blink recycles the window | 116 // window because Blink recycles the window |
| 117 | 117 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 142 | 142 |
| 143 observations = null; | 143 observations = null; |
| 144 | 144 |
| 145 nextStep(); | 145 nextStep(); |
| 146 }, 0); | 146 }, 0); |
| 147 } | 147 } |
| 148 | 148 |
| 149 step1(); | 149 step1(); |
| 150 var successfullyParsed = true; | 150 var successfullyParsed = true; |
| 151 </script> | 151 </script> |
| OLD | NEW |