[webkit-changes] [WebKit/WebKit] 59f02d: Refactor setVisualUpdatesAllowed to allow adding m...
mattwoodrow
noreply at github.com
Tue Aug 13 12:45:34 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 59f02dbfbc2353adafbef64ec5f8ac5875c21559
https://github.com/WebKit/WebKit/commit/59f02dbfbc2353adafbef64ec5f8ac5875c21559
Author: Matt Woodrow <mattwoodrow at apple.com>
Date: 2024-08-13 (Tue, 13 Aug 2024)
Changed paths:
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/page/Page.cpp
Log Message:
-----------
Refactor setVisualUpdatesAllowed to allow adding more reasons.
https://bugs.webkit.org/show_bug.cgi?id=277931
<rdar://133648465>
Reviewed by Tim Horton.
The state changes for enabling/disabling visual updates allowed are complicated,
and will get worse if we try to add new reasons to prevent updates.
Render blocking (bug 268743) will want to use this, and I think we can fold in
view-transition rendering suppression too.
This adds a set of flags, and visual updates are prevented when any are present.
There are a few behaviour changes:
The explicit flushing of layout and compositing layers has been removed. Any
code that needs to result of these (like a rendering update) should already be
calling these as needed, and we shouldn't need to preemptively do so at this
point.
A suspend/resume pair no longer clobbers the state, and will now leave
client-requested blocking in place.
rAF is also skipped for Documents with visual updates prevented. This is
required for render-blocking and rendering suppression, and seems like it would
also be the right thing for the existing uses too.
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::setReadyState):
(WebCore::Document::setVisualUpdatesAllowed):
(WebCore::Document::addVisualUpdatePreventedReason):
(WebCore::Document::removeVisualUpdatePreventedReasons):
(WebCore::Document::visualUpdatesSuppressionTimerFired):
(WebCore::Document::setVisualUpdatesAllowedByClient):
(WebCore::Document::suspend):
(WebCore::Document::resume):
* Source/WebCore/dom/Document.h:
(WebCore::Document::visualUpdatesAllowed const):
(WebCore::Document::visualUpdatePreventReasonsClearedByTimer):
(WebCore::Document::visualUpdatePreventRequiresLayoutMilestones):
* Source/WebCore/page/Page.cpp:
(WebCore::Page::forEachRenderableDocument const):
Canonical link: https://commits.webkit.org/282185@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list