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

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

Issue 2560253004: IntersectionObserver: convert tests to testharness.js (Closed)
Patch Set: Address comments Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <script src="../resources/js-test.js"></script> 2 <script src="../resources/testharness.js"></script>
3 <script src="../resources/intersection-observer-helper-functions.js"></script> 3 <script src="../resources/testharnessreport.js"></script>
4 <script src="./resources/intersection-observer-test-utils.js"></script>
5
4 <style> 6 <style>
7 pre, #log {
8 position: absolute;
9 top: 0;
10 left: 200px;
11 }
12 .spacer {
13 height: 700px;
14 }
5 .target { 15 .target {
6 width: 100px; 16 width: 100px;
7 height: 100px; 17 height: 100px;
8 margin: 10px; 18 margin: 10px;
9 background-color: green; 19 background-color: green;
10 } 20 }
11 </style> 21 </style>
12 <div style="width:100%; height:700px;"></div> 22
23 <div class="spacer"></div>
13 <div id="target1" class="target"></div> 24 <div id="target1" class="target"></div>
14 <div id="target2" class="target"></div> 25 <div id="target2" class="target"></div>
15 <div id="target3" class="target"></div> 26 <div id="target3" class="target"></div>
16 27
17 <script> 28 <script>
18 description("Verify that notifications for multiple targets are sorted by the or der in which observe() was called on each target.");
19 var target1 = document.getElementById("target1");
20 var target2 = document.getElementById("target2");
21 var target3 = document.getElementById("target3");
22 var entries = []; 29 var entries = [];
23 var observer = new IntersectionObserver( 30 var target1, target2, target3;
24 changes => { entries.push(...changes); }
25 );
26 31
27 onload = function() { 32 runTestCycle(function() {
33 assert_equals(window.innerWidth, 800, "Window must be 800 pixels wide.");
34 assert_equals(window.innerHeight, 600, "Window must be 600 pixels high.");
35
36 target1 = document.getElementById("target1");
37 assert_true(!!target1, "target1 exists.");
38 target2 = document.getElementById("target2");
39 assert_true(!!target2, "target2 exists.");
40 target3 = document.getElementById("target3");
41 assert_true(!!target3, "target3 exists.");
42 var observer = new IntersectionObserver(function(changes) {
43 entries = entries.concat(changes)
44 });
28 observer.observe(target1); 45 observer.observe(target1);
29 observer.observe(target2); 46 observer.observe(target2);
30 observer.observe(target3); 47 observer.observe(target3);
31 entries = entries.concat(observer.takeRecords()); 48 entries = entries.concat(observer.takeRecords());
32 shouldBeEqualToNumber("entries.length", 0); 49 assert_equals(entries.length, 0, "No initial notifications.");
33 document.scrollingElement.scrollTop = 150; 50 runTestCycle(step0, "No notifications after first rAF.");
34 waitForNotification(step0); 51 }, "One observer with multiple targets.");
35 }
36 52
37 function step0() { 53 function step0() {
38 shouldBeEqualToNumber("entries.length", 1); 54 document.scrollingElement.scrollTop = 150;
39 if (entries.length > 0) 55 runTestCycle(step1, "document.scrollingElement.scrollTop = 150");
40 shouldBeEqualToString("entries[0].target.id", "target1"); 56 assert_equals(entries.length, 0, "No notifications.");
41 document.scrollingElement.scrollTop = 10000;
42 waitForNotification(step1);
43 } 57 }
44 58
45 function step1() { 59 function step1() {
46 shouldBeEqualToNumber("entries.length", 3); 60 document.scrollingElement.scrollTop = 10000;
47 if (entries.length > 1) 61 runTestCycle(step2, "document.scrollingElement.scrollTop = 10000");
48 shouldBeEqualToString("entries[1].target.id", "target2"); 62 assert_equals(entries.length, 1, "One notification.");
49 if (entries.length > 2) 63 assert_equals(entries[0].target, target1, "entries[0].target === target1");
50 shouldBeEqualToString("entries[2].target.id", "target3");
51 document.scrollingElement.scrollTop = 0;
52 waitForNotification(step2);
53 } 64 }
54 65
55 function step2() { 66 function step2() {
56 shouldBeEqualToNumber("entries.length", 6); 67 document.scrollingElement.scrollTop = 0;
57 if (entries.length > 3) 68 runTestCycle(step3, "document.scrollingElement.scrollTop = 0");
58 shouldBeEqualToString("entries[3].target.id", "target1"); 69 assert_equals(entries.length, 3, "Three notifications.");
59 if (entries.length > 4) 70 assert_equals(entries[1].target, target2, "entries[1].target === target2");
60 shouldBeEqualToString("entries[4].target.id", "target2"); 71 assert_equals(entries[2].target, target3, "entries[2].target === target3");
61 if (entries.length > 5) 72 }
62 shouldBeEqualToString("entries[5].target.id", "target3"); 73
63 finishJSTest(); 74 function step3() {
75 assert_equals(entries.length, 6, "Six notifications.");
76 assert_equals(entries[3].target, target1, "entries[3].target === target1");
77 assert_equals(entries[4].target, target2, "entries[4].target === target2");
78 assert_equals(entries[5].target, target3, "entries[5].target === target3");
64 } 79 }
65 </script> 80 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698