[webkit-changes] [WebKit/WebKit] f754a3: Support sending displayDidRefresh at DisplayLink u...

mattwoodrow noreply at github.com
Fri Aug 25 02:07:40 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f754a3da5ae02423ea73587b1ddc5cd6f3dc9b19
      https://github.com/WebKit/WebKit/commit/f754a3da5ae02423ea73587b1ddc5cd6f3dc9b19
  Author: Matt Woodrow <mattwoodrow at apple.com>
  Date:   2023-08-25 (Fri, 25 Aug 2023)

  Changed paths:
    M Source/WebKit/UIProcess/DrawingAreaProxy.h
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.mm
    M Source/WebKit/UIProcess/RemotePageDrawingAreaProxy.cpp
    M Source/WebKit/UIProcess/RemotePageDrawingAreaProxy.h

  Log Message:
  -----------
  Support sending displayDidRefresh at DisplayLink update with site isolation.
https://bugs.webkit.org/show_bug.cgi?id=260674
<rdar://problem/114402070>

Reviewed by Alex Christensen.

We currently always send displayDidRefresh for subframes immediately, instead of waiting for the next DisplayLink update.

This keeps a set of remote frames, tracking what the current CommitLayerTreeMessageState is for each of them separately.
When the displayDidRefresh call comes from DisplayLink, we iterate the set, sending the message onto the web process
for each remote frame that is waiting for one.

* Source/WebKit/UIProcess/DrawingAreaProxy.h:
(WebKit::DrawingAreaProxy::addRemotePageDrawingAreaProxy):
(WebKit::DrawingAreaProxy::removeRemotePageDrawingAreaProxy):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
(WebKit::RemoteLayerTreeDrawingAreaProxy::nextLayerTreeTransactionID const):
(WebKit::RemoteLayerTreeDrawingAreaProxy::lastCommittedLayerTreeTransactionID const):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::addRemotePageDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::removeRemotePageDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::processStateForConnection):
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeNotTriggered):
(WebKit::RemoteLayerTreeDrawingAreaProxy::willCommitLayerTree):
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeTransaction):
(WebKit::RemoteLayerTreeDrawingAreaProxy::asyncSetLayerContents):
(WebKit::RemoteLayerTreeDrawingAreaProxy::maybePauseDisplayRefreshCallbacks):
(WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
(WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
(WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate):
* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.mm:
(-[WKDisplayLinkHandler displayLinkFired:]):
(-[WKDisplayLinkHandler timerFired]):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.h:
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.mm:
(WebKit::RemoteLayerTreeDisplayLinkClient::displayLinkFired):
(WebKit::RemoteLayerTreeDrawingAreaProxyMac::didRefreshDisplay):
* Source/WebKit/UIProcess/RemotePageDrawingAreaProxy.cpp:
(WebKit::RemotePageDrawingAreaProxy::RemotePageDrawingAreaProxy):
(WebKit::RemotePageDrawingAreaProxy::~RemotePageDrawingAreaProxy):
* Source/WebKit/UIProcess/RemotePageDrawingAreaProxy.h:
(WebKit::RemotePageDrawingAreaProxy::process):

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




More information about the webkit-changes mailing list