Title: [237939] trunk/LayoutTests
- Revision
- 237939
- Author
- [email protected]
- Date
- 2018-11-07 13:00:34 -0800 (Wed, 07 Nov 2018)
Log Message
IntersectionObserver GC-dependent tests are flaky
https://bugs.webkit.org/show_bug.cgi?id=191387
Reviewed by Chris Dumez.
Make these tests more robust by triggering GC repeatedly inside a setInterval(). Having only a single call to
GC is potentially flaky, since that call will early-out and return immediately if a GC is already underway.
* intersection-observer/root-element-deleted.html:
* intersection-observer/target-deleted.html:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (237938 => 237939)
--- trunk/LayoutTests/ChangeLog 2018-11-07 20:59:15 UTC (rev 237938)
+++ trunk/LayoutTests/ChangeLog 2018-11-07 21:00:34 UTC (rev 237939)
@@ -1,3 +1,16 @@
+2018-11-07 Ali Juma <[email protected]>
+
+ IntersectionObserver GC-dependent tests are flaky
+ https://bugs.webkit.org/show_bug.cgi?id=191387
+
+ Reviewed by Chris Dumez.
+
+ Make these tests more robust by triggering GC repeatedly inside a setInterval(). Having only a single call to
+ GC is potentially flaky, since that call will early-out and return immediately if a GC is already underway.
+
+ * intersection-observer/root-element-deleted.html:
+ * intersection-observer/target-deleted.html:
+
2018-11-07 Dan Bernstein <[email protected]>
Add a pseudoclass that matches img elements that are backed by an attachment
Modified: trunk/LayoutTests/intersection-observer/root-element-deleted.html (237938 => 237939)
--- trunk/LayoutTests/intersection-observer/root-element-deleted.html 2018-11-07 20:59:15 UTC (rev 237938)
+++ trunk/LayoutTests/intersection-observer/root-element-deleted.html 2018-11-07 21:00:34 UTC (rev 237939)
@@ -9,6 +9,19 @@
</div>
<script>
+ function observerShouldBeRemoved()
+ {
+ return new Promise(function(resolve) {
+ handle = setInterval(function() {
+ GCController.collect();
+ if (internals && internals.numberOfIntersectionObservers(document) == 0) {
+ clearInterval(handle);
+ resolve();
+ }
+ }, 10);
+ });
+ }
+
async_test(function(t) {
var root = document.getElementById('root');
var observer = new IntersectionObserver(function() {}, { root: document.getElementById('root') });;
@@ -19,12 +32,12 @@
root.parentNode.removeChild(root);
root = null;
target = null;
- requestAnimationFrame(t.step_func_done(function() {
+ requestAnimationFrame(function() {
observer.takeRecords();
- GCController.collect();
- assert_equals(observer.root, null, 'Observer has null root after root element is destroyed');
- assert_equals(internals.numberOfIntersectionObservers(document), 0);
- }));
+ observerShouldBeRemoved().then(t.step_func_done(function() {
+ assert_equals(observer.root, null, 'Observer has null root after root element is destroyed');
+ }));
+ });
}, "IntersectionObserver doesn't keep unreachable root alive");
</script>
</body>
Modified: trunk/LayoutTests/intersection-observer/target-deleted.html (237938 => 237939)
--- trunk/LayoutTests/intersection-observer/target-deleted.html 2018-11-07 20:59:15 UTC (rev 237938)
+++ trunk/LayoutTests/intersection-observer/target-deleted.html 2018-11-07 21:00:34 UTC (rev 237939)
@@ -8,14 +8,26 @@
<div id="target" style="width: 100px; height: 100px; background-color: green"></div>
<script>
+ function observerShouldBeRemoved()
+ {
+ return new Promise(function(resolve) {
+ handle = setInterval(function() {
+ gc();
+ if (internals && internals.numberOfIntersectionObservers(document) == 0) {
+ clearInterval(handle);
+ resolve();
+ }
+ }, 10);
+ });
+ }
+
async_test(function(t) {
let observer = new IntersectionObserver(function(entries) {
if (entries[0].isIntersecting) {
entries[0].target.remove();
- requestAnimationFrame(t.step_func_done(function() {
- gc();
- assert_equals(internals.numberOfIntersectionObservers(document), 0);
- }));
+ observerShouldBeRemoved().then(function() {
+ t.done();
+ });
}
});
observer.observe(document.getElementById("target"));
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes