Title: [186586] trunk/Source/WebKit2
Revision
186586
Author
m...@apple.com
Date
2015-07-09 00:01:49 -0700 (Thu, 09 Jul 2015)

Log Message

[Cocoa] Report the first paint after committing a load as a rendering progress event
https://bugs.webkit.org/show_bug.cgi?id=146765

Reviewed by Tim Horton.

* Shared/API/Cocoa/_WKRenderingProgressEvents.h: Added _WKRenderingProgressEventFirstPaint.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didCommitLayerTree:]): If this is the first layer tree commit since the load
was committed, and the delegate is observing _WKRenderingProgressEventFirstPaint, call
NavigationState::didFirstPaint.

* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::didFirstPaint): Added. Calls -_webView:renderingProgressDidChange:
with _WKRenderingProgressEventFirstPaint.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (186585 => 186586)


--- trunk/Source/WebKit2/ChangeLog	2015-07-09 06:41:12 UTC (rev 186585)
+++ trunk/Source/WebKit2/ChangeLog	2015-07-09 07:01:49 UTC (rev 186586)
@@ -1,3 +1,22 @@
+2015-07-09  Dan Bernstein  <m...@apple.com>
+
+        [Cocoa] Report the first paint after committing a load as a rendering progress event
+        https://bugs.webkit.org/show_bug.cgi?id=146765
+
+        Reviewed by Tim Horton.
+
+        * Shared/API/Cocoa/_WKRenderingProgressEvents.h: Added _WKRenderingProgressEventFirstPaint.
+
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _didCommitLayerTree:]): If this is the first layer tree commit since the load
+        was committed, and the delegate is observing _WKRenderingProgressEventFirstPaint, call
+        NavigationState::didFirstPaint.
+
+        * UIProcess/Cocoa/NavigationState.h:
+        * UIProcess/Cocoa/NavigationState.mm:
+        (WebKit::NavigationState::didFirstPaint): Added. Calls -_webView:renderingProgressDidChange:
+        with _WKRenderingProgressEventFirstPaint.
+
 2015-07-08  Jinwoo Song  <jinwoo7.s...@samsung.com>
 
         [EFL] When closing inspector window, EwkView is not released properly.

Modified: trunk/Source/WebKit2/Shared/API/Cocoa/_WKRenderingProgressEvents.h (186585 => 186586)


--- trunk/Source/WebKit2/Shared/API/Cocoa/_WKRenderingProgressEvents.h	2015-07-09 06:41:12 UTC (rev 186585)
+++ trunk/Source/WebKit2/Shared/API/Cocoa/_WKRenderingProgressEvents.h	2015-07-09 07:01:49 UTC (rev 186586)
@@ -33,7 +33,8 @@
     _WKRenderingProgressEventFirstPaintWithSignificantArea = 1 << 2,
     _WKRenderingProgressEventReachedSessionRestorationRenderTreeSizeThreshold WK_ENUM_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA) = 1 << 3,
     _WKRenderingProgressEventFirstLayoutAfterSuppressedIncrementalRendering WK_ENUM_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA) = 1 << 4,
-    _WKRenderingProgressEventFirstPaintAfterSuppressedIncrementalRendering WK_ENUM_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA) = 1 << 5
+    _WKRenderingProgressEventFirstPaintAfterSuppressedIncrementalRendering WK_ENUM_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA) = 1 << 5,
+    _WKRenderingProgressEventFirstPaint WK_ENUM_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA) = 1 << 6,
 } WK_ENUM_AVAILABLE(10_10, 8_0);
 
 #endif

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (186585 => 186586)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2015-07-09 06:41:12 UTC (rev 186585)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2015-07-09 07:01:49 UTC (rev 186586)
@@ -971,6 +971,8 @@
         _needsResetViewStateAfterCommitLoadForMainFrame = NO;
         [_scrollView setContentOffset:[self _adjustedContentOffset:CGPointZero]];
         [self _updateVisibleContentRects];
+        if (_observedRenderingProgressEvents & _WKRenderingProgressEventFirstPaint)
+            _navigationState->didFirstPaint();
     }
 
     bool isTransactionAfterPageRestore = layerTreeTransaction.transactionID() >= _firstTransactionIDAfterPageRestore;

Modified: trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h (186585 => 186586)


--- trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h	2015-07-09 06:41:12 UTC (rev 186585)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h	2015-07-09 07:01:49 UTC (rev 186586)
@@ -73,6 +73,8 @@
     void navigationGestureDidEnd(bool willNavigate, WebBackForwardListItem&);
     void willRecordNavigationSnapshot(WebBackForwardListItem&);
 
+    void didFirstPaint();
+
 private:
     class NavigationClient final : public API::NavigationClient {
     public:

Modified: trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm (186585 => 186586)


--- trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm	2015-07-09 06:41:12 UTC (rev 186585)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm	2015-07-09 07:01:49 UTC (rev 186586)
@@ -224,6 +224,18 @@
     [static_cast<id <WKNavigationDelegatePrivate>>(navigationDelegate) _webView:m_webView willSnapshotBackForwardListItem:wrapper(item)];
 }
 
+void NavigationState::didFirstPaint()
+{
+    if (!m_navigationDelegateMethods.webViewRenderingProgressDidChange)
+        return;
+
+    auto navigationDelegate = m_navigationDelegate.get();
+    if (!navigationDelegate)
+        return;
+
+    [static_cast<id <WKNavigationDelegatePrivate>>(navigationDelegate) _webView:m_webView renderingProgressDidChange:_WKRenderingProgressEventFirstPaint];
+}
+
 NavigationState::NavigationClient::NavigationClient(NavigationState& navigationState)
     : m_navigationState(navigationState)
 {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to