Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ce94c4ef89254a3b19fa509575162a069907e1fb
      
https://github.com/WebKit/WebKit/commit/ce94c4ef89254a3b19fa509575162a069907e1fb
  Author: Rob Buis <[email protected]>
  Date:   2024-11-05 (Tue, 05 Nov 2024)

  Changed paths:
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/currententrychange-event/navigation-back-forward-cross-doc-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-destination-after-detach-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-navigation-back-same-document-in-iframe-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-traverse-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-traverse-then-clobber-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/entries-after-bfcache-in-iframe-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/entries-after-cross-document-forward-pruning-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/key-id-back-cross-document-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/no-referrer-dynamic-url-censored-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-navigate-restore-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/state-after-navigate-restore-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/back-forward-multiple-frames-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/back-204-205-download-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/forward-already-detached-expected.txt
    R 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-unload-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-cross-document-preventDefault-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/traverseTo-cross-document-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/back-cross-document-event-order-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/transition-cross-document-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/per-entry-events/dispose-cross-document-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/per-entry-events/dispose-for-navigation-in-child-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/scroll-behavior/after-transition-reject-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/scroll-behavior/scroll-after-preventDefault.html
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/state/cross-document-away-and-back-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/updateCurrentEntry-method/cross-document-away-and-back-expected.txt
    M Source/WebCore/loader/NavigationScheduler.cpp
    M Source/WebCore/page/Navigation.cpp

  Log Message:
  -----------
  [Navigation] Improve cross-document traversal
https://bugs.webkit.org/show_bug.cgi?id=281605

Reviewed by Alex Christensen.

We introduced ScheduledHistoryNavigationByKey to handle traversals by key, but 
the implementation was incorrect
for subframes: Page::goToItem only operates on b/f cache history items, so 
introduce findBackForwardItemByKey to
find such items for both main frames and subframes.

For subframe traversal we may end up with a new window, in case there is a 
previous window we can reuse the previous
window navigation information for same document traversals, for cross document 
traversal we fall back to the main algorithm.

Finally, to protect against HistoryItem copies, we compare in more places using 
itemSequenceNumber instead of HistoryItem pointers.

* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/currententrychange-event/navigation-back-forward-cross-doc-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-destination-after-detach-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-navigation-back-same-document-in-iframe-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-in-iframe-same-document-preventDefault-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigation-traverseTo-same-document-preventDefault-multiple-windows.html:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-traverse-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-traverse-then-clobber-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/entries-after-bfcache-in-iframe-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/entries-after-cross-document-forward-pruning-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/key-id-back-cross-document-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/no-referrer-dynamic-url-censored-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-navigate-restore-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/state-after-navigate-restore-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/back-forward-multiple-frames-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/back-204-205-download-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/forward-already-detached-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-unload-expected.txt:
 Removed.
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-cross-document-preventDefault-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/traverseTo-detach-cross-document-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/traverseTo-cross-document-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/traverseTo-navigates-multiple-iframes-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/back-cross-document-event-order-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/transition-cross-document-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/per-entry-events/dispose-cross-document-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/per-entry-events/dispose-for-navigation-in-child-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/scroll-behavior/after-transition-reject-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/scroll-behavior/scroll-after-preventDefault.html:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/state/cross-document-away-and-back-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/navigation-api/updateCurrentEntry-method/cross-document-away-and-back-expected.txt:
* Source/WebCore/loader/NavigationScheduler.cpp:
(WebCore::ScheduledHistoryNavigationByKey::findBackForwardItemByKey):
* Source/WebCore/page/Navigation.cpp:
(WebCore::getEntryIndexOfHistoryItem):
(WebCore::Navigation::initializeForNewWindow):
(WebCore::Navigation::dispatchTraversalNavigateEvent):

Canonical link: https://commits.webkit.org/286180@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to