⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 263825 in webkit


Ignore:
Timestamp:
Jul 1, 2020, 5:32:08 PM (6 years ago)
Author:
timothy_horton@apple.com
Message:

Swipe snapshot is removed too early when swiping away from a page that is still loading
https://bugs.webkit.org/show_bug.cgi?id=213763
<rdar://problem/64576811>

Reviewed by Darin Adler.

Source/WebKit:

Test: http/tests/swipe/swipe-back-with-outstanding-load-cancellation.html

When swiping back from a page that is still loading, when the swipe commits,
and we start navigating back to the previous page, the unfinished forward navigation
is cancelled.

This cancellation resulted in a "didFailLoadForMainFrame" making it to ViewGestureController,
which took it as an indication that the navigation *it* was interested in (the back navigation)
had failed, and immediately removed the snapshot.

Instead of listening to any random navigation's load notifications, keep track of the navigation
started by goToBackForwardItem, and only listen to notifications from it, ignoring the others.

This requires a bunch of plumbing to get the navigation from WebPageProxy to ViewGestureController,
but is otherwise fairly trivial.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::didFinishNavigation):
(WebKit::PageClientImpl::didFailNavigation):
(WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.
(WebKit::PageClientImpl::didFailLoadForMainFrame): Deleted.

  • UIProcess/API/gtk/PageClientImpl.h:
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseDidFinishLoadForMainFrame):
(webkitWebViewBaseDidFailLoadForMainFrame):

  • UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
  • UIProcess/API/ios/WKWebViewIOS.h:
  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _didFinishNavigation:]):
(-[WKWebView _didFailNavigation:]):
(-[WKWebView _didFinishLoadForMainFrame]): Deleted.
(-[WKWebView _didFailLoadForMainFrame]): Deleted.

  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::didFinishNavigation):
(WebKit::PageClientImpl::didFailNavigation):
(WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.
(WebKit::PageClientImpl::didFailLoadForMainFrame): Deleted.

  • UIProcess/API/wpe/PageClientImpl.h:
  • UIProcess/PageClient.h:
  • UIProcess/ViewGestureController.cpp:

(WebKit::ViewGestureController::didReachNavigationTerminalState):
(WebKit::ViewGestureController::willEndSwipeGesture):
(WebKit::ViewGestureController::didReachMainFrameLoadTerminalState): Deleted.

  • UIProcess/ViewGestureController.h:

(WebKit::ViewGestureController::didFinishNavigation):
(WebKit::ViewGestureController::didFailNavigation):
(WebKit::ViewGestureController::didFinishLoadForMainFrame): Deleted.
(WebKit::ViewGestureController::didFailLoadForMainFrame): Deleted.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):

  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didFinishNavigation):
(WebKit::PageClientImpl::didFailNavigation):
(WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.
(WebKit::PageClientImpl::didFailLoadForMainFrame): Deleted.

  • UIProcess/ios/ViewGestureControllerIOS.mm:

(WebKit::ViewGestureController::willEndSwipeGesture):
(WebKit::ViewGestureController::resetState):

  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::didFinishNavigation):
(WebKit::PageClientImpl::didFailNavigation):
(WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.
(WebKit::PageClientImpl::didFailLoadForMainFrame): Deleted.

  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::resetState):

  • UIProcess/playstation/PageClientImpl.cpp:

(WebKit::PageClientImpl::didFinishNavigation):
(WebKit::PageClientImpl::didFailNavigation):
(WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.
(WebKit::PageClientImpl::didFailLoadForMainFrame): Deleted.

  • UIProcess/playstation/PageClientImpl.h:
  • UIProcess/win/PageClientImpl.cpp:

(WebKit::PageClientImpl::didFinishNavigation):
(WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.

  • UIProcess/win/PageClientImpl.h:

LayoutTests:

  • http/tests/swipe/resources/swipe-test.js: Added.
  • http/tests/swipe/swipe-back-with-outstanding-load-cancellation-expected.txt: Added.
  • http/tests/swipe/swipe-back-with-outstanding-load-cancellation.html: Added.

Add a test that ensures that we don't remove the swipe snapshot before the "back" page is loaded.
Before this fix, this test fails the assertion that we're on the first page in didRemoveSwipeSnapshotCallback.

Location:
trunk
Files:
5 added
28 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r263823 r263825  
     12020-07-01  Tim Horton  <timothy_horton@apple.com>
     2
     3        Swipe snapshot is removed too early when swiping away from a page that is still loading
     4        https://bugs.webkit.org/show_bug.cgi?id=213763
     5        <rdar://problem/64576811>
     6
     7        Reviewed by Darin Adler.
     8
     9        * http/tests/swipe/resources/swipe-test.js: Added.
     10        * http/tests/swipe/swipe-back-with-outstanding-load-cancellation-expected.txt: Added.
     11        * http/tests/swipe/swipe-back-with-outstanding-load-cancellation.html: Added.
     12        Add a test that ensures that we don't remove the swipe snapshot before the "back" page is loaded.
     13        Before this fix, this test fails the assertion that we're on the first page in didRemoveSwipeSnapshotCallback.
     14
    1152020-07-01  Chris Fleizach  <cfleizach@apple.com>
    216
  • trunk/LayoutTests/TestExpectations

    r263794 r263825  
    4040fast/visual-viewport/tiled-drawing [ Skip ]
    4141swipe [ Skip ]
     42http/tests/swipe [ Skip ]
    4243fast/zooming/ios [ Skip ]
    4344fast/forms/ios [ Skip ]
  • trunk/LayoutTests/platform/ios/TestExpectations

    r263808 r263825  
    1616quicklook [ Pass ]
    1717swipe [ Pass ]
     18http/tests/swipe [ Pass ]
    1819
    1920fast/css/appearance-apple-pay-button.html [ Pass ]
  • trunk/LayoutTests/platform/mac-wk2/TestExpectations

    r263822 r263825  
    2121scrollingcoordinator/ios [ Skip ]
    2222swipe [ Pass ]
     23http/tests/swipe [ Pass ]
    2324tiled-drawing [ Pass ]
    2425
  • trunk/Source/WebKit/ChangeLog

    r263821 r263825  
     12020-07-01  Tim Horton  <timothy_horton@apple.com>
     2
     3        Swipe snapshot is removed too early when swiping away from a page that is still loading
     4        https://bugs.webkit.org/show_bug.cgi?id=213763
     5        <rdar://problem/64576811>
     6
     7        Reviewed by Darin Adler.
     8
     9        Test: http/tests/swipe/swipe-back-with-outstanding-load-cancellation.html
     10
     11        When swiping back from a page that is still loading, when the swipe commits,
     12        and we start navigating back to the previous page, the unfinished forward navigation
     13        is cancelled.
     14
     15        This cancellation resulted in a "didFailLoadForMainFrame" making it to ViewGestureController,
     16        which took it as an indication that the navigation *it* was interested in (the back navigation)
     17        had failed, and immediately removed the snapshot.
     18
     19        Instead of listening to any random navigation's load notifications, keep track of the navigation
     20        started by goToBackForwardItem, and only listen to notifications from it, ignoring the others.
     21
     22        This requires a bunch of plumbing to get the navigation from WebPageProxy to ViewGestureController,
     23        but is otherwise fairly trivial.
     24
     25        * UIProcess/API/gtk/PageClientImpl.cpp:
     26        (WebKit::PageClientImpl::didFinishNavigation):
     27        (WebKit::PageClientImpl::didFailNavigation):
     28        (WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.
     29        (WebKit::PageClientImpl::didFailLoadForMainFrame): Deleted.
     30        * UIProcess/API/gtk/PageClientImpl.h:
     31        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
     32        (webkitWebViewBaseDidFinishLoadForMainFrame):
     33        (webkitWebViewBaseDidFailLoadForMainFrame):
     34        * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
     35        * UIProcess/API/ios/WKWebViewIOS.h:
     36        * UIProcess/API/ios/WKWebViewIOS.mm:
     37        (-[WKWebView _didFinishNavigation:]):
     38        (-[WKWebView _didFailNavigation:]):
     39        (-[WKWebView _didFinishLoadForMainFrame]): Deleted.
     40        (-[WKWebView _didFailLoadForMainFrame]): Deleted.
     41        * UIProcess/API/wpe/PageClientImpl.cpp:
     42        (WebKit::PageClientImpl::didFinishNavigation):
     43        (WebKit::PageClientImpl::didFailNavigation):
     44        (WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.
     45        (WebKit::PageClientImpl::didFailLoadForMainFrame): Deleted.
     46        * UIProcess/API/wpe/PageClientImpl.h:
     47        * UIProcess/PageClient.h:
     48        * UIProcess/ViewGestureController.cpp:
     49        (WebKit::ViewGestureController::didReachNavigationTerminalState):
     50        (WebKit::ViewGestureController::willEndSwipeGesture):
     51        (WebKit::ViewGestureController::didReachMainFrameLoadTerminalState): Deleted.
     52        * UIProcess/ViewGestureController.h:
     53        (WebKit::ViewGestureController::didFinishNavigation):
     54        (WebKit::ViewGestureController::didFailNavigation):
     55        (WebKit::ViewGestureController::didFinishLoadForMainFrame): Deleted.
     56        (WebKit::ViewGestureController::didFailLoadForMainFrame): Deleted.
     57        * UIProcess/WebPageProxy.cpp:
     58        (WebKit::WebPageProxy::didFinishLoadForFrame):
     59        (WebKit::WebPageProxy::didFailLoadForFrame):
     60        (WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
     61        * UIProcess/ios/PageClientImplIOS.h:
     62        * UIProcess/ios/PageClientImplIOS.mm:
     63        (WebKit::PageClientImpl::didFinishNavigation):
     64        (WebKit::PageClientImpl::didFailNavigation):
     65        (WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.
     66        (WebKit::PageClientImpl::didFailLoadForMainFrame): Deleted.
     67        * UIProcess/ios/ViewGestureControllerIOS.mm:
     68        (WebKit::ViewGestureController::willEndSwipeGesture):
     69        (WebKit::ViewGestureController::resetState):
     70        * UIProcess/mac/PageClientImplMac.h:
     71        * UIProcess/mac/PageClientImplMac.mm:
     72        (WebKit::PageClientImpl::didFinishNavigation):
     73        (WebKit::PageClientImpl::didFailNavigation):
     74        (WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.
     75        (WebKit::PageClientImpl::didFailLoadForMainFrame): Deleted.
     76        * UIProcess/mac/ViewGestureControllerMac.mm:
     77        (WebKit::ViewGestureController::resetState):
     78        * UIProcess/playstation/PageClientImpl.cpp:
     79        (WebKit::PageClientImpl::didFinishNavigation):
     80        (WebKit::PageClientImpl::didFailNavigation):
     81        (WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.
     82        (WebKit::PageClientImpl::didFailLoadForMainFrame): Deleted.
     83        * UIProcess/playstation/PageClientImpl.h:
     84        * UIProcess/win/PageClientImpl.cpp:
     85        (WebKit::PageClientImpl::didFinishNavigation):
     86        (WebKit::PageClientImpl::didFinishLoadForMainFrame): Deleted.
     87        * UIProcess/win/PageClientImpl.h:
     88
    1892020-07-01  Brent Fulgham  <bfulgham@apple.com>
    290
  • trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp

    r263652 r263825  
    523523}
    524524
    525 void PageClientImpl::didFinishLoadForMainFrame()
    526 {
    527     webkitWebViewBaseDidFinishLoadForMainFrame(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
    528 }
    529 
    530 void PageClientImpl::didFailLoadForMainFrame()
    531 {
    532     webkitWebViewBaseDidFailLoadForMainFrame(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
     525void PageClientImpl::didFinishNavigation(API::Navigation* navigation)
     526{
     527    webkitWebViewBaseDidFinishNavigation(WEBKIT_WEB_VIEW_BASE(m_viewWidget), navigation);
     528}
     529
     530void PageClientImpl::didFailNavigation(API::Navigation* navigation)
     531{
     532    webkitWebViewBaseDidFailNavigation(WEBKIT_WEB_VIEW_BASE(m_viewWidget), navigation);
    533533}
    534534
  • trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h

    r262680 r263825  
    112112    void didChangeContentSize(const WebCore::IntSize&) override;
    113113    void didCommitLoadForMainFrame(const String& mimeType, bool useCustomContentProvider) override;
    114     void didFailLoadForMainFrame() override;
     114    void didStartProvisionalLoadForMainFrame() override;
     115    void didFirstVisuallyNonEmptyLayoutForMainFrame() override;
     116    void didFinishNavigation(API::Navigation*) override;
     117    void didFailNavigation(API::Navigation*) override;
     118    void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) override;
    115119
    116120    // Auxiliary Client Creation
     
    137141    void willRecordNavigationSnapshot(WebBackForwardListItem&) override;
    138142    void didRemoveNavigationGestureSnapshot() override;
    139 
    140     void didStartProvisionalLoadForMainFrame() override;
    141     void didFirstVisuallyNonEmptyLayoutForMainFrame() override;
    142     void didFinishLoadForMainFrame() override;
    143     void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) override;
    144143
    145144#if ENABLE(TOUCH_EVENTS)
  • trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp

    r262947 r263825  
    23492349}
    23502350
    2351 void webkitWebViewBaseDidFinishLoadForMainFrame(WebKitWebViewBase* webkitWebViewBase)
     2351void webkitWebViewBaseDidFinishNavigation(WebKitWebViewBase* webkitWebViewBase, API::Navigation* navigation)
    23522352{
    23532353#if !USE(GTK4)
    23542354    ViewGestureController* controller = webkitWebViewBaseViewGestureController(webkitWebViewBase);
    23552355    if (controller && controller->isSwipeGestureEnabled())
    2356         controller->didFinishLoadForMainFrame();
    2357 #endif
    2358 }
    2359 
    2360 void webkitWebViewBaseDidFailLoadForMainFrame(WebKitWebViewBase* webkitWebViewBase)
     2356        controller->didFinishNavigation(navigation);
     2357#endif
     2358}
     2359
     2360void webkitWebViewBaseDidFailNavigation(WebKitWebViewBase* webkitWebViewBase, API::Navigation* navigation)
    23612361{
    23622362#if !USE(GTK4)
    23632363    ViewGestureController* controller = webkitWebViewBaseViewGestureController(webkitWebViewBase);
    23642364    if (controller && controller->isSwipeGestureEnabled())
    2365         controller->didFailLoadForMainFrame();
     2365        controller->didFailNavigation(navigation);
    23662366#endif
    23672367}
  • trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h

    r262680 r263825  
    102102void webkitWebViewBaseDidStartProvisionalLoadForMainFrame(WebKitWebViewBase*);
    103103void webkitWebViewBaseDidFirstVisuallyNonEmptyLayoutForMainFrame(WebKitWebViewBase*);
    104 void webkitWebViewBaseDidFinishLoadForMainFrame(WebKitWebViewBase*);
    105 void webkitWebViewBaseDidFailLoadForMainFrame(WebKitWebViewBase*);
     104void webkitWebViewBaseDidFinishNavigation(WebKitWebViewBase*, API::Navigation*);
     105void webkitWebViewBaseDidFailNavigation(WebKitWebViewBase*, API::Navigation*);
    106106void webkitWebViewBaseDidSameDocumentNavigationForMainFrame(WebKitWebViewBase*, WebKit::SameDocumentNavigationType);
    107107void webkitWebViewBaseDidRestoreScrollPosition(WebKitWebViewBase*);
  • trunk/Source/WebKit/UIProcess/API/ios/WKWebViewIOS.h

    r258821 r263825  
    8585
    8686- (void)_didStartProvisionalLoadForMainFrame;
    87 - (void)_didFinishLoadForMainFrame;
    88 - (void)_didFailLoadForMainFrame;
     87- (void)_didFinishNavigation:(API::Navigation*)navigation;
     88- (void)_didFailNavigation:(API::Navigation*)navigation;
    8989- (void)_didSameDocumentNavigationForMainFrame:(WebKit::SameDocumentNavigationType)navigationType;
    9090
  • trunk/Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm

    r263422 r263825  
    21472147}
    21482148
    2149 - (void)_didFinishLoadForMainFrame
     2149- (void)_didFinishNavigation:(API::Navigation*)navigation
    21502150{
    21512151    if (_gestureController)
    2152         _gestureController->didFinishLoadForMainFrame();
    2153 }
    2154 
    2155 - (void)_didFailLoadForMainFrame
     2152        _gestureController->didFinishNavigation(navigation);
     2153}
     2154
     2155- (void)_didFailNavigation:(API::Navigation*)navigation
    21562156{
    21572157    if (_gestureController)
    2158         _gestureController->didFailLoadForMainFrame();
     2158        _gestureController->didFailNavigation(navigation);
    21592159}
    21602160
  • trunk/Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp

    r259112 r263825  
    319319}
    320320
    321 void PageClientImpl::didFinishLoadForMainFrame()
    322 {
    323 }
    324 
    325 void PageClientImpl::didFailLoadForMainFrame()
     321void PageClientImpl::didFinishNavigation(API::Navigation*)
     322{
     323}
     324
     325void PageClientImpl::didFailNavigation(API::Navigation*)
    326326{
    327327}
  • trunk/Source/WebKit/UIProcess/API/wpe/PageClientImpl.h

    r255488 r263825  
    130130    void didStartProvisionalLoadForMainFrame() override;
    131131    void didFirstVisuallyNonEmptyLayoutForMainFrame() override;
    132     void didFinishLoadForMainFrame() override;
    133     void didFailLoadForMainFrame() override;
     132    void didFinishNavigation(API::Navigation*) override;
     133    void didFailNavigation(API::Navigation*) override;
    134134    void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) override;
    135135
  • trunk/Source/WebKit/UIProcess/PageClient.h

    r263819 r263825  
    6868class Attachment;
    6969class HitTestResult;
     70class Navigation;
    7071class Object;
    7172class OpenPanelParameters;
     
    462463
    463464    virtual void didFirstVisuallyNonEmptyLayoutForMainFrame() = 0;
    464     virtual void didFinishLoadForMainFrame() = 0;
    465     virtual void didFailLoadForMainFrame() = 0;
     465    virtual void didFinishNavigation(API::Navigation*) = 0;
     466    virtual void didFailNavigation(API::Navigation*) = 0;
    466467    virtual void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) = 0;
    467468
  • trunk/Source/WebKit/UIProcess/ViewGestureController.cpp

    r259883 r263825  
    208208}
    209209
    210 void ViewGestureController::didReachMainFrameLoadTerminalState()
    211 {
     210void ViewGestureController::didReachNavigationTerminalState(API::Navigation* navigation)
     211{
     212    if (!m_pendingNavigation || navigation != m_pendingNavigation)
     213        return;
     214
    212215    if (m_snapshotRemovalTracker.isPaused() && m_snapshotRemovalTracker.hasRemovalCallback()) {
    213216        removeSwipeSnapshot();
     
    577580
    578581    m_didStartProvisionalLoad = false;
    579     m_webPageProxy.goToBackForwardItem(targetItem);
     582    m_pendingNavigation = m_webPageProxy.goToBackForwardItem(targetItem);
    580583
    581584    auto* currentItem = m_webPageProxy.backForwardList().currentItem();
  • trunk/Source/WebKit/UIProcess/ViewGestureController.h

    r259883 r263825  
    6868#endif
    6969
     70namespace API {
     71class Navigation;
     72}
     73
    7074#if PLATFORM(MAC)
    7175typedef NSEvent* PlatformScrollEvent;
     
    151155
    152156    void didStartProvisionalLoadForMainFrame();
    153     void didFinishLoadForMainFrame() { didReachMainFrameLoadTerminalState(); }
    154     void didFailLoadForMainFrame() { didReachMainFrameLoadTerminalState(); }
     157    void didFinishNavigation(API::Navigation* navigation) { didReachNavigationTerminalState(navigation); }
     158    void didFailNavigation(API::Navigation* navigation) { didReachNavigationTerminalState(navigation); }
    155159    void didFirstVisuallyNonEmptyLayoutForMainFrame();
    156160    void didRepaintAfterNavigation();
    157161    void didHitRenderTreeSizeThreshold();
    158162    void didRestoreScrollPosition();
    159     void didReachMainFrameLoadTerminalState();
     163    void didReachNavigationTerminalState(API::Navigation*);
    160164    void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType);
    161165
     
    328332    RefPtr<WebPageProxy> m_webPageProxyForBackForwardListForCurrentSwipe;
    329333
     334    RefPtr<API::Navigation> m_pendingNavigation;
     335
    330336    GestureID m_currentGestureID;
    331337
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r263819 r263825  
    48764876    if (isMainFrame) {
    48774877        reportPageLoadResult();
    4878         pageClient().didFinishLoadForMainFrame();
     4878        pageClient().didFinishNavigation(navigation.get());
    48794879
    48804880        if (navigation)
     
    49304930    if (isMainFrame) {
    49314931        reportPageLoadResult(error);
    4932         pageClient().didFailLoadForMainFrame();
     4932        pageClient().didFailNavigation(navigation.get());
    49334933        if (navigation)
    49344934            navigation->setClientNavigationActivity(nullptr);
  • trunk/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp

    r263000 r263825  
    2727#include "ViewGestureController.h"
    2828
     29#include "APINavigation.h"
    2930#include "DrawingAreaProxy.h"
    3031#include "WebBackForwardList.h"
     
    506507
    507508    m_backgroundColorForCurrentSnapshot = Color();
     509
     510    m_pendingNavigation = nullptr;
    508511
    509512    didEndGesture();
  • trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h

    r261981 r263825  
    221221
    222222    void didFirstVisuallyNonEmptyLayoutForMainFrame() override;
    223     void didFinishLoadForMainFrame() override;
    224     void didFailLoadForMainFrame() override;
     223    void didFinishNavigation(API::Navigation*) override;
     224    void didFailNavigation(API::Navigation*) override;
    225225    void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) override;
    226226    void didNotHandleTapAsClick(const WebCore::IntPoint&) override;
  • trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm

    r263816 r263825  
    792792}
    793793
    794 void PageClientImpl::didFinishLoadForMainFrame()
    795 {
    796     [m_webView _didFinishLoadForMainFrame];
    797 }
    798 
    799 void PageClientImpl::didFailLoadForMainFrame()
    800 {
    801     [m_webView _didFailLoadForMainFrame];
     794void PageClientImpl::didFinishNavigation(API::Navigation* navigation)
     795{
     796    [m_webView _didFinishNavigation:navigation];
     797}
     798
     799void PageClientImpl::didFailNavigation(API::Navigation* navigation)
     800{
     801    [m_webView _didFailNavigation:navigation];
    802802}
    803803
  • trunk/Source/WebKit/UIProcess/ios/ViewGestureControllerIOS.mm

    r259883 r263825  
    293293
    294294    m_didStartProvisionalLoad = false;
    295     m_webPageProxyForBackForwardListForCurrentSwipe->goToBackForwardItem(targetItem);
     295    m_pendingNavigation = m_webPageProxyForBackForwardListForCurrentSwipe->goToBackForwardItem(targetItem);
    296296
    297297    auto* currentItem = m_webPageProxyForBackForwardListForCurrentSwipe->backForwardList().currentItem();
     
    438438    m_backgroundColorForCurrentSnapshot = WebCore::Color();
    439439
     440    m_pendingNavigation = nullptr;
     441
    440442    didEndGesture();
    441443}
  • trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h

    r263819 r263825  
    216216    void didStartProvisionalLoadForMainFrame() override;
    217217    void didFirstVisuallyNonEmptyLayoutForMainFrame() override;
    218     void didFinishLoadForMainFrame() override;
    219     void didFailLoadForMainFrame() override;
     218    void didFinishNavigation(API::Navigation*) override;
     219    void didFailNavigation(API::Navigation*) override;
    220220    void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) override;
    221221    void handleControlledElementIDResponse(const String&) override;
  • trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm

    r263819 r263825  
    791791}
    792792
    793 void PageClientImpl::didFinishLoadForMainFrame()
     793void PageClientImpl::didFinishNavigation(API::Navigation* navigation)
    794794{
    795795    if (auto gestureController = m_impl->gestureController())
    796         gestureController->didFinishLoadForMainFrame();
     796        gestureController->didFinishNavigation(navigation);
    797797
    798798    NSAccessibilityPostNotification(NSAccessibilityUnignoredAncestor(m_view), kAXLoadCompleteNotification);
    799799}
    800800
    801 void PageClientImpl::didFailLoadForMainFrame()
     801void PageClientImpl::didFailNavigation(API::Navigation* navigation)
    802802{
    803803    if (auto gestureController = m_impl->gestureController())
    804         gestureController->didFailLoadForMainFrame();
     804        gestureController->didFailNavigation(navigation);
    805805
    806806    NSAccessibilityPostNotification(NSAccessibilityUnignoredAncestor(m_view), kAXLoadCompleteNotification);
  • trunk/Source/WebKit/UIProcess/mac/ViewGestureControllerMac.mm

    r261495 r263825  
    2929#if PLATFORM(MAC)
    3030
     31#import "APINavigation.h"
    3132#import "DrawingAreaProxy.h"
    3233#import "FrameLoadState.h"
     
    644645    m_backgroundColorForCurrentSnapshot = Color();
    645646
     647    m_pendingNavigation = nullptr;
     648
    646649    didEndGesture();
    647650}
  • trunk/Source/WebKit/UIProcess/playstation/PageClientImpl.cpp

    r262022 r263825  
    246246}
    247247
    248 void PageClientImpl::didFinishLoadForMainFrame()
    249 {
    250 }
    251 
    252 void PageClientImpl::didFailLoadForMainFrame()
     248void PageClientImpl::didFinishNavigation(API::Navigation*)
     249{
     250}
     251
     252void PageClientImpl::didFailNavigation(API::Navigation*)
    253253{
    254254}
  • trunk/Source/WebKit/UIProcess/playstation/PageClientImpl.h

    r262022 r263825  
    125125
    126126    void didFirstVisuallyNonEmptyLayoutForMainFrame() final;
    127     void didFinishLoadForMainFrame() final;
    128     void didFailLoadForMainFrame() final;
     127    void didFinishNavigation(API::Navigation*) final;
     128    void didFailNavigation(API::Navigation*) final;
    129129    void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) final;
    130130
  • trunk/Source/WebKit/UIProcess/win/PageClientImpl.cpp

    r249335 r263825  
    331331}
    332332
    333 void PageClientImpl::didFinishLoadForMainFrame()
     333void PageClientImpl::didFinishNavigation(API::Navigation*)
    334334{
    335335    notImplemented();
  • trunk/Source/WebKit/UIProcess/win/PageClientImpl.h

    r255322 r263825  
    100100    void didChangeContentSize(const WebCore::IntSize&) override;
    101101    void didCommitLoadForMainFrame(const String& mimeType, bool useCustomContentProvider) override;
    102     void didFailLoadForMainFrame() override { }
     102    void didFirstVisuallyNonEmptyLayoutForMainFrame() override;
     103    void didFinishNavigation(API::Navigation*) override;
     104    void didFailNavigation(API::Navigation*) override { }
     105    void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) override;
    103106
    104107    // Auxiliary Client Creation
     
    126129    void didRemoveNavigationGestureSnapshot() override;
    127130
    128     void didFirstVisuallyNonEmptyLayoutForMainFrame() override;
    129     void didFinishLoadForMainFrame() override;
    130     void didSameDocumentNavigationForMainFrame(SameDocumentNavigationType) override;
    131131
    132132#if ENABLE(TOUCH_EVENTS)
Note: See TracChangeset for help on using the changeset viewer.