Title: [233678] trunk/Source/WebKit
- Revision
- 233678
- Author
- [email protected]
- Date
- 2018-07-09 23:23:53 -0700 (Mon, 09 Jul 2018)
Log Message
REGRESSION (r232416): Flickering when going back to Google search results on back swipe
https://bugs.webkit.org/show_bug.cgi?id=187506
<rdar://problem/41939594>
Reviewed by Chris Dumez.
Same document navigations won't have a preceding didStartProvisionalLoadForMainFrame,
so the code introduced in r232416 would immediately remove the snapshot
upon any same document navigation.
Instead, adjust r232416 slightly to start tracking snapshot removal events
after didStartProvisionalLoad OR didSameDocumentNavigation. Call the block
that starts tracking, then immediately fire the same-document navigation event.
* UIProcess/Cocoa/ViewGestureController.cpp:
(WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
(WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
(WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
(WebKit::ViewGestureController::SnapshotRemovalTracker::stopWaitingForEvent):
* UIProcess/Cocoa/ViewGestureController.h:
* UIProcess/ios/ViewGestureControllerIOS.mm:
(WebKit::ViewGestureController::endSwipeGesture):
* UIProcess/mac/ViewGestureControllerMac.mm:
(WebKit::ViewGestureController::endSwipeGesture):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (233677 => 233678)
--- trunk/Source/WebKit/ChangeLog 2018-07-10 06:13:40 UTC (rev 233677)
+++ trunk/Source/WebKit/ChangeLog 2018-07-10 06:23:53 UTC (rev 233678)
@@ -1,3 +1,30 @@
+2018-07-09 Tim Horton <[email protected]>
+
+ REGRESSION (r232416): Flickering when going back to Google search results on back swipe
+ https://bugs.webkit.org/show_bug.cgi?id=187506
+ <rdar://problem/41939594>
+
+ Reviewed by Chris Dumez.
+
+ Same document navigations won't have a preceding didStartProvisionalLoadForMainFrame,
+ so the code introduced in r232416 would immediately remove the snapshot
+ upon any same document navigation.
+
+ Instead, adjust r232416 slightly to start tracking snapshot removal events
+ after didStartProvisionalLoad OR didSameDocumentNavigation. Call the block
+ that starts tracking, then immediately fire the same-document navigation event.
+
+ * UIProcess/Cocoa/ViewGestureController.cpp:
+ (WebKit::ViewGestureController::didStartProvisionalLoadForMainFrame):
+ (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
+ (WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
+ (WebKit::ViewGestureController::SnapshotRemovalTracker::stopWaitingForEvent):
+ * UIProcess/Cocoa/ViewGestureController.h:
+ * UIProcess/ios/ViewGestureControllerIOS.mm:
+ (WebKit::ViewGestureController::endSwipeGesture):
+ * UIProcess/mac/ViewGestureControllerMac.mm:
+ (WebKit::ViewGestureController::endSwipeGesture):
+
2018-07-09 Youenn Fablet <[email protected]>
Remove cfca.com.npCryptoKit.CGB.MAC.sb and cfca.com.npP11CertEnroll.MAC.CGB.sb
Modified: trunk/Source/WebKit/UIProcess/Cocoa/ViewGestureController.cpp (233677 => 233678)
--- trunk/Source/WebKit/UIProcess/Cocoa/ViewGestureController.cpp 2018-07-10 06:13:40 UTC (rev 233677)
+++ trunk/Source/WebKit/UIProcess/Cocoa/ViewGestureController.cpp 2018-07-10 06:23:53 UTC (rev 233678)
@@ -126,8 +126,8 @@
void ViewGestureController::didStartProvisionalLoadForMainFrame()
{
- if (auto provisionalLoadCallback = WTFMove(m_provisionalLoadCallback))
- provisionalLoadCallback();
+ if (auto provisionalOrSameDocumentLoadCallback = WTFMove(m_provisionalOrSameDocumentLoadCallback))
+ provisionalOrSameDocumentLoadCallback();
}
@@ -158,8 +158,8 @@
void ViewGestureController::didReachMainFrameLoadTerminalState()
{
- if (m_provisionalLoadCallback) {
- m_provisionalLoadCallback = nullptr;
+ if (m_provisionalOrSameDocumentLoadCallback) {
+ m_provisionalOrSameDocumentLoadCallback = nullptr;
removeSwipeSnapshot();
return;
}
@@ -188,12 +188,10 @@
void ViewGestureController::didSameDocumentNavigationForMainFrame(SameDocumentNavigationType type)
{
- if (m_provisionalLoadCallback) {
- m_provisionalLoadCallback = nullptr;
- removeSwipeSnapshot();
- return;
- }
+ if (auto provisionalOrSameDocumentLoadCallback = WTFMove(m_provisionalOrSameDocumentLoadCallback))
+ provisionalOrSameDocumentLoadCallback();
+
bool cancelledOutstandingEvent = false;
// Same-document navigations don't have a main frame load or first visually non-empty layout.
@@ -287,9 +285,6 @@
if (!(m_outstandingEvents & event))
return false;
-#if LOG_DISABLED
- UNUSED_PARAM(logReason);
-#endif
log(logReason + eventsDescription(event));
m_outstandingEvents &= ~event;
Modified: trunk/Source/WebKit/UIProcess/Cocoa/ViewGestureController.h (233677 => 233678)
--- trunk/Source/WebKit/UIProcess/Cocoa/ViewGestureController.h 2018-07-10 06:13:40 UTC (rev 233677)
+++ trunk/Source/WebKit/UIProcess/Cocoa/ViewGestureController.h 2018-07-10 06:23:53 UTC (rev 233678)
@@ -296,7 +296,7 @@
uint64_t m_snapshotRemovalTargetRenderTreeSize { 0 };
#endif
- WTF::Function<void()> m_provisionalLoadCallback;
+ WTF::Function<void()> m_provisionalOrSameDocumentLoadCallback;
SnapshotRemovalTracker m_snapshotRemovalTracker;
};
Modified: trunk/Source/WebKit/UIProcess/ios/ViewGestureControllerIOS.mm (233677 => 233678)
--- trunk/Source/WebKit/UIProcess/ios/ViewGestureControllerIOS.mm 2018-07-10 06:13:40 UTC (rev 233677)
+++ trunk/Source/WebKit/UIProcess/ios/ViewGestureControllerIOS.mm 2018-07-10 06:23:53 UTC (rev 233678)
@@ -301,7 +301,7 @@
return;
}
- m_provisionalLoadCallback = [this] {
+ m_provisionalOrSameDocumentLoadCallback = [this] {
if (auto drawingArea = m_webPageProxy.drawingArea()) {
uint64_t pageID = m_webPageProxy.pageID();
GestureID gestureID = m_currentGestureID;
Modified: trunk/Source/WebKit/UIProcess/mac/ViewGestureControllerMac.mm (233677 => 233678)
--- trunk/Source/WebKit/UIProcess/mac/ViewGestureControllerMac.mm 2018-07-10 06:13:40 UTC (rev 233677)
+++ trunk/Source/WebKit/UIProcess/mac/ViewGestureControllerMac.mm 2018-07-10 06:23:53 UTC (rev 233678)
@@ -743,7 +743,7 @@
m_webPageProxy.navigationGestureDidEnd(true, *targetItem);
m_webPageProxy.goToBackForwardItem(*targetItem);
- m_provisionalLoadCallback = [this, renderTreeSize] {
+ m_provisionalOrSameDocumentLoadCallback = [this, renderTreeSize] {
SnapshotRemovalTracker::Events desiredEvents = SnapshotRemovalTracker::VisuallyNonEmptyLayout
| SnapshotRemovalTracker::MainFrameLoad
| SnapshotRemovalTracker::SubresourceLoads
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes