[tbb-commits] [tor-browser] 26/73: Bug 1785186 - Use zero threshold for lazyload observer. r=hiro, a=RyanVM

gitolite role git at cupani.torproject.org
Wed Sep 21 20:17:19 UTC 2022


This is an automated email from the git hooks/post-receive script.

richard pushed a commit to branch geckoview-102.3.0esr-12.0-1
in repository tor-browser.

commit 8e154d75a8894c9e1c13a2142e5cd2c7297524ac
Author: Emilio Cobos Álvarez <emilio at crisal.io>
AuthorDate: Thu Aug 25 02:34:37 2022 +0000

    Bug 1785186 - Use zero threshold for lazyload observer. r=hiro, a=RyanVM
    
    This matches WebKit, and the spec:
    
      https://html.spec.whatwg.org/#lazy-load-intersection-observer
    
    Blink has very weird behavior where it treats a zero-area intersection
    in this particular case with an intersectionRatio of one:
    https://bugs.chromium.org/p/chromium/issues/detail?id=1356250
    
    Which causes them to load the image even though they have a
    numeric_limits::min threshold.
    
    So this works in Chromium by chance, but should work per spec.
    
    Differential Revision: https://phabricator.services.mozilla.com/D155501
---
 dom/base/DOMIntersectionObserver.cpp                  |  4 ++--
 .../image-loading-lazy-zero-intersection-area.html    | 19 +++++++++++++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/dom/base/DOMIntersectionObserver.cpp b/dom/base/DOMIntersectionObserver.cpp
index 23c807c3470d7..78450a64c816e 100644
--- a/dom/base/DOMIntersectionObserver.cpp
+++ b/dom/base/DOMIntersectionObserver.cpp
@@ -178,7 +178,7 @@ already_AddRefed<DOMIntersectionObserver>
 DOMIntersectionObserver::CreateLazyLoadObserver(Document& aDocument) {
   RefPtr<DOMIntersectionObserver> observer =
       new DOMIntersectionObserver(aDocument, LazyLoadCallback);
-  observer->mThresholds.AppendElement(std::numeric_limits<double>::min());
+  observer->mThresholds.AppendElement(0.0f);
 
 #define SET_MARGIN(side_, side_lower_)                                 \
   observer->mRootMargin.Get(eSide##side_) = PrefMargin(                \
@@ -198,7 +198,7 @@ already_AddRefed<DOMIntersectionObserver>
 DOMIntersectionObserver::CreateLazyLoadObserverViewport(Document& aDocument) {
   RefPtr<DOMIntersectionObserver> observer =
       new DOMIntersectionObserver(aDocument, LazyLoadCallbackReachViewport);
-  observer->mThresholds.AppendElement(std::numeric_limits<double>::min());
+  observer->mThresholds.AppendElement(0.0f);
   return observer.forget();
 }
 
diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html
new file mode 100644
index 0000000000000..9962ce7837a9a
--- /dev/null
+++ b/testing/web-platform/tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Image with zero intersection area is lazy-loaded</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio at crisal.io">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-img-element">
+<link rel="help" href="https://html.spec.whatwg.org/#lazy-load-intersection-observer">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1785186">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div style="height: 0; overflow: hidden;">
+  <img style="display: block" id=target loading="lazy" width="100" height="100">
+</div>
+<script>
+  async_test(function(t) {
+    target.addEventListener("load", t.step_func_done(function() {}));
+    target.src = "resources/image.png?zero-intersection-area";
+  });
+</script>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tbb-commits mailing list