Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Unified Diff: third_party/WebKit/LayoutTests/intersection-observer/multiple-targets.html

Issue 2028363002: IntersectionObserver: make order of notifications deterministic. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/intersection-observer/multiple-targets-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/LayoutTests/intersection-observer/multiple-targets.html
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/multiple-targets.html b/third_party/WebKit/LayoutTests/intersection-observer/multiple-targets.html
new file mode 100644
index 0000000000000000000000000000000000000000..91b03e1c6f73a54d27028573c2604695b8f41389
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/intersection-observer/multiple-targets.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<script src="../resources/js-test.js"></script>
+<script src="../resources/intersection-observer-helper-functions.js"></script>
+<style>
+.target {
+ width: 100px;
+ height: 100px;
+ margin: 10px;
+ background-color: green;
+}
+</style>
+<div style="width:100%; height:700px;"></div>
+<div id="target1" class="target"></div>
+<div id="target2" class="target"></div>
+<div id="target3" class="target"></div>
+
+<script>
+description("Verify that notifications for multiple targets are sorted by the order in which observe() was called on each target.");
+var target1 = document.getElementById("target1");
+var target2 = document.getElementById("target2");
+var target3 = document.getElementById("target3");
+var entries = [];
+var observer = new IntersectionObserver(
+ changes => { entries.push(...changes); }
+);
+
+onload = function() {
+ observer.observe(target1);
+ observer.observe(target2);
+ observer.observe(target3);
+ entries = entries.concat(observer.takeRecords());
+ shouldBeEqualToNumber("entries.length", 0);
+ document.scrollingElement.scrollTop = 150;
+ waitForNotification(step0);
+}
+
+function step0() {
+ shouldBeEqualToNumber("entries.length", 1);
+ if (entries.length > 0)
+ shouldBeEqualToString("entries[0].target.id", "target1");
+ document.scrollingElement.scrollTop = 10000;
+ waitForNotification(step1);
+}
+
+function step1() {
+ shouldBeEqualToNumber("entries.length", 3);
+ if (entries.length > 1)
+ shouldBeEqualToString("entries[1].target.id", "target2");
+ if (entries.length > 2)
+ shouldBeEqualToString("entries[2].target.id", "target3");
+ document.scrollingElement.scrollTop = 0;
+ waitForNotification(step2);
+}
+
+function step2() {
+ shouldBeEqualToNumber("entries.length", 6);
+ if (entries.length > 3)
+ shouldBeEqualToString("entries[3].target.id", "target1");
+ if (entries.length > 4)
+ shouldBeEqualToString("entries[4].target.id", "target2");
+ if (entries.length > 5)
+ shouldBeEqualToString("entries[5].target.id", "target3");
+ finishJSTest();
+}
+</script>
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/intersection-observer/multiple-targets-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698