[webkit-changes] [WebKit/WebKit] b6acbf: Add SPI to report page load time
Ryosuke Niwa
noreply at github.com
Tue Aug 27 21:27:21 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b6acbfad5859fb4175817208e3bcb6728d85ac32
https://github.com/WebKit/WebKit/commit/b6acbfad5859fb4175817208e3bcb6728d85ac32
Author: Ryosuke Niwa <rniwa at 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
More information about the webkit-changes
mailing list