[webkit-changes] [WebKit/WebKit] b8c656: [content-visibility] Implement initial visibility ...

Rob Buis noreply at github.com
Fri Sep 8 02:13:25 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b8c6566d556809935878157344ab89bedf59279d
      https://github.com/WebKit/WebKit/commit/b8c6566d556809935878157344ab89bedf59279d
  Author: Rob Buis <rbuis at igalia.com>
  Date:   2023-09-08 (Fri, 08 Sep 2023)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-auto-first-observation-immediate-expected.txt
    M Source/WebCore/dom/ContentVisibilityDocumentState.cpp
    M Source/WebCore/dom/ContentVisibilityDocumentState.h
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h
    M Source/WebCore/dom/Element.cpp
    M Source/WebCore/dom/Element.h

  Log Message:
  -----------
  [content-visibility] Implement initial visibility determination
https://bugs.webkit.org/show_bug.cgi?id=259825

Reviewed by Tim Nguyen.

Implement initial visibility determination as specified in [1].
This replaces the custom onscreen bookkeeping with the specified
proximity to viewport concept. The updateIntersectionObservations
logic is refactored a bit so it can be used for updating any given
collection of intersection observers.

This PR also changed behaviour to not dispatch ContentVisibilityAutoStateChange
on disconnected elements, this problem is now exposed with the different timing
of initial visibility determination.

[1] https://github.com/whatwg/html/pull/9312

* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-auto-first-observation-immediate-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-auto-first-observation-immediate.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-012-expected.txt:
* Source/WebCore/dom/ContentVisibilityDocumentState.cpp:
(WebCore::ContentVisibilityDocumentState::unobserve):
(WebCore::ContentVisibilityDocumentState::checkRelevancyOfContentVisibilityElement const): extract per element content relevancy check logic
(WebCore::ContentVisibilityDocumentState::updateRelevancyOfContentVisibilityElements const): bail out early if no update is specified
(WebCore::ContentVisibilityDocumentState::determineInitialVisibleContentVisibility const):
(WebCore::ContentVisibilityDocumentState::updateContentRelevancyStatusForScrollIfNeeded):
(WebCore::ContentVisibilityDocumentState::updateViewportProximity): keep track of per element viewport proximity
(WebCore::ContentVisibilityDocumentState::removeViewportProximity):
(WebCore::ContentVisibilityDocumentState::updateRelevancyOfContentVisibilityElements): Deleted.
(WebCore::ContentVisibilityDocumentState::updateOnScreenObservationTarget): Deleted.
* Source/WebCore/dom/ContentVisibilityDocumentState.h:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::updateIntersectionObservations): allow specifying the intersection observers
(WebCore::Document::updateResizeObservations): integrate according to [1]
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::contentVisibilityViewportChange): Deleted.
* Source/WebCore/dom/Element.h:

Canonical link: https://commits.webkit.org/267779@main




More information about the webkit-changes mailing list