Bug 1592889 [wpt PR 20013] - Don't look for property containers with multiple fragments., a=testonly
authorChris Harrelson <chrishtr@chromium.org>
Mon, 04 Nov 2019 11:44:53 +0000
changeset 564797 f6c88246bdace2243884cf136d954fd42ce65b2b
parent 564796 4a6375c2b3b76aa78ade353886fd9b1d6c3d3693
child 564798 29b0192bda3822cde5d74ed0fa9a7d9a9310aa0c
push id12351
push userffxbld-merge
push dateMon, 02 Dec 2019 11:32:26 +0000
treeherdermozilla-beta@dba4410526a2 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1592889, 20013, 999551, 1892058, 711263
milestone72.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1592889 [wpt PR 20013] - Don't look for property containers with multiple fragments., a=testonly Automatic update from web-platform-tests Don't look for property containers with multiple fragments. The MapToVisualRectInAncestorSpace fast-path needs a LayoutObject with LocalBorderBoxProperties set, so that it can call into GeometryMapper. If the start LayoutObject does not have one, it proceeds up the containing block chain until it finds one, and uses the FirstFragment() of the resulting LayoutObject. This is wrong in cases where there multiple fragments on the LayoutObject, because we don't know which one to choose. In such cases, fall back to the slow path. Bug: 999551 Change-Id: I887c15c3acbe41432b2ca64e5a1551f3765a5043 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1892058 Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org> Cr-Commit-Position: refs/heads/master@{#711263} -- wpt-commits: af0a7431ab977b1c169075a10fd44944b05079f9 wpt-pr: 20013 Differential Revision: https://phabricator.services.mozilla.com/D53587
testing/web-platform/tests/loading/lazyload/image-loading-lazy-multicol-tentative.html
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/loading/lazyload/image-loading-lazy-multicol-tentative.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<head>
+  <title>Images with loading='lazy' load when in the viewport</title>
+  <link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
+  <link rel="help" href="https://github.com/scott-little/lazyload">
+  <script src="/resources/testharness.js"></script>
+  <script src="/resources/testharnessreport.js"></script>
+</head>
+
+<!--
+Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
+-->
+
+<script>
+  const t = async_test("Test that images with loading='lazy' under multicol load once they enter the viewport.");
+
+  let has_in_viewport_loaded = false;
+  let has_window_loaded = false;
+
+  const in_viewport_img_onload = t.step_func(function() {
+    assert_false(has_in_viewport_loaded, "The in_viewport element should load only once.");
+    has_in_viewport_loaded = true;
+  });
+
+  window.addEventListener("load", t.step_func_done(function() {
+    assert_true(has_in_viewport_loaded, "The in_viewport element should have loaded before window.load().");
+    assert_false(has_window_loaded, "The window.load() event should only fire once.");
+    has_window_loaded = true;
+  }));
+
+</script>
+
+<div class=texty style="column-count: 2; height: 300px">
+  <div style="border: 1px solid black">
+    <h2 style="column-span: all"></h2>
+    <img loading="lazy" src="resources/image.png?first" width="160" height="120"
+        onload="in_viewport_img_onload()">
+  </div>
+</div>
+
+  <!--
+    This async script loads very slowly in order to ensure that, if the
+    below_viewport element has started loading, it has a chance to finish
+    loading before window.load() happens, so that the test will dependably fail
+    in that case instead of potentially passing depending on how long different
+    resource fetches take.
+  -->
+  <script async src="/common/slow.py"></script>