| 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="../resources/gc.js"></script> | 3 <script src="../resources/gc.js"></script> |
| 4 <div style="width:100%; height:700px;"></div> | 4 <div style="width:100%; height:700px;"></div> |
| 5 <div id="target" style="background-color: green; width:100px; height:100px"></di
v> | 5 <div id="target" style="background-color: green; width:100px; height:100px"></di
v> |
| 6 <div style="width:100%; height:700px;"></div> | 6 <div style="width:100%; height:700px;"></div> |
| 7 | 7 |
| 8 <script> | 8 <script> |
| 9 jsTestIsAsync = true; | 9 jsTestIsAsync = true; |
| 10 description("IntersectionObserver continues to produce notifications when it h
as no javascript references."); | 10 description("IntersectionObserver continues to produce notifications when it has
no javascript references."); |
| 11 var target = document.getElementById("target"); | 11 var target = document.getElementById("target"); |
| 12 var entries = []; | 12 var entries = []; |
| 13 new IntersectionObserver(function(changes) { | 13 new IntersectionObserver(function(changes) { |
| 14 entries.push(...changes); | 14 entries.push(...changes); |
| 15 }).observe(target); | 15 }).observe(target); |
| 16 gc(); | 16 gc(); |
| 17 document.scrollingElement.scrollTop = 300; | 17 document.scrollingElement.scrollTop = 300; |
| 18 requestAnimationFrame(function () { | 18 // See README for explanation of double RAF. |
| 19 setTimeout(function() { | 19 requestAnimationFrame(() => { requestAnimationFrame(() => { |
| 20 shouldBeEqualToNumber("entries.length", 1); | 20 // In other IntersectionObserver tests, observer.takeRecords() is used to ensu
re that |
| 21 finishJSTest(); | 21 // all pending notifications are taken. Because this test specifically tests
the |
| 22 }); | 22 // case where the observer object has no js references, it can't use takeRecor
ds(). |
| 23 }); | 23 // However, the IntersectionObserver spec mandates that all notifications must
be |
| 24 // sent within 100ms of being generated, so this timeout effectively tests con
formance |
| 25 // with that requirement. |
| 26 setTimeout(() => { |
| 27 shouldBeEqualToNumber("entries.length", 1); |
| 28 finishJSTest(); |
| 29 }, 100) |
| 30 }) }); |
| 24 </script> | 31 </script> |
| OLD | NEW |