Title: [295744] trunk/LayoutTests/resize-observer
- Revision
- 295744
- Author
- [email protected]
- Date
- 2022-06-22 12:25:25 -0700 (Wed, 22 Jun 2022)
Log Message
Add more GC tests for ResizeObserver
https://bugs.webkit.org/show_bug.cgi?id=231260
<rdar://84168766>
Reviewed by Ryosuke Niwa.
Add more GC tests for ResizeObserver, matching the ones we have for IntersectionObserver.
* LayoutTests/resize-observer/observe-disconnected-target-crash-expected.txt: Added.
* LayoutTests/resize-observer/observe-disconnected-target-crash.html: Added.
* LayoutTests/resize-observer/observe-then-disconnect-target-expected.txt: Added.
* LayoutTests/resize-observer/observe-then-disconnect-target.html: Added.
Canonical link: https://commits.webkit.org/251748@main
Added Paths
Diff
Added: trunk/LayoutTests/resize-observer/observe-disconnected-target-crash-expected.txt (0 => 295744)
--- trunk/LayoutTests/resize-observer/observe-disconnected-target-crash-expected.txt (rev 0)
+++ trunk/LayoutTests/resize-observer/observe-disconnected-target-crash-expected.txt 2022-06-22 19:25:25 UTC (rev 295744)
@@ -0,0 +1 @@
+This test passes if it doesn't crash.
Added: trunk/LayoutTests/resize-observer/observe-disconnected-target-crash.html (0 => 295744)
--- trunk/LayoutTests/resize-observer/observe-disconnected-target-crash.html (rev 0)
+++ trunk/LayoutTests/resize-observer/observe-disconnected-target-crash.html 2022-06-22 19:25:25 UTC (rev 295744)
@@ -0,0 +1,21 @@
+<!DOCTYPE html><!-- webkit-test-runner [ ResizeObserverEnabled=true ] -->
+<p>This test passes if it doesn't crash.</p>
+<script>
+ if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+ }
+ _onload_ = async () => {
+ for (let i = 0; i < 8; i++) {
+ document.createElement('div');
+ }
+ for (let i = 0; i < 8; i++) {
+ new ResizeObserver(() => {});
+ }
+ let resizeObserver = new ResizeObserver(() => {});
+ await resizeObserver.observe(document.createElement('div'));
+ new ImageData(1000, 10000);
+ if (window.testRunner)
+ testRunner.notifyDone();
+ };
+</script>
Added: trunk/LayoutTests/resize-observer/observe-then-disconnect-target-expected.txt (0 => 295744)
--- trunk/LayoutTests/resize-observer/observe-then-disconnect-target-expected.txt (rev 0)
+++ trunk/LayoutTests/resize-observer/observe-then-disconnect-target-expected.txt 2022-06-22 19:25:25 UTC (rev 295744)
@@ -0,0 +1,20 @@
+Tests that an observation is received after disconnecting a visible target
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS observations.length is 1
+PASS observations[0].target.tagName is "DIV"
+PASS observations[0].target.foo is 1
+PASS observations[0].contentRect.width > 0.0 is true
+PASS observations[0].contentRect.height > 0.0 is true
+* Removing target from document
+PASS observations.length is 1
+PASS observations[0].target.tagName is "DIV"
+PASS observations[0].target.foo is 1
+PASS observations[0].contentRect.width is 0.0
+PASS observations[0].contentRect.height is 0.0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/resize-observer/observe-then-disconnect-target.html (0 => 295744)
--- trunk/LayoutTests/resize-observer/observe-then-disconnect-target.html (rev 0)
+++ trunk/LayoutTests/resize-observer/observe-then-disconnect-target.html 2022-06-22 19:25:25 UTC (rev 295744)
@@ -0,0 +1,50 @@
+<!DOCTYPE html><!-- webkit-test-runner [ ResizeObserverEnabled=true ] -->
+<html>
+<body>
+<script src=""
+<div id="testDiv">test</div>
+<script>
+ description("Tests that an observation is received after disconnecting a visible target");
+ jsTestIsAsync = true;
+
+ let receivedInitialObservation = false;
+ _onload_ = () => {
+ let resizeObserver = new ResizeObserver((_observations) => {
+ gc();
+ observations = _observations;
+
+ shouldBe("observations.length", "1");
+ shouldBeEqualToString("observations[0].target.tagName", "DIV");
+ shouldBe("observations[0].target.foo", "1");
+
+ if (!receivedInitialObservation) {
+ receivedInitialObservation = true;
+ shouldBeTrue("observations[0].contentRect.width > 0.0");
+ shouldBeTrue("observations[0].contentRect.height > 0.0");
+ requestAnimationFrame(() => {
+ debug("* Removing target from document");
+ document.getElementById("testDiv").remove();
+ gc();
+ setTimeout(gc, 0);
+ timeoutHandle = setTimeout(() => {
+ testFailed("Didn't get observation after removing target from document");
+ finishJSTest();
+ }, 3000);
+ });
+ } else {
+ clearTimeout(timeoutHandle);
+ shouldBe("observations[0].contentRect.width", "0.0");
+ shouldBe("observations[0].contentRect.height", "0.0");
+ setTimeout(finishJSTest, 100);
+ }
+ });
+ let div = document.getElementById("testDiv");
+ div.foo = 1;
+ resizeObserver.observe(div);
+ div = null;
+ gc();
+ setTimeout(gc, 0);
+ };
+</script>
+</body>
+</html>
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes