[webkit-changes] [WebKit/WebKit] b2c98f: [site-isolation] Position:fixed banner at top of i...

mattwoodrow noreply at github.com
Sun Feb 9 16:10:30 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b2c98f3202b0f6292ca85cd5f63076cb70d10a3a
      https://github.com/WebKit/WebKit/commit/b2c98f3202b0f6292ca85cd5f63076cb70d10a3a
  Author: Matt Woodrow <mattwoodrow at apple.com>
  Date:   2025-02-09 (Sun, 09 Feb 2025)

  Changed paths:
    M Source/WebCore/platform/ProcessQualified.h
    M Source/WebKit/Platform/cocoa/ImageAnalysisUtilities.mm
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
    M Source/WebKit/Shared/MonotonicObjectIdentifier.serialization.in
    M Source/WebKit/Shared/ProcessQualified.serialization.in
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm
    M Source/WebKit/Shared/TransactionID.h
    M Source/WebKit/Shared/VisibleContentRectUpdateInfo.h
    M Source/WebKit/Shared/WTFArgumentCoders.serialization.in
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
    M Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm
    M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.mm
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebPageProxyInternals.h
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
    M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm
    M Source/WebKit/WebProcess/WebPage/WebFrame.h
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/WebPageInternals.h
    M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm

  Log Message:
  -----------
  [site-isolation] Position:fixed banner at top of imgur.com on iOS flickers when scrolling.
https://bugs.webkit.org/show_bug.cgi?id=287061
<rdar://142972249>

Reviewed by Simon Fraser.

Actual bug fixed by making WKWebViewIOS::_didCommitLayerTree skip most of the
work for subframe process transactions, since they only apply to the main frame.

The main change here is making TransactionID ProcessQualified, so that
transactions from different processes don't get mixed up in the UI process.

Deletes the existing comparison operators on ProcessQualified (since they
ignored the process), and adds explicit comparison functions that assert if the
process is different.

Used the resulting compilation failures to find all places where we compared
TransactionsIDs and verified that they didn't try to compare values from
different process. Fixed the ones that did, including the _didCommitLayerTree
code.

ProcessQualified doesn't have a default constructor, so lots of TransactionID
instances changed to be std::optional.

* Source/WebCore/platform/ProcessQualified.h:
(WebCore::ProcessQualified::generateMonotonic):
(WebCore::ProcessQualified::next const):
(WebCore::ProcessQualified::increment):
(WebCore::ProcessQualified::loggingString const):
(WebCore::ProcessQualified::lessThanSameProcess):
(WebCore::ProcessQualified::lessThanOrEqualSameProcess):
(WebCore::ProcessQualified::greaterThanSameProcess):
(WebCore::ProcessQualified::greaterThanOrEqualSameProcess):
(WebCore::operator>): Deleted.
(WebCore::operator>=): Deleted.
(WebCore::operator<): Deleted.
(WebCore::operator<=): Deleted.
* Source/WebKit/Platform/cocoa/ImageAnalysisUtilities.mm:
(WebKit::requestVisualTranslation):
* Source/WebKit/Scripts/webkit/messages.py:
(serialized_identifiers):
* Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
(IPC::serializedIdentifiers):
* Source/WebKit/Shared/MonotonicObjectIdentifier.serialization.in:
* Source/WebKit/Shared/ProcessQualified.serialization.in:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
(WebKit::RemoteLayerTreeTransaction::transactionID const):
(WebKit::RemoteLayerTreeTransaction::setTransactionID): Deleted.
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::RemoteLayerTreeTransaction):
(WebKit::dumpChangedLayers):
* Source/WebKit/Shared/TransactionID.h:
* Source/WebKit/Shared/VisibleContentRectUpdateInfo.h:
* Source/WebKit/Shared/WTFArgumentCoders.serialization.in:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView _didCommitLoadForMainFrame]):
(-[WKWebView _trackTransactionCommit:]):
(-[WKWebView _restoreScrollAndZoomStateForTransaction:]):
(-[WKWebView _didCommitLayerTree:]):
(-[WKWebView _updateVisibleContentRects]):
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::didCommitLayerTree):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
(WebKit::RemoteLayerTreeDrawingAreaProxy::nextMainFrameLayerTreeTransactionID const):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeNotTriggered):
(WebKit::RemoteLayerTreeDrawingAreaProxy::willCommitLayerTree):
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeTransaction):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxyMac::didCommitLayerTree):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxyInternals.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _doubleTapRecognizedForDoubleClick:]):
(-[WKContentView _singleTapRecognized:]):
(-[WKContentView _attemptSyntheticClickAtLocation:modifierFlags:]):
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::resendLastVisibleContentRects):
(WebKit::WebPageProxy::displayedContentScale const):
(WebKit::WebPageProxy::exposedContentRect const):
(WebKit::WebPageProxy::unobscuredContentRect const):
(WebKit::WebPageProxy::inStableState const):
(WebKit::WebPageProxy::unobscuredContentRectRespectingInputViewBounds const):
(WebKit::WebPageProxy::layoutViewportRect const):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::updateRendering):
* Source/WebKit/WebProcess/WebPage/WebFrame.h:
(WebKit::WebFrame::firstLayerTreeTransactionIDAfterDidCommitLoad const):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPageInternals.h:
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::attemptSyntheticClick):
(WebKit::WebPage::handleDoubleTapForDoubleClickAtPoint):
(WebKit::WebPage::commitPotentialTap):
(WebKit::WebPage::scaleFromUIProcess const):
(WebKit::WebPage::updateVisibleContentRects):

Canonical link: https://commits.webkit.org/290132@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