Index: third_party/WebKit/LayoutTests/intersection-observer/observer-without-js-reference.html |
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/observer-without-js-reference.html b/third_party/WebKit/LayoutTests/intersection-observer/observer-without-js-reference.html |
index 637a955f3c97d1c963356a5e20b30d590884e7db..b4fbd3bf681d06d92e3f7292dd0bc1c24dcd3777 100644 |
--- a/third_party/WebKit/LayoutTests/intersection-observer/observer-without-js-reference.html |
+++ b/third_party/WebKit/LayoutTests/intersection-observer/observer-without-js-reference.html |
@@ -6,19 +6,26 @@ |
<div style="width:100%; height:700px;"></div> |
<script> |
- jsTestIsAsync = true; |
- description("IntersectionObserver continues to produce notifications when it has no javascript references."); |
- var target = document.getElementById("target"); |
- var entries = []; |
- new IntersectionObserver(function(changes) { |
- entries.push(...changes); |
- }).observe(target); |
- gc(); |
- document.scrollingElement.scrollTop = 300; |
- requestAnimationFrame(function () { |
- setTimeout(function() { |
- shouldBeEqualToNumber("entries.length", 1); |
- finishJSTest(); |
- }); |
- }); |
+jsTestIsAsync = true; |
+description("IntersectionObserver continues to produce notifications when it has no javascript references."); |
+var target = document.getElementById("target"); |
+var entries = []; |
+new IntersectionObserver(function(changes) { |
+ entries.push(...changes); |
+}).observe(target); |
+gc(); |
+document.scrollingElement.scrollTop = 300; |
+// See README for explanation of double RAF. |
+requestAnimationFrame(() => { requestAnimationFrame(() => { |
+ // In other IntersectionObserver tests, observer.takeRecords() is used to ensure that |
+ // all pending notifications are taken. Because this test specifically tests the |
+ // case where the observer object has no js references, it can't use takeRecords(). |
+ // However, the IntersectionObserver spec mandates that all notifications must be |
+ // sent within 100ms of being generated, so this timeout effectively tests conformance |
+ // with that requirement. |
+ setTimeout(() => { |
+ shouldBeEqualToNumber("entries.length", 1); |
+ finishJSTest(); |
+ }, 100) |
+}) }); |
</script> |