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