Title: [245396] trunk
Revision
245396
Author
[email protected]
Date
2019-05-16 06:54:56 -0700 (Thu, 16 May 2019)

Log Message

[IntersectionObserver] Regression: No initial observation when nothing else triggers rendering
https://bugs.webkit.org/show_bug.cgi?id=197891

Reviewed by Simon Fraser.

Source/WebCore:

Schedule a rendering update whenever a new IntersectionObserver target is added.

Test: intersection-observer/initial-observation.html

* page/IntersectionObserver.cpp:
(WebCore::IntersectionObserver::observe):

LayoutTests:

Add a test where other timers that can schedule rendering updates are disabled,
in order to verify that IntersectionObserver is scheduling rendering updates
itself.

* intersection-observer/initial-observation.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (245395 => 245396)


--- trunk/LayoutTests/ChangeLog	2019-05-16 13:38:10 UTC (rev 245395)
+++ trunk/LayoutTests/ChangeLog	2019-05-16 13:54:56 UTC (rev 245396)
@@ -1,3 +1,16 @@
+2019-05-16  Ali Juma  <[email protected]>
+
+        [IntersectionObserver] Regression: No initial observation when nothing else triggers rendering
+        https://bugs.webkit.org/show_bug.cgi?id=197891
+
+        Reviewed by Simon Fraser.
+
+        Add a test where other timers that can schedule rendering updates are disabled,
+        in order to verify that IntersectionObserver is scheduling rendering updates
+        itself.
+
+        * intersection-observer/initial-observation.html: Added.
+
 2019-05-15  Devin Rousso  <[email protected]>
 
         Web Inspector: user gesture toggle should also force user interaction flag

Added: trunk/LayoutTests/intersection-observer/initial-observation-expected.txt (0 => 245396)


--- trunk/LayoutTests/intersection-observer/initial-observation-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/intersection-observer/initial-observation-expected.txt	2019-05-16 13:54:56 UTC (rev 245396)
@@ -0,0 +1,3 @@
+
+PASS An initial observation is fired even when nothing else triggers rendering 
+

Added: trunk/LayoutTests/intersection-observer/initial-observation.html (0 => 245396)


--- trunk/LayoutTests/intersection-observer/initial-observation.html	                        (rev 0)
+++ trunk/LayoutTests/intersection-observer/initial-observation.html	2019-05-16 13:54:56 UTC (rev 245396)
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<script src=""
+<script src=""
+
+<script>
+if (window.internals) {
+    // Disable timers that trigger delayed flushes, since these will make
+    // this test pass spuriously, even if IntersectionObserver never
+    // schedules any rendering updates.
+    internals.setSpeculativeTilingDelayDisabledForTesting(true);
+    internals.disableTileSizeUpdateDelay();
+}
+
+window._onload_ = function() {
+async_test((t) => {
+    var observer = new IntersectionObserver(t.step_func_done(() => {
+        observer.disconnect();
+    }));
+    requestAnimationFrame(() => {
+        requestAnimationFrame(() => {
+            setTimeout(() => {
+                observer.observe(document.getElementById("target"));
+            }, 0);
+        });
+    });
+}, "An initial observation is fired even when nothing else triggers rendering");
+};
+</script>
+
+<style>
+#target {
+  width: 100px;
+  height: 100px;
+  background-color: green;
+}
+</style>
+
+<div id="target"></div>
+

Modified: trunk/Source/WebCore/ChangeLog (245395 => 245396)


--- trunk/Source/WebCore/ChangeLog	2019-05-16 13:38:10 UTC (rev 245395)
+++ trunk/Source/WebCore/ChangeLog	2019-05-16 13:54:56 UTC (rev 245396)
@@ -1,3 +1,17 @@
+2019-05-16  Ali Juma  <[email protected]>
+
+        [IntersectionObserver] Regression: No initial observation when nothing else triggers rendering
+        https://bugs.webkit.org/show_bug.cgi?id=197891
+
+        Reviewed by Simon Fraser.
+
+        Schedule a rendering update whenever a new IntersectionObserver target is added.
+
+        Test: intersection-observer/initial-observation.html
+
+        * page/IntersectionObserver.cpp:
+        (WebCore::IntersectionObserver::observe):
+
 2019-05-16  Carlos Garcia Campos  <[email protected]>
 
         [FreeType] Some character sequences with a variation selector are not rendered

Modified: trunk/Source/WebCore/page/IntersectionObserver.cpp (245395 => 245396)


--- trunk/Source/WebCore/page/IntersectionObserver.cpp	2019-05-16 13:38:10 UTC (rev 245395)
+++ trunk/Source/WebCore/page/IntersectionObserver.cpp	2019-05-16 13:54:56 UTC (rev 245396)
@@ -158,6 +158,7 @@
     auto* document = trackingDocument();
     if (!hadObservationTargets)
         document->addIntersectionObserver(*this);
+    document->scheduleRenderingUpdate();
 }
 
 void IntersectionObserver::unobserve(Element& target)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to