Changeset 246592 in webkit


Ignore:
Timestamp:
Jun 19, 2019 10:13:25 AM (5 years ago)
Author:
commit-queue@webkit.org
Message:

[GTK] Page blinks after navigation swipe if it triggered PSON
https://bugs.webkit.org/show_bug.cgi?id=198996

Patch by Alexander Mikhaylenko <exalm7659@gmail.com> 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:
Location:
trunk/Source/WebKit
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r246588 r246592  
     12019-06-19  Alexander Mikhaylenko  <exalm7659@gmail.com>
     2
     3        [GTK] Page blinks after navigation swipe if it triggered PSON
     4        https://bugs.webkit.org/show_bug.cgi?id=198996
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        Disconnect and then reconnect ViewGestureController during process swap
     9        instead of destroying and re-creating it.
     10
     11        * UIProcess/API/gtk/PageClientImpl.cpp:
     12        (WebKit::PageClientImpl::PageClientImpl::processWillSwap): Added.
     13        (WebKit::PageClientImpl::PageClientImpl::processDidExit): Implemented.
     14        * UIProcess/API/gtk/PageClientImpl.h:
     15        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
     16        (webkitWebViewBaseWillSwapWebProcess): Added.
     17        Disconnect ViewGestureController if it exists.
     18        (webkitWebViewBaseDidExitWebProcess): Added.
     19        Destroy ViewGestureController.
     20        (webkitWebViewBaseDidRelaunchWebProcess):
     21        Reconnect the ViewGestureController if it exists.
     22        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
     23
    1242019-06-19  Takashi Komori  <Takashi.Komori@sony.com>
    225
  • trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp

    r245807 r246592  
    119119}
    120120
     121void PageClientImpl::PageClientImpl::processWillSwap()
     122{
     123    webkitWebViewBaseWillSwapWebProcess(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
     124}
     125
    121126void PageClientImpl::PageClientImpl::processDidExit()
    122127{
    123     notImplemented();
     128    webkitWebViewBaseDidExitWebProcess(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
    124129}
    125130
  • trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h

    r245807 r246592  
    7070    bool isViewVisible() override;
    7171    bool isViewInWindow() override;
     72    void processWillSwap() override;
    7273    void processDidExit() override;
    7374    void didRelaunchProcess() override;
  • trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp

    r246496 r246592  
    17011701}
    17021702
     1703void webkitWebViewBaseWillSwapWebProcess(WebKitWebViewBase* webkitWebViewBase)
     1704{
     1705    WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv;
     1706
     1707    if (priv->viewGestureController)
     1708        priv->viewGestureController->disconnectFromProcess();
     1709}
     1710
     1711void webkitWebViewBaseDidExitWebProcess(WebKitWebViewBase* webkitWebViewBase)
     1712{
     1713    webkitWebViewBase->priv->viewGestureController = nullptr;
     1714}
     1715
    17031716void webkitWebViewBaseDidRelaunchWebProcess(WebKitWebViewBase* webkitWebViewBase)
    17041717{
     
    17071720
    17081721    WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv;
    1709     priv->viewGestureController = std::make_unique<WebKit::ViewGestureController>(*priv->pageProxy);
    1710     priv->viewGestureController->setSwipeGestureEnabled(priv->isBackForwardNavigationGestureEnabled);
     1722
     1723    if (priv->viewGestureController)
     1724        priv->viewGestureController->connectToProcess();
     1725    else {
     1726        priv->viewGestureController = std::make_unique<WebKit::ViewGestureController>(*priv->pageProxy);
     1727        priv->viewGestureController->setSwipeGestureEnabled(priv->isBackForwardNavigationGestureEnabled);
     1728    }
    17111729}
    17121730
  • trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h

    r245807 r246592  
    7272void webkitWebViewBaseExitAcceleratedCompositingMode(WebKitWebViewBase*);
    7373bool webkitWebViewBaseMakeGLContextCurrent(WebKitWebViewBase*);
     74void webkitWebViewBaseWillSwapWebProcess(WebKitWebViewBase*);
     75void webkitWebViewBaseDidExitWebProcess(WebKitWebViewBase*);
    7476void webkitWebViewBaseDidRelaunchWebProcess(WebKitWebViewBase*);
    7577void webkitWebViewBasePageClosed(WebKitWebViewBase*);
Note: See TracChangeset for help on using the changeset viewer.