LGTM2

On 11/30/23 9:33 AM, Traian Captan wrote:
You're welcome Rick!


On Thu, Nov 30, 2023 at 5:33 AM Rick Byers <rby...@chromium.org> wrote:

    Thank you Traian!

    On Thu, Nov 30, 2023 at 7:27 PM Traian Captan
    <tcap...@chromium.org> wrote:

        Hi Rick,

        Yes. I uploaded a CL that increases the spacer size by 30px:
        https://chromium-review.googlesource.com/c/chromium/src/+/5075126

        The tests are now failing as expected on Safari:
        
https://wpt.fyi/results/html/semantics/embedded-content/the-img-element?label=pr_head&max-count=1&pr=43446
        
<https://wpt.fyi/results/html/semantics/embedded-content/the-img-element?label=pr_head&max-count=1&pr=43446>


        On Thu, Nov 30, 2023 at 12:14 AM Rick Byers
        <rby...@chromium.org> wrote:

            Interesting. Could you try to improve the tests to
            capture the interop difference and ensure passing reflects
            full conformance to the spec? We rely on WPTs as our
            quantifiable measure of interoperability...

            Rick

            On Thu, Nov 30, 2023 at 5:07 PM Traian Captan
            <tcap...@chromium.org> wrote:

                Thank you Rick!

                I did some investigating into why WebKit is passing
                some of the new WPTs for lazy loaded images.
                I think it might be because WebKit is considering the
                edge as inclusive, while Blink and Gecko do not.
                In the following example if the spacer height is 100px
                Safari will report intersecting as true while Chrome
                and FireFox would report it as false.
                If the height is increased to 101px, all 3 browsers
                will report the intersection as false.
                <!DOCTYPE html>
                <style>
                #scroller { width: 100px; height: 100px; overflow:
                scroll; background-color: gray; }
                #spacer { width: 50px; height: 100px; }
                #target { width: 50px; height: 50px; background-color:
                green; }
                </style>
                <div id=scroller>
                <div id=spacer></div>
                <div id=target></div>
                </div>
                <script>
                let entries = [];
                window.onload = function() {
                const observer = new IntersectionObserver(
                callback,
                {
                rootMargin: "0px"
                }
                );
                observer.observe(target);
                };
                function callback(entries) {
                console.log(`isIntersecting =
                ${entries[0].isIntersecting}`);
                }
                </script>



                On Mon, Nov 27, 2023 at 11:40 PM Rick Byers
                <rby...@chromium.org> wrote:

                    On Wed, Nov 22, 2023 at 2:37 PM Yoav Weiss
                    <yoavwe...@chromium.org> wrote:

                        Thanks, that sounds like a strict improvement.

                        On Wed, Nov 22, 2023 at 6:25 AM Traian Captan
                        <tcap...@chromium.org> wrote:

                            Yes, that's correct.


                            On Tue, Nov 21, 2023 at 9:18 PM Yoav Weiss
                            <yoavwe...@chromium.org> wrote:

                                Do I understand correctly that
                                currently lazy-loaded images in CSS
                                scrollers have suboptimal behavior and
                                this would improve that without
                                potentially harming other cases?

                                On Wed, Nov 22, 2023 at 1:55 AM Traian
                                Captan <tcap...@chromium.org> wrote:


                                            Contact emails

                                    tcap...@chromium.org


                                            Explainer

                                    None


                        A short (inline) explainer would help
                        reviewers to understand e.g. if this involves
                        changes to the API surface that developers
                        need to care about.
                        Can you write a few words on the impact on
                        developers?



                                            Specification

                                    
https://html.spec.whatwg.org/#lazy-load-root-margin


                        The spec doesn't mention anything specific
                        around root margins or scroll margins (other
                        than the algorithm name).
                        Are these concepts interoperable?


                    I dug around a little to try to better understand
                    this. The HTML spec does mention
                    
<https://html.spec.whatwg.org/#start-intersection-observing-a-lazy-loading-element>
 setting
                    the "scrollMargin" on the IntersectionObserver, a
                    new property we recently shipped (I2S
                    
<https://groups.google.com/a/chromium.org/g/blink-dev/c/Ax8rTBusZ4s/m/nogj-s-eGQAJ?utm_medium=email&utm_source=footer>).

                    While WebKit and Gecko aren't yet passing the WPT
                    tests
                    
<https://wpt.fyi/results/intersection-observer?label=master&label=experimental&aligned&q=scroll-margin>
                    for this yet, interestingly WebKit is already
                    passing
                    
<https://wpt.fyi/results/html/semantics/embedded-content/the-img-element?label=master&label=experimental&aligned&q=image-loading-lazy-in->
                    most of the newly added
                    
<https://chromium-review.googlesource.com/c/chromium/src/+/5023396>
                    WPTs for lazy loaded images in particular. So
                    perhaps their implementation already handled this?

                    Seems reasonable to me - LGTM1



                                            Summary

                                    Changes the lazy load intersection
                                    observer's init dictionary to use
                                    a scrollMargin instead of a
                                    rootMargin. This allows lazy
                                    loading images contained inside
                                    CSS scrollers, like carousels, to
                                    load as expected when near the
                                    viewport instead of the current
                                    behavior where these images load
                                    when at least one pixel is
                                    intersecting the viewport.



                                            Blink component

                                    Blink>Image
                                    
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EImage>


                                            Search tags

                                    lazyload
                                    
<https://chromestatus.com/features#tags:lazyload>,
                                    scrollmargin
                                    
<https://chromestatus.com/features#tags:scrollmargin>


                                            TAG review

                                    None


                                            TAG review status

                                    Not applicable


                                            Risks



                                            Interoperability and
                                            Compatibility

                                    Overall low as scroll margin also
                                    applies to the root element thus
                                    not affecting lazy loading images
                                    that are currently loading with
                                    just a root margin.



                                    /Gecko/: Positive
                                    
(https://github.com/w3c/IntersectionObserver/issues/431)
                                    
https://bugzilla.mozilla.org/show_bug.cgi?id=1864794

                                    /WebKit/: Positive
                                    
(https://github.com/w3c/IntersectionObserver/issues/431#issuecomment-930602435)
                                    
https://bugs.webkit.org/show_bug.cgi?id=264864

                                    /Web developers/: Positive
                                    
(https://bugs.chromium.org/p/chromium/issues/detail?id=1391989)

                                    /Other signals/:


                                            WebView application risks

                                    Does this intent deprecate or
                                    change behavior of existing APIs,
                                    such that it has potentially high
                                    risk for Android WebView-based
                                    applications?

                                    None



                                            Debuggability

                                    None



                                            Will this feature be
                                            supported on all six Blink
                                            platforms (Windows, Mac,
                                            Linux, Chrome OS, Android,
                                            and Android WebView)?

                                    Yes


                                            Is this feature fully
                                            tested by
                                            web-platform-tests
                                            
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?

                                    Yes

                                    
https://wpt.fyi/results/html/semantics/embedded-content/the-img-element?label=master&label=experimental&aligned&q=image-loading-lazy-in-
                                    
<https://wpt.fyi/results/html/semantics/embedded-content/the-img-element?label=master&label=experimental&aligned&q=image-loading-lazy-in->




                                            Flag name on chrome://flags

                                    LazyLoadScrollMargin


                                            Finch feature name

                                    None


                                            Non-finch justification

                                    This feature is behind an
                                    enabled-by-default flag that can
                                    be disabled if needed.



                                            Requires code in //chrome?

                                    False


                                            Tracking bug

                                    
https://bugs.chromium.org/p/chromium/issues/detail?id=1391989


                                            Estimated milestones

                                    Shipping on desktop         121
                                    DevTrial on desktop         121

                                    Shipping on Android         121
                                    DevTrial on Android         121

                                    Shipping on WebView         121



                                            Anticipated spec changes

                                    Open questions about a feature may
                                    be a source of future web compat
                                    or interop issues. Please list
                                    open issues (e.g. links to known
                                    github issues in the project for
                                    the feature specification) whose
                                    resolution may introduce web
                                    compat/interop risk (e.g.,
                                    changing to naming or structure of
                                    the API in a
                                    non-backward-compatible way).

                                    None


                                            Link to entry on the
                                            Chrome Platform Status

                                    
https://chromestatus.com/feature/5106926245642240


                                            Links to previous Intent
                                            discussions

                                    Intent to prototype:
                                    
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFxahvtrmHkoOpTuD2eZYVOyFuAhP8ZFVoTuNBS8zYTVY%3DTaaQ%40mail.gmail.com

                                    This intent message was generated
                                    by Chrome Platform Status
                                    <https://chromestatus.com/>.

-- You received this message because
                                    you are subscribed to the Google
                                    Groups "blink-dev" group.
                                    To unsubscribe from this group and
                                    stop receiving emails from it,
                                    send an email to
                                    blink-dev+unsubscr...@chromium.org.
                                    To view this discussion on the web
                                    visit
                                    
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFxahvsUb0GEG9WNWRN7Akkowjm03gLj%2Biiq5rG8%2BzdAWMBTNA%40mail.gmail.com
                                    
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFxahvsUb0GEG9WNWRN7Akkowjm03gLj%2Biiq5rG8%2BzdAWMBTNA%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- You received this message because you are
                        subscribed to the Google Groups "blink-dev" group.
                        To unsubscribe from this group and stop
                        receiving emails from it, send an email to
                        blink-dev+unsubscr...@chromium.org.
                        To view this discussion on the web visit
                        
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfVhH_QxckxRLbR05jrN0CY48aQ-Ag3BypusnsyKoDTc0A%40mail.gmail.com
                        
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfVhH_QxckxRLbR05jrN0CY48aQ-Ag3BypusnsyKoDTc0A%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFxahvuw19j2DwRAV4kGecr_V%2BZ2D89nW5PdSUJ1z43HG7JW8g%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFxahvuw19j2DwRAV4kGecr_V%2BZ2D89nW5PdSUJ1z43HG7JW8g%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/e34334bd-1d26-4f38-8e77-4540f2658fc5%40chromium.org.

Reply via email to