Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b6acbfad5859fb4175817208e3bcb6728d85ac32
      
https://github.com/WebKit/WebKit/commit/b6acbfad5859fb4175817208e3bcb6728d85ac32
  Author: Ryosuke Niwa <rn...@webkit.org>
  Date:   2024-08-27 (Tue, 27 Aug 2024)

  Changed paths:
    M Source/WebKit/Shared/API/Cocoa/WebKitPrivate.h
    M Source/WebKit/SourcesCocoa.txt
    M Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    A Source/WebKit/UIProcess/API/Cocoa/_WKPageLoadTiming.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKPageLoadTiming.mm
    A Source/WebKit/UIProcess/API/Cocoa/_WKPageLoadTimingInternal.h
    M Source/WebKit/UIProcess/API/mac/WKWebViewTestingMac.mm
    M Source/WebKit/UIProcess/Cocoa/CoreTelephonyUtilities.h
    M Source/WebKit/UIProcess/Cocoa/NavigationState.h
    M Source/WebKit/UIProcess/Cocoa/NavigationState.mm
    M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
    M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
    M Source/WebKit/UIProcess/ProvisionalPageProxy.h
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm
    M Source/WebKit/UIProcess/RemotePageProxy.cpp
    M Source/WebKit/UIProcess/RemotePageProxy.h
    A Source/WebKit/UIProcess/WebPageLoadTiming.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.messages.in
    M Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm
    M Tools/TestWebKitAPI/cocoa/TestNavigationDelegate.h
    M Tools/TestWebKitAPI/cocoa/TestNavigationDelegate.mm

  Log Message:
  -----------
  Add SPI to report page load time
https://bugs.webkit.org/show_bug.cgi?id=278554

Reviewed by Chris Dumez.

Add new selector to WKNavigationDelegate which reports the key page load time 
metrics
such as when the first meaningful paint has happened, main frame's document had
finished loading (i.e. parsing), and when all subresources had finished loading 
using
_WKPageLoadTiming.

Subresources are assumed to be finished loading when all existing subresources 
had
finished loading and no new load was initiated within 100ms.

We use WallTime throughout instead of MonotonicTime since MonotonicTime doesn't
convert well to NSDate.

* Source/WebKit/Shared/API/Cocoa/WebKitPrivate.h:
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
* Source/WebKit/UIProcess/API/Cocoa/_WKPageLoadTiming.h: Added.
* Source/WebKit/UIProcess/API/Cocoa/_WKPageLoadTiming.mm: Added.
(nsDateFromMonotonicTime):
(-[_WKPageLoadTiming _initWithTiming:]):
(-[_WKPageLoadTiming navigationStart]):
(-[_WKPageLoadTiming firstMeaningfulPaint]):
(-[_WKPageLoadTiming documentFinishedLoading]):
(-[_WKPageLoadTiming allSubresourcesFinishedLoading]):
* Source/WebKit/UIProcess/API/Cocoa/_WKPageLoadTimingInternal.h: Added.
* Source/WebKit/UIProcess/Cocoa/CoreTelephonyUtilities.h:
* Source/WebKit/UIProcess/Cocoa/NavigationState.h:
* Source/WebKit/UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::didGeneratePageLoadTiming):
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::didGeneratePageLoadTiming):
(WebKit::WebPageProxy::didCommitLayerTree):
* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::startNetworkRequestsForPageLoadTiming):
(WebKit::ProvisionalPageProxy::didReceiveMessage):
* Source/WebKit/UIProcess/ProvisionalPageProxy.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeTransaction):
* Source/WebKit/UIProcess/RemotePageProxy.cpp:
(WebKit::RemotePageProxy::didStartProvisionalLoadForFrame):
* Source/WebKit/UIProcess/RemotePageProxy.h:
* Source/WebKit/UIProcess/WebPageLoadTiming.h: Added,
(WebKit::WebPageLoadTiming::WebPageLoadTiming):
(WebKit::WebPageLoadTiming::navigationStart const):
(WebKit::WebPageLoadTiming::firstMeaningfulPaint const):
(WebKit::WebPageLoadTiming::setFirstMeaningfulPaint):
(WebKit::WebPageLoadTiming::documentFinishedLoading const):
(WebKit::WebPageLoadTiming::setDocumentFinishedLoading):
(WebKit::WebPageLoadTiming::allSubresourcesFinishedLoading const):
(WebKit::WebPageLoadTiming::updateEndOfNetworkRequests):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::startNetworkRequestsForPageLoadTiming):
(WebKit::WebPageProxy::endNetworkRequestsForPageLoadTiming):
(WebKit::WebPageProxy::generatePageLoadingTimingSoon):
(WebKit::WebPageProxy::didEndNetworkRequestsForPageLoadTimingTimerFired):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
(WebKit::WebPageProxy::didLayoutForCustomContentProvider):
(WebKit::WebPageProxy::didReachLayoutMilestone):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::useNetworkLoader):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp:
(WebKit::WebLocalFrameLoaderClient::dispatchDidStartProvisionalLoad):
(WebKit::WebLocalFrameLoaderClient::dispatchDidFinishDocumentLoad):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_textAnimationController):
(WebKit::WebPage::addResourceRequest):
(WebKit::WebPage::removeResourceRequest):
(WebKit::WebPage::dispatchDidReachLayoutMilestone):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::sendPendingNewlyReachedPaintingMilestones):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:
(TEST(WKNavigation, GeneratePageLoadTiming)):
* Tools/TestWebKitAPI/cocoa/TestNavigationDelegate.h:
* Tools/TestWebKitAPI/cocoa/TestNavigationDelegate.mm:
(-[TestNavigationDelegate _webView:didGeneratePageLoadTiming:]):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to