Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 89749ad62db146e79a4ae1c307efee7fba9a94ec
https://github.com/WebKit/WebKit/commit/89749ad62db146e79a4ae1c307efee7fba9a94ec
Author: Alex Christensen <[email protected]>
Date: 2023-05-31 (Wed, 31 May 2023)
Changed paths:
M Source/WebCore/page/Page.cpp
M
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm
Log Message:
-----------
Move Page::renderingUpdateCompleted call to outside loop in
Page::finalizeRenderingUpdate
https://bugs.webkit.org/show_bug.cgi?id=257127
rdar://109664043
Reviewed by Tim Horton.
This is a retry of 264330@main with a line that prevents drawing pages that
have no root frames,
which can happen after the last LocalFrame in a process is removed with a stack
like this:
1 WebKit::RemoteLayerTreeDrawingArea::startRenderingUpdateTimer()
2 WebKit::RemoteLayerTreeDrawingArea::triggerRenderingUpdate()
3
WebKit::RemoteLayerTreeDrawingArea::setRootCompositingLayer(WebCore::Frame&,
WebCore::GraphicsLayer*)
4 WebKit::WebPage::exitAcceleratedCompositingMode(WebCore::Frame&)
5 WebKit::WebChromeClient::attachRootGraphicsLayer(WebCore::LocalFrame&,
WebCore::GraphicsLayer*)
6 WebCore::RenderLayerCompositor::detachRootLayer()
7 WebCore::RenderLayerCompositor::setIsInWindow(bool)
8 WebCore::RenderView::setIsInWindow(bool)
9 WebCore::LocalFrameView::setIsInWindow(bool)
10 WebCore::Document::documentWillBecomeInactive()
11 WebCore::Document::destroyRenderTree()
12 WebCore::Document::willBeRemovedFromFrame()
13 WebCore::LocalFrame::setView(...)
14 WebKit::WebFrame::didCommitLoadInAnotherProcess(...)
Even preventing the timer from being started doesn't prevent the assertions.
We need to catch
it when the timer fires, then check if there are any root frames, and exit
early if there are none.
This will once again not affect any behavior with site isolation off because
there will always be
exactly one root frame in that case, the main frame.
* Source/WebCore/page/Page.cpp:
(WebCore::Page::finalizeRenderingUpdate):
(WebCore::Page::finalizeRenderingUpdateForRootFrame):
*
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::updateRendering):
Canonical link: https://commits.webkit.org/264751@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes