Title: [246592] trunk/Source/WebKit
- Revision
- 246592
- Author
- [email protected]
- Date
- 2019-06-19 10:13:25 -0700 (Wed, 19 Jun 2019)
Log Message
[GTK] Page blinks after navigation swipe if it triggered PSON
https://bugs.webkit.org/show_bug.cgi?id=198996
Patch by Alexander Mikhaylenko <[email protected]> on 2019-06-19
Reviewed by Michael Catanzaro.
Disconnect and then reconnect ViewGestureController during process swap
instead of destroying and re-creating it.
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::PageClientImpl::processWillSwap): Added.
(WebKit::PageClientImpl::PageClientImpl::processDidExit): Implemented.
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseWillSwapWebProcess): Added.
Disconnect ViewGestureController if it exists.
(webkitWebViewBaseDidExitWebProcess): Added.
Destroy ViewGestureController.
(webkitWebViewBaseDidRelaunchWebProcess):
Reconnect the ViewGestureController if it exists.
* UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (246591 => 246592)
--- trunk/Source/WebKit/ChangeLog 2019-06-19 16:59:20 UTC (rev 246591)
+++ trunk/Source/WebKit/ChangeLog 2019-06-19 17:13:25 UTC (rev 246592)
@@ -1,3 +1,26 @@
+2019-06-19 Alexander Mikhaylenko <[email protected]>
+
+ [GTK] Page blinks after navigation swipe if it triggered PSON
+ https://bugs.webkit.org/show_bug.cgi?id=198996
+
+ Reviewed by Michael Catanzaro.
+
+ Disconnect and then reconnect ViewGestureController during process swap
+ instead of destroying and re-creating it.
+
+ * UIProcess/API/gtk/PageClientImpl.cpp:
+ (WebKit::PageClientImpl::PageClientImpl::processWillSwap): Added.
+ (WebKit::PageClientImpl::PageClientImpl::processDidExit): Implemented.
+ * UIProcess/API/gtk/PageClientImpl.h:
+ * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+ (webkitWebViewBaseWillSwapWebProcess): Added.
+ Disconnect ViewGestureController if it exists.
+ (webkitWebViewBaseDidExitWebProcess): Added.
+ Destroy ViewGestureController.
+ (webkitWebViewBaseDidRelaunchWebProcess):
+ Reconnect the ViewGestureController if it exists.
+ * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
+
2019-06-19 Takashi Komori <[email protected]>
[Curl] CurlRequestScheduler doesn't terminate worker thread in a certain situation.
Modified: trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp (246591 => 246592)
--- trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp 2019-06-19 16:59:20 UTC (rev 246591)
+++ trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp 2019-06-19 17:13:25 UTC (rev 246592)
@@ -118,9 +118,14 @@
return webkitWebViewBaseIsInWindow(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
}
+void PageClientImpl::PageClientImpl::processWillSwap()
+{
+ webkitWebViewBaseWillSwapWebProcess(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
+}
+
void PageClientImpl::PageClientImpl::processDidExit()
{
- notImplemented();
+ webkitWebViewBaseDidExitWebProcess(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
}
void PageClientImpl::didRelaunchProcess()
Modified: trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h (246591 => 246592)
--- trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h 2019-06-19 16:59:20 UTC (rev 246591)
+++ trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h 2019-06-19 17:13:25 UTC (rev 246592)
@@ -69,6 +69,7 @@
bool isViewFocused() override;
bool isViewVisible() override;
bool isViewInWindow() override;
+ void processWillSwap() override;
void processDidExit() override;
void didRelaunchProcess() override;
void pageClosed() override;
Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp (246591 => 246592)
--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp 2019-06-19 16:59:20 UTC (rev 246591)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp 2019-06-19 17:13:25 UTC (rev 246592)
@@ -1700,6 +1700,19 @@
return webkitWebViewBase->priv->acceleratedBackingStore->makeContextCurrent();
}
+void webkitWebViewBaseWillSwapWebProcess(WebKitWebViewBase* webkitWebViewBase)
+{
+ WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv;
+
+ if (priv->viewGestureController)
+ priv->viewGestureController->disconnectFromProcess();
+}
+
+void webkitWebViewBaseDidExitWebProcess(WebKitWebViewBase* webkitWebViewBase)
+{
+ webkitWebViewBase->priv->viewGestureController = nullptr;
+}
+
void webkitWebViewBaseDidRelaunchWebProcess(WebKitWebViewBase* webkitWebViewBase)
{
// Queue a resize to ensure the new DrawingAreaProxy is resized.
@@ -1706,8 +1719,13 @@
gtk_widget_queue_resize_no_redraw(GTK_WIDGET(webkitWebViewBase));
WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv;
- priv->viewGestureController = std::make_unique<WebKit::ViewGestureController>(*priv->pageProxy);
- priv->viewGestureController->setSwipeGestureEnabled(priv->isBackForwardNavigationGestureEnabled);
+
+ if (priv->viewGestureController)
+ priv->viewGestureController->connectToProcess();
+ else {
+ priv->viewGestureController = std::make_unique<WebKit::ViewGestureController>(*priv->pageProxy);
+ priv->viewGestureController->setSwipeGestureEnabled(priv->isBackForwardNavigationGestureEnabled);
+ }
}
void webkitWebViewBasePageClosed(WebKitWebViewBase* webkitWebViewBase)
Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h (246591 => 246592)
--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h 2019-06-19 16:59:20 UTC (rev 246591)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h 2019-06-19 17:13:25 UTC (rev 246592)
@@ -71,6 +71,8 @@
void webkitWebViewBaseUpdateAcceleratedCompositingMode(WebKitWebViewBase*, const WebKit::LayerTreeContext&);
void webkitWebViewBaseExitAcceleratedCompositingMode(WebKitWebViewBase*);
bool webkitWebViewBaseMakeGLContextCurrent(WebKitWebViewBase*);
+void webkitWebViewBaseWillSwapWebProcess(WebKitWebViewBase*);
+void webkitWebViewBaseDidExitWebProcess(WebKitWebViewBase*);
void webkitWebViewBaseDidRelaunchWebProcess(WebKitWebViewBase*);
void webkitWebViewBasePageClosed(WebKitWebViewBase*);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes