WebKit Bugzilla
Attachment 372465 Details for
Bug 198996
: [GTK] Page blinks after navigation swipe if it triggered PSON
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-198996-20190619212155.patch (text/plain), 5.50 KB, created by
Alice Mikhaylenko
on 2019-06-19 09:21:56 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alice Mikhaylenko
Created:
2019-06-19 09:21:56 PDT
Size:
5.50 KB
patch
obsolete
>Subversion Revision: 246536 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 5f21dbdbff30847cc3f9d43c34489b134cc5b0ad..d48d2a3fe099b673762558e07d59799bcf8addbc 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,26 @@ >+2019-06-19 Alexander Mikhaylenko <exalm7659@gmail.com> >+ >+ [GTK] Page blinks after navigation swipe if it triggered PSON >+ https://bugs.webkit.org/show_bug.cgi?id=198996 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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-18 Dean Jackson <dino@apple.com> > > Attachment elements are missing context menu previews >diff --git a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp >index 4979df315b38cdb03b2cd31c1c455289e1c3402d..d7f9f99e4520a82aea0c3a95ef991f60d694a427 100644 >--- a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp >+++ b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp >@@ -118,9 +118,14 @@ bool PageClientImpl::isViewInWindow() > 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() >diff --git a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h >index 6abb2d5f0363fa9518a4750c217ae23b9997412f..9af1e84809840a7b2afa7ca41bfe1d7f343a9fb9 100644 >--- a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h >+++ b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h >@@ -69,6 +69,7 @@ private: > bool isViewFocused() override; > bool isViewVisible() override; > bool isViewInWindow() override; >+ void processWillSwap() override; > void processDidExit() override; > void didRelaunchProcess() override; > void pageClosed() override; >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >index 25b937d297ad3a7b36369c02d6d3a822ca3e0ae9..77e04143130a849505fdad9714c0622342a13afd 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >@@ -1700,14 +1700,32 @@ bool webkitWebViewBaseMakeGLContextCurrent(WebKitWebViewBase* webkitWebViewBase) > 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. > 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) >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h >index c00e07df44273bc8353a965a8718455f5542b19b..d1a6f0246bf8b3ae58293577d5deaae70c6997c2 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h >@@ -71,6 +71,8 @@ void webkitWebViewBaseEnterAcceleratedCompositingMode(WebKitWebViewBase*, const > void webkitWebViewBaseUpdateAcceleratedCompositingMode(WebKitWebViewBase*, const WebKit::LayerTreeContext&); > void webkitWebViewBaseExitAcceleratedCompositingMode(WebKitWebViewBase*); > bool webkitWebViewBaseMakeGLContextCurrent(WebKitWebViewBase*); >+void webkitWebViewBaseWillSwapWebProcess(WebKitWebViewBase*); >+void webkitWebViewBaseDidExitWebProcess(WebKitWebViewBase*); > void webkitWebViewBaseDidRelaunchWebProcess(WebKitWebViewBase*); > void webkitWebViewBasePageClosed(WebKitWebViewBase*); >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198996
:
372456
| 372465